Python 2.7 在实现了一个文本文件的主题建模之后,我得到了类似的词来描述所有的主题,结果是不准确的。

Python 2.7 在实现了一个文本文件的主题建模之后,我得到了类似的词来描述所有的主题,结果是不准确的。,python-2.7,lda,topic-modeling,Python 2.7,Lda,Topic Modeling,问题是我的结果用相似的词来描述所有的主题,而且概率太低了。我做错什么了吗?如果有人能帮助我取得更好的结果,那就太好了 以下是我的结果: (0,u'0.019*意愿+0.010*经验+0.009*账户+0.009*财务+0.008*会计+0.008*财务+0.008*团队+0.007*报告”),(4,u'0.016*意愿+0.009*财务+0.009*经验+0.008*管理+0.008*会计+0.007*角色+0.007*财务+0.007*工作“,(7,u'0.017*将+0.013*经验+0.0

问题是我的结果用相似的词来描述所有的主题,而且概率太低了。我做错什么了吗?如果有人能帮助我取得更好的结果,那就太好了

以下是我的结果:


(0,u'0.019*意愿+0.010*经验+0.009*账户+0.009*财务+0.008*会计+0.008*财务+0.008*团队+0.007*报告”),(4,u'0.016*意愿+0.009*财务+0.009*经验+0.008*管理+0.008*会计+0.007*角色+0.007*财务+0.007*工作“,(7,u'0.017*将+0.013*经验+0.012*财务+0.008*角色+0.008*财务+0.007*会计+0.007*账户+0.007*年”),(2,u'0.019*将+0.011*经验+0.010*财务+0.008*角色+0.007*业务+0.007*账户+0.007*报告+0.007*工作”),(5,u'0.013*遗嘱+0.011*财务+0.011*经验+0.009*财务+0.008*管理+0.008*会计+0.008*角色+0.007*请’)

不,您没有做错任何事情,但您误解了输出。LDA为每个主题下的所有词典单词生成概率分布。主题数等于您所需的主题数。您提供的答案对我来说似乎是合乎逻辑的,因为您已打印了主题5主题和主题8每个主题下的单词及其概率值。顺便说一下,概率值可能非常小,不要担心


产生这种输出的一个可能原因是:用于训练LDA模型的数据集不够多样化,因此几个主题下的顶部单词几乎相同,这也表示推断的主题彼此非常接近。如果您希望主题多样化,则需要具有良好代表性的数据,以获得所需数量的主题主题。

非常感谢您的回复。这非常有帮助,因为我现在可以努力使我的数据更加多样化,以获得更好的结果。
from nltk.tokenize import RegexpTokenizer
from stop_words import get_stop_words
from gensim import corpora, models 
import gensim
import os
from os import path
from time import sleep

tokenizer = RegexpTokenizer(r'\w+')
en_stop = set(get_stop_words('en'))
with open(os.path.join('c:\users\kaila\jobdescription.txt')) as f:
    Reader = f.read()


texts = unicode(Reader, errors='replace')
tdm = []

#Converted all the text to lowercase for uniform analysis
raw = texts.lower()
#Tokenized the text to individual terms and created the stop list
tokens = tokenizer.tokenize(raw)
stopped_tokens = [i for i in tokens if not i in en_stop]
tdm.append(stopped_tokens)

dictionary = corpora.Dictionary(tdm)
corpus = [dictionary.doc2bow(i) for i in tdm]
sleep(3)
#Implemented the LdaModel
ldamodel = gensim.models.ldamodel.LdaModel(corpus, num_topics=10, id2word = dictionary)
print(ldamodel.print_topics(num_topics=5, num_words=8))