我对以下关于、TF-以色列国防军和余弦相似的评论感到困惑.
我读了这两篇文章,然后在wiki上找到了这句话:“在信息检索的情况下,两个文档的余弦相似性将在0到1之间,因为术语频率(tf-国防军权重)不能是负值,两个项频率向量之间的夹角不能大于90”。
现在我在想.这不是两样不同的东西吗?
tf-国防军已经在余弦内相似了吗?如果是的话,那我只能看到内部的点积和欧几里得长度。
我以为在文本上进行余弦相似之前,TF-国防军是可以做的。我错过了什么吗?
发布于 2013-10-26 22:05:46
TF-国防军只是衡量文本中符号重要性的一种方法;它只是将文档转换为数字列表的一种非常常见的方法(向量一词,它提供了得到余弦的角度的一个边)。
要计算余弦相似度,需要两个文档向量;向量用一个索引表示每个唯一的项,而该索引的值是衡量该术语对文档和一般文档相似概念的重要性的某种度量。
您可以简单地计算文档中每个术语发生的次数(Term F),并将这个整数结果用于向量中的项得分,但是结果不会很好。非常常见的术语(如"is“、" and”和"the")会导致许多文档看起来彼此相似。(这些特殊的例子可以通过使用停止词列表来处理,但其他不足以被认为是秒针的通用术语也会引起同样的问题。在堆栈溢出中,“问题”一词可能属于这一类。如果你在分析烹饪食谱,你可能会遇到“鸡蛋”这个词的问题。)
TF-以色列国防军通过考虑每个术语在一般情况下发生的频率来调整原始术语的频率( Document F frequency )。i Document F通常是记录文档数量除以该术语出现的文档数量的日志(来自维基百科的图像):

把“日志”看作是一个小的细微差别,从长远来看有助于解决问题--当它的论点增加时,它就会增加,所以如果这个词很少,那么以色列国防军就会很高(很多文档除以很少的文档),如果这个词很常见,以色列国防军就会很低(很多文档除以许多文档~= 1)。
假设你有100个菜谱,除了一个需要鸡蛋,现在你又有三个包含“鸡蛋”这个词的文档,一个在第一个文档中,两个在第二个文档中,一个在第三个文档中。每个文档中“egg”的术语频率是1或2,文档频率是99 (或者,可以说是102,如果算上新文档的话)。我们还是坚持下去吧。
“鸡蛋”的TF-以色列国防军是:
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个:'arugula‘。它在第一个文档中发生两次,在第二个文档中发生三次,在第三个文档中没有发生。
“arugula”的工作队-以色列国防军是:
1 * log (100/9) = 2.40 # document 1
2 * log (100/9) = 4.81 # document 2
0 * log (100/9) = 0 # document 3“‘arugula”对于文档2来说是非常重要的,至少与“鸡蛋”相比是如此。谁在乎鸡蛋发生了多少次?所有东西都有鸡蛋!这些术语向量比简单计数提供了更多的信息,它们将导致文档1和2比使用简单术语计数时更紧密地连接在一起(关于文档3)。在这种情况下,同样的结果可能会出现(嘿!我们这里只有两个术语),但是差别会更小。
这里带回家的是TF-国防军在文档中生成更多有用的术语,因此您不会关注真正常见的术语(秒词,“鸡蛋”),而忽略了重要的术语(“arugula”)。
发布于 2014-12-03 05:41:59
这些教程解释了余弦相似的完整数学过程。
假设您想要计算两个文档之间的余弦相似度,第一步是计算这两个文档的TF-下手向量。然后找出这两个向量的点积。这些教程将帮助您:)
发布于 2013-06-07 22:43:18
tf/idf加权在计算过程中有时会出现错误,并在代码中产生NaN错误。阅读以下内容非常重要:http://www.p-value.info/2013/02/when-tfidf-and-cosine-similarity-fail.html
https://stackoverflow.com/questions/6255835
复制相似问题