java中的数学将相似的值分组
首先,感谢阅读我的问题
我用TF/IDF然后在这些值上,我计算余弦相似性,看看有多少文档更相似。你可以看到下面的矩阵。列名类似于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)分别更接近。但当我手动查看这三个文档是否真的相同时,它们就不同了:(我在做什么,或者我应该使用集群以外的其他东西吗?)
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
附言:价值观可能是错误的,这只是给你一个想法。 如果你有任何问题,请一定要问。 谢谢
# 1 楼答案
我对TF/IDF不熟悉,但这个过程通常会在很多阶段出错:
1.你删除了stopwords吗
2.你应用词干分析了吗?比如波特·斯特默
3.你是否规范了文档长度的频率?(也许TFIDF的事情有解决办法,我不知道)
4、聚类是一种发现方法,但不是圣杯。它作为一个组检索的文档可能或多或少相关,但这取决于数据、调优、聚类算法等
你想要实现什么?你的设置是什么? 祝你好运