我对主题建模/潜在狄利克雷分配还不太了解,不知道如何将其应用到我的数据集中(或者这是否是正确的方法)。
我有一些文学作品(小说),希望使用LDA提取一些常见的主题。
我正在使用Python中的gensim
模块和一些nltk
功能。为了测试,我将原始文本(仅6个)分成了30个每个1000个字的块。然后,我将这些块转换为文档-词矩阵,并运行了算法。这是代码(虽然我认为它对问题并不重要):
# chunks is a 30x1000 words matrix
dictionary = gensim.corpora.dictionary.Dictionary(chunks)
corpus = [ dictionary.doc2bow(chunk) for chunk in chunks ]
lda = gensim.models.ldamodel.LdaModel(corpus = corpus, id2word = dictionary,
num_topics = 10)
topics = lda.show_topics(5, 5)
然而,结果与我见过的任何示例完全不同,因为主题充满了在所有源文件中都能找到的无意义词语,例如“我”,“他”,“说”,“喜欢”等。示例:
[(2, '0.009*"I" + 0.007*"\'s" + 0.007*"The" + 0.005*"would" + 0.004*"He"'),
(8, '0.012*"I" + 0.010*"He" + 0.008*"\'s" + 0.006*"n\'t" + 0.005*"The"'),
(9, '0.022*"I" + 0.014*"\'s" + 0.009*"``" + 0.007*"\'\'" + 0.007*"like"'),
(7, '0.010*"\'s" + 0.009*"I" + 0.006*"He" + 0.005*"The" + 0.005*"said"'),
(1, '0.009*"I" + 0.009*"\'s" + 0.007*"n\'t" + 0.007*"The" + 0.006*"He"')]
我不太明白为什么会发生这种情况,或者为什么在我看到的示例中没有发生。如何让LDA模型找到更具有区别性的主题并减少重叠?是先过滤掉更常见的词汇吗?我该如何调整模型运行的次数?原始文本的数量是否太少?