问题描述
我试过了:
model.build_vocab([[new_word1,new_word2]],update=True)
model.train([[new_word1,total_examples=model.corpus_count,epochs=model.epochs)
但是当我检查时:
model.wv[new_word1]
model.wv[new_word2]
我得到了
KeyError: "Key {new_word1} not present"
与 new_word2 相同
我已经检查过了 How to add words and vectors manually to Word2vec gensim?
我该如何解决? 谢谢
解决方法
如果您在 INFO 级别启用日志记录,您可能会看到更多提示,说明事情可能没有达到预期效果。
特别是,2.5 ms ± 363 µs per loop (mean ± std. dev. of 7 runs,1000 loops each)
使用的默认 min_count
值是 Word2Vec
,这意味着在提供给 5
的语料库中出现次数少于 5 次的任何单词都将被忽略. (使用 word2vec 算法,忽略这些稀有词几乎总是正确的做法,只有当一个词的用法有很多不同的例子时,它才能学习有用的词向量。)
如果您测试的确实只有 2 个新词,每个词只使用一次,那么具有合理默认值的模型将忽略这两个单次出现的词。
另外:扩展现有模型的词汇量是一个棘手且容易出错的过程。大多数即兴/天真的方法不太可能可靠地给出好的结果。在大多数情况下,更安全、更稳健的过程是使用所有新旧文本重新训练,而不是使用微小的新增量。