首先,感谢您阅读我的问题。
我在那些值上使用了TF/IDF,我计算了余弦相似度,看看有多少文档更相似。您可以看到以下矩阵。列名称类似于doc1,doc2,doc3,行名称与doc1,doc2,doc3等相同。在以下矩阵的帮助下,我可以看到doc1和doc4具有72%的相似度(0.722711142)。即使我看到两个文件都相似也是正确的。我有1000个文件,我可以看到每个文件freq。在矩阵中看看它们中有多少是相似的。 我使用了不同的聚类,如k-means和agnes(层次结构)来组合它们。它创造了集群。例如,Cluster1具有(doc4,doc5,doc3)becoz,它们的值分别为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:价值观可能是错误的,只是为了给你一个想法。
如果您有任何疑问,请询问。
感谢
答案 0 :(得分:1)
我不熟悉TF / IDF,但这个过程在很多阶段都会出错:
1,你删除了停用词吗?
2,你申请了什么?例如Porter stemmer。
3,您是否规范了文档长度的频率? (也许TFIDF有一个解决方案,我不知道)
4,聚类是一种发现方法,但不是圣杯。它作为一组检索的文档可能或多或少相关,但这取决于数据,调优,聚类算法等。你想要达到什么目的?你的设置是什么? 祝你好运!
答案 1 :(得分:1)
我的方法是根本不使用预先计算的相似度值,因为文档之间的相似性应该由聚类算法本身找到。我只需在语料库中设置一个每个术语一列的特征空间,这样列的数量就等于词汇量的大小(减去停止词,如果你想要的话)。每个特征值包含该文档中相应术语的相对频率。我想你也可以使用tf * idf值,虽然我不希望它能帮助太多。根据您使用的聚类算法,应该自动找到特定术语的区分能力,即如果一个术语出现在具有相似相对频率的所有文档中,则该术语在类之间不能很好地区分,算法应该检测到