Как просмотреть все документы по теме в LDA?

Я использую LDA, чтобы узнать темы отличного текста. Мне удалось напечатать темы, но я хотел бы напечатать каждый текст с вашей темой.

Данные:

it's very hot outside summer
there are not many flowers in winter
in the winter we eat hot food
in the summer we go to the sea
in winter we used many clothes
in summer we are on vacation
winter and summer are two seasons of the year

Я пытался использовать sklearn, и я могу распечатать темы, но я хотел бы распечатать все фразы, относящиеся к каждой теме.

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.decomposition import LatentDirichletAllocation
import numpy as np
import pandas

dataset = pandas.read_csv('data.csv', encoding = 'utf-8')
comments = dataset['comments']
comments_list = comments.values.tolist()

vect = CountVectorizer()
X = vect.fit_transform(comments_list)

lda = LatentDirichletAllocation(n_topics = 2, learning_method = "batch", max_iter = 25, random_state = 0)

document_topics = lda.fit_transform(X)

sorting = np.argsort(lda.components_, axis = 1)[:, ::-1]
feature_names = np.array(vect.get_feature_names())

docs = np.argsort(comments_list[:, 1])[::-1]
for i in docs[:4]:
    print(' '.join(i) + '\n')

Хороший результат:

Topic 1
it's very hot outside summer
in the summer we go to the sea
in summer we are on vacation
winter and summer are two seasons of the year

Topic 2
there are not many flowers in winter
in the winter we eat hot food
in winter we used many clothes
winter and summer are two seasons of the year

person marin    schedule 05.08.2018    source источник
comment
У вас есть документы и для каждого документа тема document_topic. Поэтому просто переберите переменную document_topics и сохраните тему и индексы, например, со словарем.   -  person Norhther    schedule 05.08.2018
comment
Спасибо @Norhther, так что я должен сделать: для i в document_topics?   -  person marin    schedule 05.08.2018
comment
document_topics имеет тему для каждого из ваших документов. Таким образом, вы можете сделать это с помощью for, сохраняя индекс. Словарь списков может выполнять эту работу, где список хранит индексы, а ключи — это темы.   -  person Norhther    schedule 05.08.2018
comment
Извините, но если я правильно понимаю, я не могу сделать это таким образом. Я надеюсь получить документ в виде текста и его тему. Если я сделаю так, как вы мне скажете, у меня будет документ в числовой форме и его тема :(   -  person marin    schedule 05.08.2018


Ответы (1)


Если вы хотите распечатать документы, вам нужно указать их.

print(" ".join(comments_list[i].split(",")[:2]) + "\n")
person pitanga    schedule 06.08.2018