gensim, генерирующий модель LSI, вызывает «Python перестал работать»

#python #python-3.x #gensim #latent-semantic-indexing #latent-semantic-analysis

#python #python-3.x #gensim #скрытое-семантическое-индексирование #скрытый-семантический-анализ

Вопрос:

Итак, я пытаюсь использовать gensim для генерации модели LSI вместе с corpus_lsi, следуя этому руководству.

Я начинаю с корпуса и словаря, которые я создал сам. Список документов слишком мал (9 строк = 9 документов), который является примером списка, представленного в руководствах по gensim

Однако pythos просто вылетает, когда достигает строки для генерации LSI_model. Ниже вы можете увидеть мой код вместе с сгенерированным выводом

Код

 #!/usr/bin/env python
import os
from gensim import corpora, models, similarities
import logging

#logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)

if __name__ == '__main__':
    if (os.path.exists("tmpdictionary.dict")):
        dictionary = corpora.Dictionary.load('tmpdictionary.dict')
        corpus = corpora.MmCorpus('tmpcorpus.mm')
        print("Used files generated Dataset Generator")
    else:
        print("Please run dataset generator")

print ("generating tf-idf model ...")
tfidf = models.TfidfModel(corpus)   # Generate tfidf matrix (tf-idf model)
print ("generating corpus_tf-idf model ...")
corpus_tfidf = tfidf[corpus]    #use the model to transform vectors

print ("generating LSI model ...")
lsi = models.LsiModel(corpus_tfidf, id2word=dictionary, num_topics=2) # initialize an LSI transformation
print ("generating corpus_lsi model ...")
corpus_lsi = lsi[corpus_tfidf] # create a double wrapper over the original corpus: bow->tfidf->fold-in-lsi

lsi.print_topics(2)
  

Вывод

 Used files generated Dataset Generator
generating tf-idf model ...
generating corpus_tf-idf model ...
generating LSI model ...
  

После печати «generating LSI model» происходит сбой

Есть предложения?

Другие вещи, которые я пробовал

  • Изменение версии python на python 2.6
  • Удаление gensim и повторная установка его с github (вместо conda)

Ответ №1:

Похоже, проблема заключалась в функции, используемой в руководстве (возможно, понижена или что-то в этом роде)

итак, я изменил строку

 lsi = models.LsiModel(corpus_tfidf, id2word=dictionary, num_topics=2) # initialize an LSI transformation
  

Для

 lsi = LsiModel(corpus_tfidf,num_topics=2)
  

И это действительно сработало нормально

Комментарии:

1. Спасибо — удаление ‘id2word =dictionary’ тогда ни на что не влияет?