与TF-IDF权重的余弦相似性的系统阈值

时间:2015-03-05 16:03:43

标签: text cluster-analysis document similarity

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

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

然而,0.5(或0.6或0.7等)是一个任意的阈值,我正在寻找更客观或系统的技术来摆脱微小的相似性。

我对许多不同的策略持开放态度。例如,是否有一个不同的替代tf-idf,使大多数小相似性为0?其他方法只能保持显着的相似性?

1 个答案:

答案 0 :(得分:4)

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

查看问题的一种方法是尝试根据与平均相似度的距离来开发得分(1.5标准差(如果数据正常则为第86百分位)倾向于标记3(99.9百分位数)的异常值作为一个极端的异常值,采取高端措施。我不记得在哪里,但这个想法在其他论坛中引起了关注,并形成了我的相似性的基础。

请记住,数据可能无法正常分发。

average(cosine_similarities)+alpha*standard_deviation(cosine_similarities)

为了获得alpha,您可以使用NLTK所描述的Wu Palmer scoreanother score。与吴帕尔默的强烈相似之处应该会导致更大的接受度,而较低的吴帕尔默得分应该会导致更严格的接受。因此,以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得分可能是一个好主意,如果你试图取整个句子,那么尤其好。 Commons Math3 for java / scala包含了pyip的scipy分配,R也应该有一些东西。

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

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