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

peq*_*uod 5 text document cluster-analysis similarity

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

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

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

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

And*_*ans 6

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

看待问题的一种方法是尝试根据与平均相似度的距离(1.5 个标准差(如果数据正常,则为 86%)倾向于标记异常值,其中 3(99.9%)是极端值离群值),以高端为衡量标准。我不记得出处了,但这个想法在其他论坛中受到了关注,并构成了我相似的基础。

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

average(cosine_similarities)+alpha*standard_deviation(cosine_similarities)
Run Code Online (Sandbox Code Playgroud)

为了获得 alpha,您可以使用Wu Palmer 分数或NLTK 描述的其他分数。与 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)
Run Code Online (Sandbox Code Playgroud)

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