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

Find the common topic(s) of a set of related Wikipedia articles.

我有一个未标记的 data-set,其中包含数千篇维基百科文章。
这些文章被分组为内容密切相关的文章集。
给定其中一个集合,我想确定其所有文章所属的共同主题。

示例:
给定以下一组相关文章的标题:

{微积分、矩阵、数论}

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

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

分配集群标签的标准方法是按 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' in C} tf(t', C)简单的表示从簇中抽样项t的最大似然C,而cs/cf(t)表示集合大小与term't'的集合频率的比值(注意如果t在其他簇中比较少见, 由于 cf(t) 较低,该值较高。

因此,该聚类中的术语越频繁(可能 'mathematics' 是您示例聚类的所有文档中常见的术语),并且该术语在其余聚类中不常见(这个词'mathematics'很可能在其他词中很少见),这个词很可能被选为代表词作为聚类标签。

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

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