2016-03-25 16 views
0

Yaklaşık 1 milyon başlıklı bir belgeyle doc2vec kullanıyorum. külliyat olarak eğitmek için aşağıdaki kodu kullanıyorum:KeyError, Doc2Vec modelinde, min_count eğitim sırasında 1'e ayarlandığında bile

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) 

Her şey düzgün eğitmek gibi görünüyor ve ben titles.most_similar kullanarak bir vektör anlaması mümkün.

Vektörleri kullanmaya çalıştığımda bir sorunla karşılaşıyorum. Son modelden bazı belgeler eksik gibi görünüyor! Yani .:

model.docvecs['SENT_157000'] 

KeyError: 'SENT_157000'

Ben gensim forum ve stackoverflow kontrol edilip bulabildiğim tek öneri min_count = 1. ben yaptım emin olmak için oldu ama hala bu sorun yaşıyorum. gensim sitesindeki Doc2Vec documentation kaynaktan

cevap

0

, Doc2Vec giriş LabeledSentence nesnelerin bir yineleyici olmalıdır. aşağıdaki gibi

Sizin corpus değişken ihtiyaçları inşa edilecek:

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) 

model.train(corpus) 
ardından
İlgili konular