Python: использование Gensim и Scikit в одном конвейере

#python #scikit-learn #gensim

#python #scikit-learn #gensim

Вопрос:

Я хотел бы использовать Gensim и Scikit в одном конвейере.

[Обновление] Корпус создается из списка лемматизированных токенов doc.tokens

 bowlist = []
for doc in linked_doc_list:
    bowlist.append(doc.tokens)

dictionary = corpora.Dictionary(bowlist)
corpus = [dictionary.doc2bow(line) for line in bowlist]
 

Это включает в себя преобразование корпуса Gensim в массив numpy следующим образом:

  numpy_matrix = gensim.matutils.corpus2dense(package.corpus, num_terms=len(package.dict.token2id))
 

Похоже, это работает. Выполняется lda sklearn:

 model = LatentDirichletAllocation(n_components=components,
                                          max_iter=maxiter,
                                          learning_method=learningmethod,
                                          learning_offset=learningoffset,
                                          random_state=randomstate,
                                          verbose=verbose).fit(numpy_matrix)
 

Но теперь, чтобы прочитать результаты, мне нужно прочитать фактические термины из gensim dict (в противном случае я застрял с бессмысленными номерами функций).

Однако результаты следующего кода явно бессмысленны.

  def filterAndReportResultsLDA(self, model, gensimdict, n_top_words=10):
     for topic_idx, topic in enumerate(model.components_):
         print("Topic %d:" % (topic_idx))
         words = []
         for i in topic.argsort()[:-n_top_words - 1:-1]:
            words.append(gensimdict[i])
         print(words)
 

Пример результата:

 ['reporting.', '7:23', 'users?', 'breaking', '5am', 'bell', 'c7n', 'content?', 'functions', 'vi']
 

Кто-нибудь может сказать мне, что я делаю не так?

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

1. можете ли вы добавить, как вы определяете package.corpus ?

2. обновлено 🙂 Спасибо за внимание

3. Понятно. Я думаю, что проблема связана с вашей очисткой текста (вы не удаляете знаки препинания, цифры и т.д.). Похоже, с вашим текущим кодом проблем нет.

4. Может быть, эта ссылка может быть полезной

5. как это gensimdict строится?