python练习题7

102 阅读2分钟

前言

本文已参与「新人创作礼」活动,一起开启掘金创作之路。前天本文更新了一些在处理中文文本时的一些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.

结束

好了,今天就到这