大家好,又见面了,我是你们的朋友全栈君。
现在在NLP领域,词向量是一切自然语言处理的基础,有了词向量我们就可以进行数据分析,文本聚类分类的一系列操作了。接下来我们就开始学习如何训练词向量,之前我们有介绍关于 word2vec 的博文 word2vec算法理解和数学推导,这篇博文我们就一起来学习如何实现词向量的训练。
首先我们运用的语料是我之前爬取的京东小米9的好评,训练一个关于手机类的词向量。数据如下所示:
首先我们需要给数据进行分词操作,然后去掉停用词,让剩下的词都是有用的词。数据处理好了之后,结果如下所示:
然后我们就可以开始训练词向量了,代码如下:
from gensim.models import word2vec
sentences = word2vec.Text8Corpus('dataset/seg.txt')
model = word2vec.Word2Vec(sentences=sentences, size=100)
或者
import gensim
word2vec = gensim.models.word2vec.Word2Vec(sentences, size=256, window=10, min_count=5, sg=1, hs=1, iter=10, workers=25)
word2vec.save('word2vec_wx')
这里的100表示词向量的维度,然后我们可以通过这个计算一个词最相似的几个词以及相似度,如下图所示:
最后我们可以将训练好的词向量储存起来:
model.wv.save_word2vec_format('word2vec.txt', binary=False)
model.save('word2vecxiaomi.model')
最后,训练好的词向量如图所示:
这个860表示词的数量,256表示词向量的维度。然后我们就可以把这些词向量进行可视化操作,我用的是这个向量可视化界面。最后把词向量投影到空间中就如图所示:
我们可以看到用欧式距离计算,和“手机”这个词最相近的词分别是“感觉”、“手感”、“性能”和“续航”。我们通过这个图就可以看出词和词之间的相似关系,这就是训练整个词向量的流程,一般来说,训练数据越多,那么我们训练出的词向量的质量就越高,所以现在优质的开源词向量都是通过巨量的语料进行训练的。这篇博文希望能够帮助大家理解并动手训练词向量,谢谢。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/136839.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...