gensim Doc2Vec单词不在词汇表中

时间:2019-04-27 20:18:21

标签: python nlp gensim word2vec doc2vec

我正在使用包含约1600个文档的txt文件'full_texts.txt'训练doc2vec gensim model。训练完模型后,我希望对单词和句子使用相似性方法。

但是,由于这是我第一次使用gensim,因此无法找到解决方案。如果我想通过单词查找相似性,请按以下说明尝试,但遇到{strong>错误,我发现word doesnt exist in the vocabulary以及另一个问题是如何检查整个文档的相似性?我已经阅读了很多有关one的问题,像documentation一样抬头,但仍然不确定我在做什么错。

from gensim.models import Doc2Vec
from gensim.models.doc2vec import TaggedLineDocument
from gensim.models.doc2vec import TaggedDocument

tagdocs = TaggedLineDocument('full_texts.txt')
d2v_mod = Doc2Vec(min_count=3,vector_size = 200, workers = 2, window = 5, epochs = 30,dm=0,dbow_words=1,seed=42)
d2v_mod.build_vocab(tagdocs)
d2v_mod.train(tagdocs,total_examples=d2v_mod.corpus_count,epochs=20)

d2v_mod.wv.similar_by_word('overdraft',topn=10)
KeyError: "word 'overdraft' not in vocabulary"

1 个答案:

答案 0 :(得分:3)

您确定'overdraft'在语料库中至少出现min_count=3次吗? (例如,grep -c " overdraft " full_texts.txt返回什么?)

(还要注意,出于Doc2Vec的目的,1600个文档是非常小的语料;已发表的作品通常至少使用数万个文档,甚至数百万个。)

通常,如果您担心要使基本功能正常工作,那么好的主意是:

  • 遵循可信赖的示例-gensim docs/notebooks目录包含数个展示doc2vec功能的Jupyter / IPython笔记本,其中包括最小的简介doc2vec-lee.ipynb以及viewable online(但最好运行)本地,这样您就可以修改具体内容以进行学习)

  • 启用INFO级别的日志记录,并仔细观察输出以确保报告的各个进度步骤(包括单词/文档数和培训持续时间)表明一切正常运行

  • 探测所得模型的预期行为。例如,学习的词汇中是否存在预期的单词? 'overdrafts' in d2v_mod.wv。学到了多少文件标签? len(d2v_mod.docvecs)。等等