我对做一些文档聚类很感兴趣,现在我正在考虑为此使用 TF-IDF。
如果我没记错的话,TF-IDF 特别用于评估给定查询的文档的相关性。如果我没有特定查询,如何将 tf-idf 应用于集群?
我对做一些文档聚类很感兴趣,现在我正在考虑为此使用 TF-IDF。
如果我没记错的话,TF-IDF 特别用于评估给定查询的文档的相关性。如果我没有特定查询,如何将 tf-idf 应用于集群?
用于文档聚类。最好的方法是使用k-means 算法。如果你知道你有多少种文档,你就知道 k 是什么。
要使其适用于文档:
a) 说随机选择初始 k 个文档。
b) 使用文档与集群的最小距离将每个文档分配给集群。
c) 将文档分配到集群后,通过取每个集群的质心,将 K 个新文档作为集群。
现在,问题是
a)如何计算2个文档之间的距离:它只不过是具有初始聚类的文档术语的余弦相似度。这里的术语不过是 TF-IDF(之前为每个文档计算的)
b)质心应该是:给定术语/编号的 TF-IDF 之和。的文件。对集群中的所有可能项执行此操作。这将为您提供另一个 n 维文档。
希望这有帮助!
实际上并不完全正确:tf-idf为您提供给定文档中术语的相关性。所以你可以通过计算接近度
来完美地将它用于你的集群,这就像
proximity(document_i, document_j) = sum(tf_idf(t,i) * tf_idf(t,j))
对于 doc i 和 doc j 中的每个术语 t。
TF-IDF 有不同的用途;除非您打算重新发明轮子,否则最好使用像Carrot这样的工具。如果您希望自己实现一种算法,那么在谷歌上搜索文档聚类可以为您提供许多算法。