Python 3.x 主题建模,Gensim,Python,根据固定ID或链接数据获取主题模型
关于通过python和gensim库进行主题建模,我有一个问题:当我运行以下代码时,它运行得很好,并提供了相关的主题,但我希望看到.csv文件中列出的每个文档的每个主题,但它会乱序。例如,第一个主题来自第二个文档,但第二个主题来自第一个文档,第三个主题来自第三个文档。当我运行相同的代码时,它会再次洗牌。我如何解决这个问题,并获得每个文档的主题,或/或将主题直接链接到可以在第1列中列出的文档的ID或作者 代码: 步骤1: 步骤2:加载数据和处理 步骤3:打印出主题 话题:Python 3.x 主题建模,Gensim,Python,根据固定ID或链接数据获取主题模型,python-3.x,gensim,topic-modeling,Python 3.x,Gensim,Topic Modeling,关于通过python和gensim库进行主题建模,我有一个问题:当我运行以下代码时,它运行得很好,并提供了相关的主题,但我希望看到.csv文件中列出的每个文档的每个主题,但它会乱序。例如,第一个主题来自第二个文档,但第二个主题来自第一个文档,第三个主题来自第三个文档。当我运行相同的代码时,它会再次洗牌。我如何解决这个问题,并获得每个文档的主题,或/或将主题直接链接到可以在第1列中列出的文档的ID或作者 代码: 步骤1: 步骤2:加载数据和处理 步骤3:打印出主题 话题: import nltk
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
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))
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"')]