gensim训练词向量后,提取每个词的词向量

举报
技术火炬手 发表于 2019/10/12 17:07:40 2019/10/12
【摘要】 gensim在NLP中使用非常方便,几行代码就可以训练处一个词向量,本文记录gensim训练词向量的过程,以及对训练得到的词向量文件进行读取,分析等过程。以下是使用gensim训练词向量的代码。gensim.models Word2Vecgensim.models.word2vec LineSentencesentences = LineSentence()model = Word2Vec(...

gensim在NLP中使用非常方便,几行代码就可以训练处一个词向量,本文记录gensim训练词向量的过程,以及对训练得到的词向量文件进行读取,分析等过程。

以下是使用gensim训练词向量的代码。


gensim.models Word2Vec
gensim.models.word2vec LineSentence


sentences = LineSentence()
model = Word2Vec(sentences====)
model.save()

简单的几行代码,规定了词向量尺寸,滑窗等参数,就得到了一个词向量文件“gensim_128”,

接下来我们读取这个“gensim_128”词向量文件

gensim.models Word2Vec
model = Word2Vec.load()

得到model后,就可以做一些相关性比较了,gensim已经高度集成,使用起来也非常方便。

gensim.models Word2Vec
model = Word2Vec.load()


items = model.wv.most_similar()
iitem (items):
    (iitem[]item[])
(* )
items = model.wv.most_similar(=[]=[])
iitem (items):
    (iitem[]item[])
(* )
(model.wv.doesnt_match([]))
(* )
(model.wv.similarity())

这和我想要的还有点不一样,虽然使用起来方便,但是model内部到底有些什么?128维的词向量,到底是什么样子的?我能不能直接获得这些向量,从而编写一些算法做一些特定的处理。

其实,除了查看官方文档,我通常还会用debug模式,查看变量内部到底由什么组成,进而熟悉它的功能,必要的时候,还可以查看源码,更加了解内部的过程。

红色框内的变量就是读取的model的全部信息

通过debug查看,可以看到model.wv.index2word对应的是词列表

model.wv.index2word

词列表

通过debug查看,可以看到model.wv.vectors对应的是词向量

(model.wv.vectors.shape)
(model.wv.vectors)

词向量

词向量是一个(687674, 128)的二维矩阵,这和我们之前训练词向量时,设置的size=128是一致的,而687674是指该词向量模型中,含有687674个不重复的词。

我们已经获取了词向量,词向量对应的单词顺序,和上面model.wv.index2word对应的词列表顺序是一致的。

我们可以通过下面的方式,抽取特定单词的词向量。

word = vec = model.wv.vectors[model.wv.vocab[word].index]

(vec.shape)
(vec)

抽取词向量

获取了词向量后,就可以编写算法完成后面的过程啦。

有时间再更新~


分割线动图.gif

本文来自:“机器在学习”

原文链接:http://www.siyuanblog.com/?p=115052

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。