【发布时间】:2017-04-07 14:26:09
【问题描述】:
我的目标是找到两个文档(单词集合)之间的相似度值。我已经找到了几个答案,例如 this SO post 或 this SO post,它们提供了实现此目的的 Python 库,但我无法理解该方法并使其适用于我的用例。
如果我理解正确,文档的 TF-IDF 是根据给定术语计算的,对吗?这就是我从Wikipedia article 中解释它的方式:“tf-idf...是一个数值统计数据,旨在反映一个词对文档的重要性”。
就我而言,我没有要与文档进行比较的特定搜索词,但我有两个不同的文档。我假设我需要首先计算文档的向量,然后取这些向量之间的余弦值。但是我找到的关于构建这些向量的所有答案总是假设一个搜索词,而我没有这个词。
对此我无法理解,任何概念性帮助或实现此目的的 Java 库链接将不胜感激。
【问题讨论】:
-
之前运行一个术语提取,一旦你有了两个语料库的术语列表及其频率,计算cosine similarity。
-
@Wiktor Stribiżew:感谢您的建议。所以我将两个文档的条款提取到一个列表中。然后对于这些术语中的每一个,我计算两个文档中每一个的 tf-idf 值,这给了我两个向量,我可以从中计算余弦相似度。我理解正确吗?
-
是的,基本上就是这样。根据词频,得到向量,TF-IDF,计算余弦相似度。此外,请确保您使用词干来规范您提取的单词形式以减少噪音。
-
非常感谢您的提示。我会试试这个。