【发布时间】:2011-02-01 22:30:26
【问题描述】:
我有兴趣做一些文档聚类,现在我正在考虑为此使用 TF-IDF。
如果我没记错的话,TF-IDF 特别用于评估文档的相关性给定查询。如果我没有特定查询,如何将 tf-idf 应用于集群?
【问题讨论】:
标签: algorithm language-agnostic text-processing information-retrieval tf-idf
我有兴趣做一些文档聚类,现在我正在考虑为此使用 TF-IDF。
如果我没记错的话,TF-IDF 特别用于评估文档的相关性给定查询。如果我没有特定查询,如何将 tf-idf 应用于集群?
【问题讨论】:
标签: algorithm language-agnostic text-processing information-retrieval tf-idf
实际上并非如此:tf-idf 为您提供给定文档中某个术语的相关性。
因此,您可以通过计算邻近度完美地将它用于您的集群,这类似于
proximity(document_i, document_j) = sum(tf_idf(t,i) * tf_idf(t,j))
对于文档 i 和文档 j 中的每个术语 t。
【讨论】:
用于文档聚类。最好的方法是使用 k-means 算法。如果你知道你有多少类型的文档,你就会知道 k 是什么。
使其适用于文档:
a) 说随机选择初始 k 个文档。
b) 使用文档与集群的最小距离将每个文档分配给集群。
c) 将文档分配到集群后,通过取每个集群的质心,将 K 个新文档作为集群。
现在问题来了
a) 如何计算 2 个文档之间的距离: 它只不过是文档与初始聚类的术语的余弦相似度。这里的术语不过是 TF-IDF(之前为每个文档计算的)
b) 质心应该是:给定term/no的TF-IDF之和。的文件。对集群中的所有可能项执行此操作。这将为您提供另一个 n 维文档。
希望对你有帮助!
【讨论】:
TF-IDF 有不同的用途;除非您打算重新发明轮子,否则最好使用Carrot 之类的工具。如果您希望自己实现一种算法,则在 Google 上搜索文档聚类可以为您提供多种算法。
【讨论】: