0

我正在尝试根据文档的相似性对文档进行聚类,其想法是匹配两个文档中的相似单词并将该数字除以两个文档中的单词总数。每个值都存储在一个二维数组中:

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 ... 将始终具有值 1,因为它们是相同的。

我如何对相似的文档进行聚类,即谁的价值观彼此接近?

4

1 回答 1

0

您是否尝试过使用例如将相似度转换为距离

dist = 1 - sim

由于您的相似性以 1 为界,这应该可以正常工作。

但是请注意,层次聚类不能很好地扩展。通常的幼稚实现与O(n^3), 并且非常谨慎的实现可以在O(n^2)某些链接类型(单链接,完整链接,也许 UPGMA )中运行。然而,您通常的文本语料库将太大而无法实现。

于 2013-11-10T12:04:28.460 回答