NLTK Sklearn Genism 文本到主题

数据挖掘 Python 文本挖掘 scikit-学习 主题模型 nltk
2021-10-15 09:40:42

我不是数据科学家/机器学习者。

我在寻找什么

text = "Donald Trump became the president of America"
#some data science works
print(topics) 
#prints ["politics"]

text = "Rihanna is starring in the new movie The Inception 2"
#some data science works
print(topics) 
#prints ["movie","music"]

我可以做什么

我可以使用 POS提取诸如Donald Trump, America,之类的词Rihanna

我可以获得大量的段落/文章/单词列表等politicsmovies并将它们保存在文本文件中。

我不能做什么

sports用诸如, politics,之类的词制作有意义的主题movies

我要你做什么

指出我正确的具体方向来解决这个问题,也就是启发我

2个回答

自从您要求启蒙以来,我一直保持一般性,只是提到了一些您可以探索的可能方向。

你基本上有两种可能性:

  1. 文本分类(监督学习)。
    监督意味着您首先需要在外部将标签(例如人工)应用于文本示例(标签可以是“政治”或“表演”),然后使用其中一种分类算法。
    您已经从文本中提取了单词,因此您可以使用“词袋”方法进行分类。
    存在对分类算法(多标签分类)的调整以提供多个标签(例如,一个文本同时被标记为“音乐”和“电影”)。
    您可以找到已经预先标记的文本语料库,以训练算法并部分避免手动工作。

  2. 对文本进行聚类,主题建模(无监督学习)。
    在这种情况下,您不需要提供带有标签的示例,但该算法将根据两个文本的相似性或从文本中提取的关键字/主题等参数对文本进行聚类。
    尽管此方法不需要标记示例,但您作为输出获得的集群将需要微调,例如要生成的集群数量、集群名称等。

既然你提到了 SKlearn,你可以在他们的网站上找到一些方向:文本特征提取

这是一个全面的(有点旧的)摘要:Fabrizio Sebastiani 的自动文本分类中的机器学习

为了建立 Mashimo 的答案,一种直接的主题建模方法是“潜在狄利克雷分配”(LDA)。这个非常好的教程解释了 LDA 背后的基本思想本质上,文档被假定为由混合的主题组成,而主题又由混合的词组成。如果我们知道主题和文档分布,我们可以使用概率模型生成新文档。在 LDA 中,我们反向运行此过程以推断给定文档的主题和文档分布。

在本教程中,作者使用 LDA 在 Sarah Palin 的电子邮件中查找主题,如果我理解正确的话,这与您尝试做的事情并没有太大的不同。例如,一个主题由“gas、oil、pipeline、agia、project、natural、north”等词组成,大致对应于主题“energy”或“gas”。请注意,LDA 不会为您命名主题;您必须运用自己的判断来为构成主题的一组单词构建一个合理的名称。

LDA 已在Gensim等软件包中实现。要了解如何在 Python 中使用 LDA,您可能会发现这个 SpaCy 教程(除了 LDA 之外还涵盖了很多内容)很有用。