【发布时间】:2018-12-12 14:04:32
【问题描述】:
我查看了之前的帖子link,但它似乎不适用于我的情况:-
我已经预训练了 word2vec 模型:
import gensim
model = Word2Vec.load('w2v_model')
现在我有一个带有关键字的 pandas 数据框:
keyword
corruption
people
budget
cambodia
.......
......
我想在其对应的列中为每个关键字添加向量,但是
当我使用model['cambodia'] 时,它会抛出KeyError: "word 'cambodia' not in vocabulary" 错误
所以我将关键字更新为:
model.train(['cambodia'])
但这对我来说行不通,当我使用
model['cambodia']
它仍然给出KeyError: "word 'cambodia' not in vocabulary" 的错误。如何将新单词更新为 word2vec 词汇表,以便我可以获得它的向量?预期输出将是:-
keyword V1 V2 V3 V4 V5 V6
corruption 0.07397 0.290874 -0.170812 0.085428 -0.148551 0.38846
people ..............................................................
budget ...........................................................
【问题讨论】:
-
Update gensim word2vec model - "The word2vec algorithm doesn’t support adding new words dynamically." 的可能重复项因此,不,除非您使用新词汇重新训练整个模型,否则这是不可能的。
-
@ukemi 你提到的帖子似乎对我不起作用。我已经检查过了。
-
@ukemi 不是链接到帖子,而是对帖子的评论。那条评论说你想要的东西是不可能的。您必须使用要矢量化的所有单词来训练模型。我认为如果你配置得当,FastText 可以处理超出词汇量的单词
-
您还可以查看Hash Embeddings,它可以像 word2vec 一样进行训练,然后用新单词进行更新。
-
@IonicSolutions 是否可以在谷歌 word2vec 预训练模型词汇中添加新词?所以我以后可以使用它的向量?
标签: python-3.x pandas word2vec gensim text-classification