我的目标是找到两个文档(单词集合)之间的相似度值。我已经找到了几个答案,如this SO post或this SO post,它们提供了Python库来实现这个功能,但是我很难理解这种方法并使其适用于我的用例。Java:如何使用TF-IDF来计算两个文档的相似度?
如果我理解正确,文档的TF-IDF是根据给定的术语计算的,对吗?这就是我对Wikipedia article的解释:“tf-idf ...是一个数字统计,旨在反映一个词对文档的重要性。”
在我的情况下,我没有一个特定的搜索词,我想与文档进行比较,但我有两个不同的文档。我假设我需要首先计算文档的向量,然后在这些向量之间取余弦。但是我在构建这些向量时发现的所有答案总是假定一个搜索词,我没有这个搜索词。
无法包装我的头,任何概念上的帮助或链接到达到此目的的Java库将不胜感激。
运行一个术语提取之前,并且一旦你有两个语料库的词频清单,计算[余弦相似度](https://en.wikipedia.org/wiki/Cosine_similarity)。 –
@WiktorStribiżew:谢谢你的建议。所以我将这两个文档的条款解析成一个列表。然后,对于每个术语,我计算两个文档中每个文档的tf-idf值,这给了我两个向量,从中我可以计算余弦相似度。我是否正确理解这一点? – gmazlami
是的,基本上就是这样做。根据术语频率,得到向量TF-IDF,并计算余弦相似度。此外,请确保使用词干来标准化您提取的单词形式以减少噪音。 –