【发布时间】:2015-07-14 09:27:06
【问题描述】:
我有很多使用聚类算法聚类的文档。在聚类算法中,每个文档可能属于多个聚类。我创建了一个存储document-clusterassignment 的表和另一个存储cluster-document 信息的表。当我查找与给定文档相似的文档列表时(让我们坐下d_i)。我首先检索它所属的集群列表(从document-cluster 表中),然后对于document-cluster 中的每个集群c_j,我从cluster-document 表中检索属于c_j 的文档列表。 c_j 不止一个,所以很明显会在多个列表中。每个列表都有许多文档,显然这些列表之间可能存在重叠。
在下一阶段,为了找到与 d_i 最相似的文档,我根据它们与 d_i 的共同聚类数对相似文档进行排名。
我的问题是关于最后一个阶段。一个天真的解决方案是创建一种排序类型的 HashMap,其中文档作为键,# common clusters 作为值。但是,由于每个列表可能包含许多文档,因此这可能不是最佳解决方案。有没有其他方法可以对类似项目进行排名?任何预处理或..?
【问题讨论】:
-
定义相似。您是在寻找语义相似的东西,还是几乎重复的东西?如果是后者,则欺骗:stackoverflow.com/q/23053688/572670
-
就我个人而言,如果您能在问题中添加 details 将会对我有很大帮助。 (保留这个问题,并在同一个线程中添加另一个问题。)更详细地说明你所做的事情。 “我来自密苏里……show我。”然后,您的问题将更容易获得所需的良好答案。
-
让我总结一下我的问题:我有多个大尺寸数组。数组的元素有重叠(例如,一个元素可能存在于多个数组中)。我想创建一个所有数组元素的排序列表,排序标准是每个元素的出现次数。最简单的方法是创建一个排序的 hashmap,但考虑到数组的大小,这可能不是很有效。有更好的方法吗?
标签: java performance algorithm information-retrieval tf-idf