查找一组相关维基百科文章的共同主题。

时间:2017-02-04 23:47:28

标签: nlp text-analysis topic-modeling unsupervised-learning categorization

我有一个未标记的数据集,包含数千条维基百科文章 这些文章分为几组与其内容密切相关的文章 鉴于其中一个集合,我想确定其所有文章所属的共同主题。

例:
根据标题提供以下相关文章:

{微积分,矩阵,数论}

我可以确定一个共同的话题是数学。

是否有一种简单的方法可以通过分析每篇文章的文本以编程方式执行此操作? 它不需要超级准确和精确 如果无法做到这一点,那么最准确地表示相关文章集的单词列表就足够了。

2 个答案:

答案 0 :(得分:1)

分配群集标签的一种标准方法是按照他们的tf-idf分数对这些文章中的术语进行排序(按降序排列),然后将前三个报告为该群集最可能的描述性词语。

更准确地说,您可以使用以下tf-idf术语得分,其中tf(t,C)是术语“t'”的权重。在群集' C'。

score(t, C) = log (1 + \lambda/(1-\lambda) * tf(t, C)/\sum_{t' in C} tf(t', C) * cs/cf(t))

这里, tf(t,C)/ \ sum_ {t'在C} tf(t',C)仅表示从聚类C中采样项t的最大似然, cs / cf(t)表示收集大小的比率到术语的收集频率' t' (请注意,如果t在其他群集中相对不常见,则此值很高,因为cf(t)较低)。

因此,一个术语在这个集群中的频率越高(可能'数学'是你的示例集群的所有文档中常见的术语),并且这个术语在其余部分中不常见。群集(术语'数学'在其他群体中可能很少见),这个术语很可能被选为代表性术语作为群集标签。

您可以使用 lambda 来控制您可能希望与术语频率组件关联的相对重要性; lambda的一个很好的选择是0.6。

答案 1 :(得分:0)

有一个很好的教程,题为"Experiments on the English Wikipedia",可以在更广泛的范围内解决同样的问题。它提供了使用gensim和Python的解决方案。本教程将介绍获取所有维基百科文章,创建语料库以及使用潜在语义分析(LSA)和潜在Dirichlet分配(LDA)生成主题的整个过程。