我使用doc2vec,其语料库大约有100万个。为了训练语料库,我使用以下代码:
model = gensim.models.Doc2Vec(min_count=1, window=10, size=300, workers=4)
model.build_vocab(corpus)
for epoch in range(10):
model.train(corpus)
似乎所有东西都正常训练,我能够使用titles.most_similar推断出一个向量。
但是,当我尝试使用向量时遇到问题。似乎最终模型中缺少一些文档!即:
model.docvecs['SENT_157000']
KeyError:' SENT_157000'
我检查了gensim论坛和stackoverflow,我能找到的唯一建议就是确保min_count = 1.我这样做但我仍然遇到这个问题。
答案 0 :(得分:0)
从gensim
' Doc2Vec
documentation,Doc2Vec
的输入应该是LabeledSentence
个对象的迭代器。
您的corpus
变量需要按如下方式构建:
class LabeledLineSentence(object):
def __init__(self, filename):
self.filename = filename
def __iter__(self):
for uid, line in enumerate(open(self.filename)):
yield LabeledSentence(words=line.split(), labels=['SENT_%s' % uid])
corpus = LabeledLineSentence(filename)
接着是
model.train(corpus)