我正在使用包含约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"
答案 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)
。等等