#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’ тогда ни на что не влияет?