https://blog.csdn.net/qq_27586341/article/details/90025288
简单实战如代码所示
from gensim.models import Word2Vec
import jieba
#定义停用词、标点符号
punctuation = [",","。", ":", ";", ".", "‘", '“', "’", "?", "、", "-", "+", "&", "(", ")"]
sentences = [
"长江是中国第一大河,干流全长6397公里(以沱沱河为源),一般称6300公里。流域总面积一百八十余万平方公里,年平均入海水量约九千六百余亿立方米。以干流长度和入海水量论,长江均居世界第三位。",
"黄河,中国古代也称河,发源于中华人民共和国青海省巴颜喀拉山脉,流经青海、四川、甘肃、宁夏、内蒙古、陕西、山西、河南、山东9个省区,最后于山东省东营垦利县注入渤海。干流河道全长5464千米,仅次于长江,为中国第二长河。黄河还是世界第五长河。",
"黄河,是中华民族的母亲河。作为中华文明的发祥地,维系炎黄子孙的血脉.是中华民族民族精神与民族情感的象征。",
"黄河被称为中华文明的母亲河。公元前2000多年华夏族在黄河领域的中原地区形成、繁衍。",
"在兰州的“黄河第一桥”内蒙古托克托县河口镇以上的黄河河段为黄河上游。",
"黄河上游根据河道特性的不同,又可分为河源段、峡谷段和冲积平原三部分。 ",
"黄河,是中华民族的母亲河。"
]
sentences = [jieba.lcut(sen) for sen in sentences]
print(sentences)
tokenized = []
tokenized2 = []
for sentence in sentences:
#words = []
for word in sentence:
if word not in punctuation:
#words.append(word)
tokenized.append(word)
tokenized2.append(tokenized)
#Word2Vec的第一个参数必须是两层list的结构
model = Word2Vec(tokenized2, sg=1, size=50, window=5, min_count=1, negative=1, sample=0.001, hs=1, workers=4)
model.save('model') # 保存模型
model = Word2Vec.load('model') # 加载模型
#计算词语间的相似度
print(model.similarity('黄河', '黄河'))
print(model.similarity('黄河', '长江'))
#选出与黄河,母亲河最相似,与长江最不相似的词
print(model.most_similar(positive=['黄河', '母亲河'], negative=['长江']))
#参看为生成的vec矩阵
print(model["中国"])
来源:CSDN
作者:langsiming
链接:https://blog.csdn.net/langsiming/article/details/103949053