LSI mit gensim in python

Ich bin mit Python-gensim Bibliothek zu tun, latent semantic indexing. Ich habe die tutorials auf der website, und es funktioniert ziemlich gut. Jetzt versuche ich es zu ändern ein bisschen; ich will führen Sie das lsi-Modell jedes mal, wenn ein Dokument Hinzugefügt wird.

Hier ist mein code:

stoplist = set('for a of the and to in'.split())
num_factors=3
corpus = []

for i in range(len(urls)):
 print "Importing", urls[i]
 doc = getwords(urls[i])
 cleandoc = [word for word in doc.lower().split() if word not in stoplist]
 if i == 0:
  dictionary = corpora.Dictionary([cleandoc])
 else:
  dictionary.addDocuments([cleandoc])
 newVec = dictionary.doc2bow(cleandoc)
 corpus.append(newVec)
 tfidf = models.TfidfModel(corpus)
 corpus_tfidf = tfidf[corpus]
 lsi = models.LsiModel(corpus_tfidf, numTopics=num_factors, id2word=dictionary)
 corpus_lsi = lsi[corpus_tfidf]

geturls ist die Funktion, die ich schrieb, gibt den Inhalt einer website als Zeichenfolge. Wieder, es funktioniert, wenn ich warten, bis ich alle Dokumente, bevor Sie tfidf und lsi, aber das ist nicht das, was ich will. Ich will es tun, auf jeder iteration. Leider bekomme ich diese Fehlermeldung:

    Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "streamlsa.py", line 51, in <module>
    lsi = models.LsiModel(corpus_tfidf, numTopics=num_factors, id2word=dictionary)
  File "/Library/Python/2.6/site-packages/gensim-0.7.8-py2.6.egg/gensim/models/lsimodel.py", line 303, in __init__
    self.addDocuments(corpus)
  File "/Library/Python/2.6/site-packages/gensim-0.7.8-py2.6.egg/gensim/models/lsimodel.py", line 365, in addDocuments
    self.printTopics(5) # TODO see if printDebug works and remove one of these..
  File "/Library/Python/2.6/site-packages/gensim-0.7.8-py2.6.egg/gensim/models/lsimodel.py", line 441, in printTopics
    self.printTopic(i, topN = numWords)))
  File "/Library/Python/2.6/site-packages/gensim-0.7.8-py2.6.egg/gensim/models/lsimodel.py", line 433, in printTopic
    return ' + '.join(['%.3f*"%s"' % (1.0 * c[val] / norm, self.id2word[val]) for val in most])
  File "/Library/Python/2.6/site-packages/gensim-0.7.8-py2.6.egg/gensim/corpora/dictionary.py", line 52, in __getitem__
    return self.id2token[tokenid] # will throw for non-existent ids
KeyError: 1248

In der Regel der Fehler erscheint auf dem zweiten Dokument. Ich glaube, ich verstehe, was es mir zu sagen (die dictionary-Indizes, die sind schlecht), ich kann einfach nicht herausfinden, WARUM. Ich habe versucht viele verschiedene Dinge, und nichts scheint zu funktionieren. Weiß jemand was Los ist???

Dank!

  • Hallo Jeff, ich bin mit gensim, um meine eigene LSA-Modell. Zuerst möchte ich dich Fragen, LSA-Modell dasselbe wie ein LSI-Modell? zweitens, ich bin versucht, gensim-Paket, aber ich bin nicht zu verstehen, wie, um fortzufahren. Ich bin zufällig läuft test_similarities.py und lsimodel.py. aber ich sehe nicht die Ausgabe lsimodel.
  • Ja, LSA ist die gleiche wie LSI. Sorry, ich kann nicht viel helfen, ich habe nicht berührt gensim in ein paar Jahren, sieht es aus wie es einige tutorials auf Google-id dort beginnen.
InformationsquelleAutor Jeff | 2011-06-09
Schreibe einen Kommentar