Je lis le code suivant pour en savoir un document model.Each doc2vec est défini comme un texte/ligne entre deux lignes:Comment résoudre les gensim KeyError quand j'essaie d'avoir le vecteur d'un document?
- clueweb09-EN0001-XX-XXXXX
- end_clueweb09-EN0001-XX-XXXXX
Ceci est mon code:
path='/home/work/Step2/test-input/html'
alldocs = [] # will hold all docs in original order
for fname in os.listdir(path):
with open(path+'/'+fname) as alldata:
for line in alldata:
docId= line
print docId
context= alldata.next()
#print context
tokens = gensim.utils.to_unicode(context).split()
end=alldata.next()
alldocs.append(LabeledSentence(tokens[:],[docId]))
model = Doc2Vec(alpha=0.025, min_alpha=0.025) # use fixed learning rate
model.build_vocab(alldocs)
for epoch in range(10):
model.train(alldocs)
model.alpha -= 0.002 # decrease the learning rate
model.min_alpha = model.alpha # fix the learning rate, no decay
# store the model to mmap-able files
model.save(path+'/my_html_model.doc2vec')
Mais j'ai eu l'erreur lorsque je l'ai écrit model.docvecs [ 'clueweb09-en0001-01-34238' ] mais quand j'écris model.docvecs [0] J'ai obtenu le résultat.
Ceci est l'erreur que je suis:
Traceback (most recent call last):
File "getLearingDoc.py", line 40, in <module>
print model.docvecs['clueweb09-en0001-01-34238']
File "/home/flashkar/anaconda/lib/python2.7/site-packages/gensim/models/doc2vec.py", line 341, in __getitem__
return self.doctag_syn0[self._int_index(index)]
File "/home/flashkar/anaconda/lib/python2.7/site-packages/gensim/models/doc2vec.py", line 315, in _int_index
return self.max_rawint + 1 + self.doctags[index].offset
KeyError: 'clueweb09-en0001-01-34238'
Je n'ai pas l'expérience en python et gensim s'il vous plaît me dire comment puis-je résoudre ce problème.