gensim Doc2Vec词不在词汇表中

问题描述 投票:2回答:1

我正在训练一个带有txt文件'full_texts.txt'的doc2vec gensim model,其中包含~1600个文档。一旦我训练了模型,我希望在单词和句子上使用相似性方法。

但是,由于这是我第一次使用gensim,我无法得到解决方案。如果我想通过单词寻找相似性,我尝试如下所述,但我得到一个错误,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"
python nlp gensim word2vec doc2vec
1个回答
3
投票

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

(另请注意,1600个文档对于Doc2Vec来说是一个非常小的语料库;已发表的作品通常使用至少数万个文档,通常使用数百万个。)

一般来说,如果担心让基本功能正常工作,那么好的想法是:

  • 遵循值得信赖的例子 - gensim docs/notebooks目录包括几个演示doc2vec功能的Jupyter / IPython笔记本,包括最小介绍doc2vec-lee.ipynb,还有viewable online(但它最好在本地运行,这样你就可以修改细节来学习)
  • 在INFO级别启用日志记录,并密切观察输出,以确保各种报告的进度步骤,包括单词/文档计数和培训持续时间,表明一切都工作正常
  • 探究预期行为的结果模型。例如,学习词汇表中是否存在预期的单词? 'overdrafts' in d2v_mod.wv。学到了多少文档标签? len(d2v_mod.docvecs)。等等
© www.soinside.com 2019 - 2024. All rights reserved.