2011-06-06 67 views
24

感谢您给我的所有帮助。余弦相似性和tf-idf

我刚刚得到了一个似乎困惑我的小问题。

TF-IDF和余弦相似性。

我正在阅读两篇文章,然后在余弦相似度下的wiki上我发现这个句子“在信息检索的情况下,两个文档的余弦相似度范围从0到1,因为术语频率(tf-idf权重)不能为负,两个频率向量之间的夹角不能大于90°。

现在我想知道....他们不是2种不同的东西吗?

tf-idf已经在余弦相似度内吗?如果是的话,那到底是什么?我只能看到内点产品和欧几里德长度...

我认为tf-idf是在文本上运行余弦相似性之前可以做的事情。我错过了什么? O.o

+2

我发现了一个很棒的[博客](https://janav.wordpress.com/2013/10/27/tf-idf-and-cosine-similarity/)。它确实有帮助。 – divyum 2015-04-25 13:01:30

回答

28

Tf-idf是一种应用于文本以获得两个实值向量的转换。然后,您可以通过获取它们的点积并将其除以它们的规范的乘积来获得任何一对矢量的余弦相似度。这产生矢量之间角度的余弦。

如果dq是TF-IDF载体,然后

enter image description here

其中θ是向量之间的角度。如从0到90度θ范围,COS θ范围从1到0 θ可以仅范围从0到90度,因为TF-IDF矢量都是非负的。

tf-idf和余弦相似/矢量空间模型没有特别深的联系; tf-idf对于文档术语矩阵非常有效。不过,它在该域之外使用,原则上可以用VSM中的另一个转换来替代。 (从Wikipedia取式,因此d 。)

+2

谢谢,我没有错:D很高兴有你的问题回答这个速度,而不是等待学校^^ – N00programmer 2011-06-06 18:09:03

28

TF-IDF只是一种方法来衡量文本中的标记的重要性;它只是一种将文档转换为数字列表的常用方法(术语矢量,它提供了获得余弦的角度的一个边缘)。

要计算余弦相似度,需要两个文档向量;矢量用索引表示每个唯一项,并且该索引处的值是衡量该项对文档有多重要以及对文档相似性的一般概念的一些度量。

你可以简单地计算的时间每学期发生在文档中(牛逼 ERM ˚F requency)的数量,并使用该整数结果在矢量术语得分,但结果不会很好。极其常见的术语(如“是”,“和”,“the”)会导致大量文档看起来相似。 (这些特定的例子可以通过使用stopword list来处理,但其他常用术语不够通用,不足以被视为停用词,这会导致同样的问题。在Stackoverflow上,“question”这个词可能属于这个类别。分析烹饪食谱,你可能会遇到这个词“蛋”的问题。)

TF-IDF考虑到调整原料词频每个学期一般(在d ocument f怎样频繁发生频率)。 nverse d ocument ˚F requency通常是通过在(维基百科图像)出现的术语的文档的数量划分的文档的数量的对数:的

IDF, credit to wikipedia

认为'日志“作为一个细微的细微差别,从长远来看有助于事情的发展 - 它在争论增长时会增长,所以如果这个词很少,那么以色列国防军将会很高(很多文件被很少的文件分开),如果这个词是常见的,IDF将会很低(大量文件被大量文件分成〜= 1)。假设你有100个食谱,除了一个以外,所有的食谱都需要鸡蛋,现在你有三个以上的文档都包含“鸡蛋”这个单词,一个在第一个文档中,两个在第二个文档中,一个在第三个文档中。每个文档中“鸡蛋”的频率是1或2,文档频率是99(如果您计算新文档,文档频率可以是102,我们坚持99)。

的 '蛋' 的TF-IDF是:

1 * log (100/99) = 0.01 # document 1 
2 * log (100/99) = 0.02 # document 2 
1 * log (100/99) = 0.01 # document 3 

这些都是比较小的数字;相反,我们来看看另一个词,它只出现在你的100个配方语料库中的9个:'芝麻菜'。它在第一个文档中出现两次,在第二个文档中出现三次,而在第三个文档中不出现。

的TF-IDF的 '芝麻' 是:

1 * log (100/9) = 2.40 # document 1 
2 * log (100/9) = 4.81 # document 2 
0 * log (100/9) = 0  # document 3 

'芝麻' 是文档2 真的重要的,至少比 '蛋'。谁在乎鸡蛋发生多少次?一切都包含鸡蛋!这些术语向量比简单的计数要多得多,并且它们将导致文档更接近(关于文档3),而不是如果使用简单的术语计数。在这种情况下,可能会出现相同的结果(嘿!我们这里只有两个词),但差别会更小。

这里的结果是TF-IDF在文档中生成了更有用的术语测量方法,因此您不会关注真正常见的术语(停用词,“蛋”),也不会注意重要术语('芝麻菜')。

6

余弦相似度完整的数学过程中这些教程

假设,如果你想计算两个文档之间的余弦相似性,首先解释步骤将是计算两个文档的tf-idf向量。然后找到这两个向量的点积。这些教程将帮助你:)

-1

Tf-idf仅用于从基于tf - Term Frequency的文档中查找矢量 - 用于查找文档中出现多少次该术语以及反向文档频率 - 它给出了该术语在整个系列中出现的次数。

然后你可以找到文件之间的余弦相似度。