У меня есть вопрос о моделировании тем с помощью библиотеки Python и Gensim: когда я запускаю следующий код, он работает хорошо и предлагает связанные темы, но я хочу видеть каждую тему для каждого документа в списке в файле .csv, но этоперетасовки.Например, 1-я тема из 2-го документа, но 2-я тема из 1-го документа, а 3-я из 3-го.И когда я запускаю тот же код, он снова перемешивается.Как я могу это исправить и получить темы по каждому документу и / или связанным темам непосредственно с идентификаторами или авторами документов, которые могут быть перечислены в 1-м столбце?
Коды:
Шаг 1:
import nltk
import csv
import re
import nltk.corpus
import gensim
from gensim import corpora
from nltk.corpus import stopwords
from nltk.stem.wordnet import WordNetLemmatizer
import string
Шаг 2: загрузка данных и обработка
doc_complete = open('/home/erdal/Desktop/big_data/abstract1.csv', 'r').readlines()
stop = set(stopwords.words('english'))
exclude = set(string.punctuation)
lemma = WordNetLemmatizer()
def clean(doc):
stop_free = " ".join([i for i in doc.lower().split() if i not in stop])
punc_free = ''.join(ch for ch in stop_free if ch not in exclude)
normalized = " ".join(lemma.lemmatize(word) for word in punc_free.split())
return normalized
doc_clean = [clean(doc).split() for doc in doc_complete]
print(doc_clean)
dictionary = corpora.Dictionary(doc_clean)
doc_term_matrix = [dictionary.doc2bow(doc) for doc in doc_clean]
Lda = gensim.models.ldamodel.LdaModel
ldamodel = Lda(doc_term_matrix, num_topics=3, id2word = dictionary, passes=50)
print(ldamodel.print_topics(num_topics=3, num_words=3))
Шаг 3: Печать тем
myData = ldamodel.print_topics(num_topics=3, num_words=3)
myFile = open('/home/erdal/Desktop/big_data/all_data_1_topics.csv', 'w')
with myFile:
writer = csv.writer(myFile)
writer.writerows(myData)
print("Writing complete")
Темы:
[(0, '0.036*"learning" + 0.036*"student" + 0.026*"intergroup"'), (1, '0.005*"abstract" + 0.005*"significant" + 0.005*"using"'), (2, '0.042*"clickers" + 0.027*"motivation" + 0.027*"student"')]