2016-03-25 16 views
0

私はdoc2vecを約100万タイトルのコーパスで使用しています。コーパスを訓練するために、私は次のコードを使用しています:訓練中にmin_countが1に設定されていても、Doc2VecモデルのKeyError

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

gensimDoc2Vecdocumentationへの入力は、LabeledSentenceオブジェクトのイテレータである必要があります。

model.train(corpus) 
続い
class LabeledLineSentence(object): 
    def __init__(self, filename): 
     self.filename = filename 
    def __iter__(self): 
     for uid, line in enumerate(open(filename)): 
      yield LabeledSentence(words=line.split(), labels=['SENT_%s' % uid]) 


corpus = LabeledLineSentence(filename) 

を次のように

あなたcorpus変数を構築する必要があります

関連する問題