Text 具有TF-IDF权重的余弦相似性系统阈值

Text 具有TF-IDF权重的余弦相似性系统阈值,text,cluster-analysis,document,similarity,Text,Cluster Analysis,Document,Similarity,我正在对数千(例如10000)个文本文档进行分析。我计算了TF-IDF权重,得到了一个具有成对余弦相似性的矩阵。我希望将文档视为一个图形来分析各种属性(例如,分隔文档组的路径长度),并将连接可视化为一个网络 问题是有太多的相似之处。大多数都太小,没有意义。我看到许多人通过将所有相似性降低到某个特定阈值以下(例如,相似性低于0.5)来处理这个问题 然而,0.5(或0.6,或0.7,等等)是一个任意的阈值,我正在寻找更客观或更系统的技术来消除微小的相似性 我对许多不同的策略持开放态度。例如,是否有一

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

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

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


我对许多不同的策略持开放态度。例如,是否有一种不同的替代tf idf的方法可以使大部分小的相似性为0?其他只保留显著相似性的方法?

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

看待这个问题的一种方法是,尝试根据与平均相似性(1.5个标准差(如果数据正常,则为第86个百分位)之间的距离来制定分数,该分数倾向于标记一个异常值,其中3个(99.9个百分位)为极端异常值,以高端作为良好的衡量标准。我记不起在哪里了,但这个想法在其他论坛上也有吸引力,并为我的相似性奠定了基础

请记住,数据不可能是正态分布的

average(cosine_similarities)+alpha*standard_deviation(cosine_similarities)
为了获得alpha,可以使用NLTK描述的or。与Wu Palmer的高度相似性应导致更大的接受范围,而Wu Palmer分数较低应导致更严格的接受。因此,采用1-Wu Palmer评分是明智的。您甚至可以对LSA或LDA组使用此方法。更严格地说,如果你的标准差接近1.5或更高,你甚至可以尝试1+Wu Palmer(精英),重新找到最终的K,找到新的分数,聚类,然后重复

不过要小心,这意味着找到所有相关单词的Wu Palmer,这是一个相当大的计算问题。此外,与大多数算法相比,10000个文档是微不足道的。我所看到的推特中最小的一条是15000条,而20个新闻组中有20000个文档。我敢肯定它使用了类似于20个新闻组的东西。他们肯定使用senti wordnet

基本方程式不是我的,所以请随意翻找

另一件需要记住的事情是,计算是时间密集型的。使用student t值来估计SOV配对的期望值/平均wu-palmer分数可能是一个好主意,如果您尝试使用整个句子,这一点尤其好。CommonsMath3forJava/scala包括这个发行版,ScipyforPython和R也应该已经有了

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


注:此重量还有另一个选项。您可以使用一种算法,对该阈值进行加减,直到获得最佳结果。这可能不仅仅与余弦重要性有关,还可能与一个拐点或缺口有关

我还建议您查看轮廓,以确定您的中心是否确实存在问题。