我试图了解如何gensim包在Python实现潜在Dirichlet分配。我正在做以下工作:
定义数据集
documents = ["Apple is releasing a new product",
"Amazon sells many things",
"Microsoft announces Nokia acquisition"]
删除stopwords后,我创建了字典和语料库:
texts = [[word for word in document.lower().split() if word not in stoplist] for document in documents]
dictionary = corpora.Dictionary(texts)
corpus = [dictionary.doc2bow(text) for text in texts]
然后我定义了LDA模型。
lda = gensim.models.ldamodel.LdaModel(corpus=corpus, id2word=dictionary, num_topics=5, update_every=1, chunksize=10000, passes=1)
然后我打印主题:
>>> lda.print_topics(5)
['0.181*things + 0.181*amazon + 0.181*many + 0.181*sells + 0.031*nokia + 0.031*microsoft + 0.031*apple + 0.031*announces + 0.031*acquisition + 0.031*product', '0.077*nokia + 0.077*announces + 0.077*acquisition + 0.077*apple + 0.077*many + 0.077*amazon + 0.077*sells + 0.077*microsoft + 0.077*things + 0.077*new', '0.181*microsoft + 0.181*announces + 0.181*acquisition + 0.181*nokia + 0.031*many + 0.031*sells + 0.031*amazon + 0.031*apple + 0.031*new + 0.031*is', '0.077*acquisition + 0.077*announces + 0.077*sells + 0.077*amazon + 0.077*many + 0.077*nokia + 0.077*microsoft + 0.077*releasing + 0.077*apple + 0.077*new', '0.158*releasing + 0.158*is + 0.158*product + 0.158*new + 0.157*apple + 0.027*sells + 0.027*nokia + 0.027*announces + 0.027*acquisition + 0.027*microsoft']
2013-12-03 13:26:21,878 : INFO : topic #0: 0.181*things + 0.181*amazon + 0.181*many + 0.181*sells + 0.031*nokia + 0.031*microsoft + 0.031*apple + 0.031*announces + 0.031*acquisition + 0.031*product
2013-12-03 13:26:21,880 : INFO : topic #1: 0.077*nokia + 0.077*announces + 0.077*acquisition + 0.077*apple + 0.077*many + 0.077*amazon + 0.077*sells + 0.077*microsoft + 0.077*things + 0.077*new
2013-12-03 13:26:21,880 : INFO : topic #2: 0.181*microsoft + 0.181*announces + 0.181*acquisition + 0.181*nokia + 0.031*many + 0.031*sells + 0.031*amazon + 0.031*apple + 0.031*new + 0.031*is
2013-12-03 13:26:21,881 : INFO : topic #3: 0.077*acquisition + 0.077*announces + 0.077*sells + 0.077*amazon + 0.077*many + 0.077*nokia + 0.077*microsoft + 0.077*releasing + 0.077*apple + 0.077*new
2013-12-03 13:26:21,881 : INFO : topic #4: 0.158*releasing + 0.158*is + 0.158*product + 0.158*new + 0.157*apple + 0.027*sells + 0.027*nokia + 0.027*announces + 0.027*acquisition + 0.027*microsoft
>>>
我无法从这个结果中了解太多。它是否提供了每个单词出现的概率?还有,主题1、主题2等的含义是什么?我期待着一些或多或少像最重要的关键词。
我已经查阅了gensim教程,但它并没有起到多大作用。
谢谢。
由于上面的答案已经发布,现在有一些非常好的可视化工具可以使用gensim
获得LDA的直觉。
看看派尔戴维斯的包裹。这里是一个伟大的笔记本概述。这是一个面向最终用户的非常有用的视频描述(9分钟教程)。
希望这有帮助!
我认为本教程将帮助您非常清楚地理解所有内容-https://www.youtube.com/watch?v=DDq3OVp9dNA
一开始我在理解它的时候也遇到了很多问题。我将试着概括几点。
在潜在狄利克雷分配中,
想象一下创建文档的过程是这样的-
LDA是沿着这条路线的一种回溯——假设您有一袋表示文档的单词,那么它代表的主题可能是什么?
因此,在您的案例中,第一个主题(0)
INFO : topic #0: 0.181*things + 0.181*amazon + 0.181*many + 0.181*sells + 0.031*nokia + 0.031*microsoft + 0.031*apple + 0.031*announces + 0.031*acquisition + 0.031*product
更多的是关于事物
,亚马逊
和许多
,因为它们的比例更高,而不是关于微软
或苹果
的,后者的价值要低得多。
我建议阅读这个博客,以便更好地理解(陈德文是个天才!)http://blog.echen.me/2011/08/22/introduction-to-latent-dirichlet-allocation/
您要寻找的答案在gensim教程中<代码>lda。printTopics(k)为k
随机选择的主题打印贡献最大的单词。我们可以假设这是(部分)单词在每个给定主题上的分布,这意味着这些单词出现在主题左侧的概率。
通常,人们会在大型语料库上运行LDA。在一个小得可笑的样本上运行LDA不会得到最好的结果。
我想知道gensim的LDA(潜在Dirichlet分配)算法的默认迭代次数。我认为文档中没有提到这一点。(迭代次数由初始化LdaModel时的参数迭代次数表示)。谢谢
本文向大家介绍LDA的原理相关面试题,主要包含被问及LDA的原理时的应答技巧和注意事项,需要的朋友参考一下 参考回答: LDA是一种基于有监督学习的降维方式,将数据集在低维度的空间进行投影,要使得投影后的同类别的数据点间的距离尽可能的靠近,而不同类别间的数据点的距离尽可能的远。
我使用潜在Dirichlet分配(sklearn实现)分析了大约500篇科学文章摘要,得到了包含最重要单词的主题(德语)。我的问题是如何解释这些与最重要的词语相关的价值观。我假设每个主题的所有单词的概率加起来等于1,但事实并非如此。 我如何解释这些值?例如,我想知道为什么主题#20中的单词比其他主题的值高得多。它们的绝对高度与贝叶斯概率有关吗?该主题在语料库中更常见吗?我还不能把这些值和LDA背后
Gensim是一个相当专业的主题模型Python工具包。在文本处理中,比如商品评论挖掘,有时需要了解每个评论分别和商品的描述之间的相似度,以此衡量评论的客观性。评论和商品描述的相似度越高,说明评论的用语比较官方,不带太多感情色彩,比较注重描述商品的属性和特性,角度更客观。gensim就是 Python 里面计算文本相似度的程序包。 示例代码: 针对商品评论和商品描述之间的相似度,怎么使用gens
LDA*(Latent Dirichlet Allocation) LDA是一种常见的主题模型算法。简单来说它是一个贝叶斯概率生成模型,用于对文档集进行降维或者潜在语义分析。 1. 算法介绍 整体说明 给定一个语料库。 语料库中的词整体构成了一个词汇表中采样出 一个 中采样出该词的话题 中采样出单词, SparseLDA, AliasLDA, F+LDA, LightLDA和WarpLDA。 我们
我不熟悉主题建模/潜在Dirichlet分配,并且难以理解如何将该概念应用于我的数据集(或者它是否是正确的方法)。 我有少量的文学文本(小说),并希望使用LDA提取一些一般主题。 我正在使用Python中的模块以及一些特性。为了进行测试,我将我的原始文本(仅6篇)分成30个块,每个块有1000个单词。然后,我将块转换为文档术语矩阵,并运行该算法。这就是代码(尽管我认为这与问题无关): 然而,结果与