将单词添加到 gensim word2vec 模型中,但未在 model.wv 中显示

问题描述

我有一个预先训练好的模型,但我需要在其中添加一些新词。

我试过了:

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 个新词,每个词只使用一次,那么具有合理默认值的模型将忽略这两个单次出现的词。

另外:扩展现有模型的词汇量是一个棘手且容易出错的过程。大多数即兴/天真的方法不太可能可靠地给出好的结果。在大多数情况下,更安全、更稳健的过程是使用所有新旧文本重新训练,而不是使用微小的新增量。