在java中-对相似值进行分组

在java中-对相似值进行分组,java,math,cluster-analysis,classification,Java,Math,Cluster Analysis,Classification,首先,谢谢你阅读我的问题 然后我用这些值计算余弦相似度,看看有多少文档更相似。您可以看到以下矩阵。列名类似于doc1、doc2、doc3,行名类似于doc1、doc2、doc3等。借助下面的矩阵,我可以看到doc1和doc4有72%的相似性(0.722711142)。这是正确的,即使我看到两个文件,他们是相似的。我有1000个文档,我可以在矩阵中查看每个文档的频率,以查看其中有多少是相似的。 我使用了不同的聚类,比如k-means和agnes(层次结构)来组合它们。它形成了集群。例如,Clust

首先,谢谢你阅读我的问题

然后我用这些值计算余弦相似度,看看有多少文档更相似。您可以看到以下矩阵。列名类似于doc1、doc2、doc3,行名类似于doc1、doc2、doc3等。借助下面的矩阵,我可以看到doc1和doc4有72%的相似性(0.722711142)。这是正确的,即使我看到两个文件,他们是相似的。我有1000个文档,我可以在矩阵中查看每个文档的频率,以查看其中有多少是相似的。 我使用了不同的聚类,比如k-means和agnes(层次结构)来组合它们。它形成了集群。例如,Cluster1有(doc4、doc5、doc3),因为它们的值(0.722711142、0.602301766、0.69912109)分别更接近。但当我手动查看这3个文档是否真的相同时,它们就不同了:(我在做什么,或者我应该使用集群以外的其他东西

    1             0.067305859  -0.027552299   0.602301766   0.722711142    
    0.067305859   1             0.048492904   0.029151952  -0.034714695 
   -0.027552299   0.748492904   1             0.610617214   0.010912109    
    0.602301766   0.029151952  -0.061617214   1             0.034410392    
    0.722711142  -0.034714695   0.69912109    0.034410392   1            
附言:价值观可能是错误的,这只是给你一个想法。 如果你有任何问题,请一定要问。
谢谢

我对TF/IDF不太熟悉,但这个过程通常会在很多阶段出错:

1、你删除了停止词吗

你应用了词干分析吗?例如波特词干分析

3、您是否对文档长度的频率进行了规范化?(可能TFIDF有一个解决方案,我不知道)

聚类是一种发现方法,但不是圣杯。它作为一个组检索的文档可能或多或少有关联,但这取决于数据、调优、聚类算法等

你想要实现什么?你的设置是什么?
祝你好运!

我的方法是根本不使用预先计算的相似度值,因为文档之间的相似度应该由聚类算法本身来发现。我只需在语料库中设置一个特征空间,每个术语一列,这样列的数量就等于词汇表的大小(如果你愿意,可以减去停止词)。每个特征值都包含该文档中各个术语的相对频率。我猜您也可以使用tf*idf值,尽管我不认为这会有太大帮助。根据您使用的聚类算法,应自动找到特定术语的辨别力,即如果某个术语出现在所有文档中具有相似相对频率的nts,则该术语不能很好地区分类和算法。任何提示?任何帮助?小问题:无法应用该问题的现有解决方案,或者为什么从头开始开发它?我的感觉是lucene(或solr)也应该实现这个…好吧,lucene或solr所做的。我已经做到了。现在我有了CSV文件,但我的问题不同了。如果你能解释你的问题。我可以用更好的方式回答它。矩阵中有些东西似乎不对劲。它有一些奇怪的非对称性。例如,集群m[3,4]是-0.062,但m[4,3]为0.611,m[3,5]为0.035,但m[5,3]是0.699。GeoffReedy请阅读我的最后一行。我说我编辑这个矩阵是为了让你知道我想做什么。这些值可能会有问题Shi Ron,谢谢你的回答。是的,我使用了你上面提到的所有东西。我有一个大的相似矩阵,我现在想对所有相似的文档进行分组。例如,如果10个文档与docum相似nt 15所以应该有一个包含11个文档(1到10个和15个文档)的集群,但是集群工作在距离上,它将文档分组。其中有频率。更接近的是70%,而该集群中的所有文档都不同:(还有其他技术吗?您可以提及吗?正确的聚类方法在很大程度上取决于文档空间的分布。您可以尝试CURE算法或DENCULE。或者有一些聚类可以用于连接数据的图形表示,如马尔可夫聚类()很抱歉,我无法理解。在我的计算中,我是在LSI和VSM的基础上计算相似性。聚类无助于相似性。如果有,请解释哪一个以及如何进行。在聚类中,文档是特征空间中的一个点,相应的算法对彼此接近的数据点进行分组。如果特征是词频,则包含相同单词的文档(即相似文档)将属于同一组。这就是聚类的全部内容:将相似的数据点(此处为文档)分组,其中相似性取决于所使用的功能。我认为本书第16章至第18章:将很好地指导您(在线免费提供)。