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

标签 java math cluster-analysis classification

首先,感谢您阅读我的问题。

我用了TF/IDF然后根据这些值,我计算余弦相似度以查看有多少文档更相似。你可以看到下面的矩阵。列名像 doc1、doc2、doc3,行名像 doc1、doc2、doc3 等。借助以下矩阵,我可以看到 doc1 和 doc4 有 72% 的相似性 (0.722711142)。这是正确的,即使我看到两个文件它们是相似的。我有 1000 个文件,我可以看到每个文件的频率。在矩阵中查看它们中有多少是相似的。 我使用了不同的聚类,如 k-means 和 agnes (hierarchy) 来组合它们。它形成了簇。例如,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            

P.S:数值可能有误,仅供引用。 如果您有任何问题,请务必提问。 谢谢

最佳答案

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

1,你删除停用词了吗?

2、你应用词干提取了吗?例如波特词干分析器。

3,你是否对文档长度的频率进行了归一化? (也许 TFIDF 有解决方案,我不知道)

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

你想达到什么目的?你的设置是什么? 祝你好运!

关于java - 在 java 中 - 对相似值进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2223200/

相关文章:

java - Firebase - 在类上找不到要序列化的属性

javascript - GWT 2.7 : What is the difference between -XjsInteropMode JS and -XjsInteropMode CLOSURE?

algorithm - 计算最终市场分布——竞争性编程

python - 为什么 (-3//2 = -2)

python - Numpy 数组按两个条件过滤

java - 尝试使用 Intent 获取字符串时,.child() 未设置

java - 是否可以为方法分配不同的返回类型

c# - 图像重映射算法

python - scikit-learn 谱聚类 : unable to find NaN lurking in data

cluster-analysis - RapidMiner 和 WEKA : Different clustering result