我正在训练一个带有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"
你确定'overdraft'
在你的语料库中出现至少min_count=3
次吗? (例如,grep -c " overdraft " full_texts.txt
会返回什么?)
(另请注意,1600个文档对于Doc2Vec
来说是一个非常小的语料库;已发表的作品通常使用至少数万个文档,通常使用数百万个。)
一般来说,如果担心让基本功能正常工作,那么好的想法是:
docs/notebooks
目录包括几个演示doc2vec功能的Jupyter / IPython笔记本,包括最小介绍doc2vec-lee.ipynb
,还有viewable online(但它最好在本地运行,这样你就可以修改细节来学习)'overdrafts' in d2v_mod.wv
。学到了多少文档标签? len(d2v_mod.docvecs)
。等等