前言
本文已参与「新人创作礼」活动,一起开启掘金创作之路。前天本文更新了一些在处理中文文本时的一些NLP领域的知识,今天本文继续介=介绍一些NLP领域中常用的python代码。
Word2Vec模型
Word2vec,是一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。网络以词表现,并且需猜测相邻位置的输入词,在word2vec中词袋模型假设下,词的顺序是不重要的。训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系,该向量为神经网络之隐藏层。
python中的gensim为我们提供了一种很方便的实现Word2Vec模型的函数,首先我们需要导入:
from gensim.models import Word2Vec
由于大家电脑中的python版本不同,安装的gensim不同,大家在导入这个包的时候可能会报错,具体的解决方法因人而异,大家可以多动手试一下.
我才用的是微信大数据挑战赛公布的示例数据,由于版权问题就不公开了,具体代码入下:
with open('D:/Desktop1/wxchallenge_example_data/annotations/word_dict.csv',encoding='utf-8') as csvfile:
reader=csv.reader(csvfile)
token=[]
for row in reader:
token.append(row[0])
print('token:',[token])
#使用Word2Vec模型对文本进行向量化
model = Word2Vec([token], sg=1, vector_size=100, window=5, min_count=1, negative=1,sample=0.001, hs=1, workers=4)
model.save('model') # 保存模型
model = Word2Vec.load('model') # 加载模型
首先,我通过TF-IDF模型提取文本中的关键字,并把他写入一个csv文件做语料库,然后通过上述代码进行操作即可。大家注意token必须是[['中国']]这种类型,否则会出错。
判断两个词的相似度通过 model.wv.similarity()即可,老版本是model.similarity.
结束
好了,今天就到这