返回Vector空间模型中表示的类似文档的算法

时间:2011-06-21 15:37:02

标签: cluster-analysis document k-means tf-idf

我有一个包含大约30,000个文档的tf-idf向量的数据库。

我想为给定的文档返回一组类似的文档 - 大约4个左右。

我考虑过在数据上实现K-Means(聚类算法)(具有余弦相似性),但由于存在很多不确定因素,我不知道它是否是最好的选择:我不知道该把什么放入我的初始集群,我不知道要创建多少个集群,我担心集群会太不平衡,我不确定结果质量会不会好等等。

非常感谢有经验的用户提供的任何建议和帮助。

谢谢,

凯蒂

2 个答案:

答案 0 :(得分:0)

  

我想为给定的文档返回一组类似的文档 - 大约4个左右。

然后不要做k-means。只需按照tf-idf相似性返回四个最接近的文档,就像任何搜索引擎一样。您可以将其实现为k最近邻搜索,或者通过安装搜索引擎库并将初始文档用作查询来更轻松地实现。想到Lucene

答案 1 :(得分:0)

如果我理解,你

  1. 从较大的数据库读取30k记录到缓存文件/到内存
  2. 余弦相似度,10个术语* 30k记录 - >最佳4。
  3. 你能分别估计这些阶段的运行时间吗?

    1. 读取或缓存:这种情况经常发生, 30k向量总共有多大?
    2. 10 * 30k乘以 - 在您的c / java / ...或某些不透明的数据库中添加? 在c或java中,应该采用< 1秒。
    3. 一般来说,做一些背后的估计 在获得幻想之前

      (顺便说一下, 我发现在st-::ss_sort中,最好的4比直接c更快更简单;因人而异。)