我想使用Python获取文本的主要主题(或一组主要主题)。
到目前为止,我查看了nltk
和scikit-learn
的API,看看是否有这样的方法。
然而,我发现的最好的事情是这个解释http://www.nltk.org/book/ch07.html,它没有提到如何提取主题。
是否有提供此功能的Python库?
答案 0 :(得分:1)
您正在寻找与scikit-learn
捆绑在一起的Latent Dirichlet Allocation,但请注意,没有'主要主题'一个文本 - 一个句子可以是关于多个主题。
Here是对LDA的一个很好的介绍。 LDA将文档建模为主题分布的混合,从中以一定概率生成单词。没有必要事先指定可能遇到的各种主题 - LDA会自动为您完成。
引自我链接到的博文:
更详细地说,LDA将文档表示为以某些概率吐出单词的主题混合。它假设文件是 以下列方式制作:在编写每个文档时,你
决定文件的字数N(比如说 到泊松分布)。
为文档选择一个主题混合(根据一组固定的K主题上的Dirichlet分布)。例如,假设我们有上面两个食物和可爱的动物主题,你可以选择由1/3食物和2/3组成 可爱的动物。
通过以下方式生成文档中的每个单词w_i:
- 首先采摘 一个主题(根据您采样的多项分布) 以上;例如,您可能以1/3的概率选择食物主题 和2/3概率的可爱动物话题)。
- 使用主题 生成单词本身(根据主题的多项式) 分配)。例如,如果我们选择食物主题,我们可能会 以30%的概率生成“西兰花”这个词,“香蕉”含15% 概率,等等。
假设这个生成模型为 收集文件,然后LDA试图从中回溯 用于查找可能已生成的一组主题的文档 集合。