【问题标题】:Find the common topic(s) of a set of related Wikipedia articles.查找一组相关维基百科文章的共同主题。
【发布时间】:2017-02-04 23:47:28
【问题描述】:

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

示例:
根据标题给出以下一组相关文章:

{微积分、矩阵、数论}

我可以确定一个常见的主题是数学。

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

【问题讨论】:

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


    【解决方案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' in C} tf(t', C) 简单地表示从聚类 C 中采样词 t 的最大似然,并且 cs/cf(t) 表示集合大小与term 't'的集合频率的比值(注意如果t在其他集群中比较少见,这个值就高是因为cf(t)低)。

    因此,一个术语在此集群中出现的频率越高(“数学”可能是您的示例集群的所有文档中常见的术语),并且该术语在其他集群中的不常见(术语 '可能在其他数学中很少见),这个词很可能被选为集群标签的代表词。

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

    【讨论】:

    • 显然 tf-idf 需要将文档术语矩阵存储在内存中。我可以将相关文档合并到一个文档中,从而将文档数量减少到几百个,但 wiki 中的术语数量可能是数十亿。有没有办法对术语进行预处理以减少矩阵中所需的数量?
    • 不用担心术语的数量......重要的是词汇量(#unique terms)......它应该在一百万以内......如果你找到这个数字太高,您可能会删除收集频率太低(可能是嘈杂的术语)或频率太高(可能是非信息性术语)的术语...删除停用词也是必须的.​​..
    【解决方案2】:

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

    【讨论】:

    • 这个任务可以使用 tf-idf 而不使用库吗?
    猜你喜欢
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多