【问题标题】:Systematic threshold for cosine similarity with TF-IDF weights具有 TF-IDF 权重的余弦相似度的系统阈值
【发布时间】:2015-05-07 02:02:28
【问题描述】:

我正在对数千个(例如 10,000 个)文本文档进行分析。我已经计算了 TF-IDF 权重,并且有一个具有成对余弦相似度的矩阵。我想将文档视为一个图表来分析各种属性(例如,分隔文档组的路径长度)并将连接可视化为网络。

问题是有太多相似之处。大多数都太小而没有意义。我看到很多人通过将所有相似度降低到特定阈值以下来处理这个问题,例如,相似度低于 0.5。

但是,0.5(或 0.6,或 0.7 等)是一个任意阈值,我正在寻找更客观或更系统的技术来消除微小的相似之处。

我对许多不同的策略持开放态度。例如,是否有 tf-idf 的不同替代方案可以使大多数小的相似性为 0?仅保留重要相似性的其他方法?

【问题讨论】:

    标签: text cluster-analysis document similarity


    【解决方案1】:

    简而言之,取初始聚类甚至所有初始句子的平均余弦值,并根据类似于以下内容接受或拒绝聚类。

    查看问题的一种方法是尝试根据与平均相似度的距离(1.5 个标准差(如果数据正常,则为第 86 个百分位)将异常值标记为 3(第 99.9 个百分位)的距离来计算分数是一个极端的异常值),以高端为衡量标准。我不记得在哪里,但这个想法已经在其他论坛上引起了关注,并形成了我相似之处的基础。

    请记住,数据不太可能呈正态分布。

    average(cosine_similarities)+alpha*standard_deviation(cosine_similarities)
    

    为了获得 alpha,您可以使用 NLTK 中描述的 Wu Palmer scoreanother score。与 Wu Palmer 的高度相似性应该导致更大的接受范围,而较低的 Wu Palmer 分数应该导致更严格的接受。因此,建议取 1-Wu Palmer 分数。您甚至可以将此方法用于 LSA 或 LDA 组。如果要更严格,接近 1.5 或更多的标准差,您甚至可以尝试 1+Wu Palmer(最优秀的产品),重新找到最终的 K,找到新的分数,聚类,然后重复。

    但请注意,这意味着要找到所有相关单词的 Wu Palmer,这是一个相当大的计算问题。此外,与大多数算法相比,10000 个文档是微不足道的。我见过的最小的推文是 15,000 条,而 20 个新闻组集是 20,000 个文档。我很确定Alchemy API 使用类似于 20 个新闻组集的东西。他们肯定使用 senti-wordnet。

    基本方程并不是我的,所以请随意挖掘。

    要记住的另一件事是计算是时间密集型的。使用学生 t 值来估计 SOV 配对的预期值/平均 wu-palmer 分数可能是一个好主意,如果您尝试获取整个句子,则尤其好。用于 java/scala 的 Commons Math3 包括用于 python 的 scipy 和 R 应该已经有的分布。

    Xbar +/- tsub(alpha/2)*sample_std/sqrt(sample_size)
    

    注意:此重量还有另一个选项。您可以使用一种算法来增加或减少这个阈值,直到获得最佳结果。这可能不仅仅与余弦重要性有关,还可能与Tibshirani's gap statistic 的拐点或差距有关。

    【讨论】:

    • 我还建议您查看轮廓以确定您的中心是否真的存在问题。
    猜你喜欢
    • 1970-01-01
    • 2013-10-16
    • 2012-11-20
    • 1970-01-01
    • 2017-02-03
    • 2016-12-13
    • 1970-01-01
    • 2013-02-03
    • 2018-01-28
    相关资源
    最近更新 更多