Python Doc2Vec模型中的KeyError,即使在训练期间最小计数设置为1
我正在使用doc2vec,它拥有大约100万个标题的语料库。为了训练语料库,我使用以下代码:Python Doc2Vec模型中的KeyError,即使在训练期间最小计数设置为1,python,gensim,word2vec,Python,Gensim,Word2vec,我正在使用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) 一切似乎都训练得很好,我能用标题推断出一个向量。最相似 然而,当我尝试使用向量时,我遇到了一个问题。似乎最
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)
一切似乎都训练得很好,我能用标题推断出一个向量。最相似
然而,当我尝试使用向量时,我遇到了一个问题。似乎最终模型中缺少了一些文档!即:
model.docvecs['SENT_157000']
KeyError:“已发送\u 157000”
我查看了gensim论坛和stackoverflow,我能找到的唯一建议是确保最小计数=1。我这样做了,但我仍然有这个问题。从
gensim
的Doc2Vec
输入到Doc2Vec
应该是LabeledSentence
对象的迭代器
您的语料库
变量需要按如下方式构造:
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)