我正在尝试根据文档的相似性对文档进行聚类,其目的是匹配两个文档中的相似单词,并将该数字除以两个文档中的单词总数。每个值都存储在2D数组中:
1.0000 0.1548 0.0968 0.0982 0.2750 0.1239 0.0891 0.1565
0.1548 1.0000 0.0960 0.0898 0.1631 0.0756 0.0874 0.2187
0.0957 0.2300 1.0000 0.4964 0.0980 0.2004 0.4582 0.2315
0.0971 0.2234 0.4946 1.0000 0.0995 0.2010 0.4533 0.2244
0.2793 0.1631 0.0986 0.1001 1.0000 0.1324 0.0904 0.1662
0.1726 0.0756 0.2149 0.2157 0.1795 1.0000 0.2019 0.0819
0.0880 0.2108 0.4582 0.4550 0.0899 0.1880 1.0000 0.2124
0.1556 0.2094 0.0950 0.0884 0.1662 0.0764 0.0867 1.0000
因此,如果有8个文档,则每个文档的结果与其他文档的比较存储在上表中,每个数组的索引都显示一个文档。所以文件0,0 1,1 2,2 ......总是有价值,因为它们是相同的。
如何对类似文档进行聚类,即哪些值彼此接近?
答案 0 :(得分:0)
您是否尝试使用例如将相似度转换为距离
dist = 1 - sim
由于你的相似性受到1的限制,这应该可以正常工作。
但请注意,层次聚类不能扩展。通常的朴素实现与O(n^3)
一致,非常谨慎的实现可以在O(n^2)
中运行某些链接类型(单链接,完整链接,也可能是UPGMA)。然而,你通常的文本语料库太大而不可行。