TF-IDF只是一种方法来衡量文本中的标记的重要性;它只是一种将文档转换为数字列表的常用方法(术语矢量,它提供了获得余弦的角度的一个边缘)。
要计算余弦相似度,需要两个文档向量;矢量用索引表示每个唯一项,并且该索引处的值是衡量该项对文档有多重要以及对文档相似性的一般概念的一些度量。
你可以简单地计算的时间每学期发生在文档中(牛逼 ERM ˚F requency)的数量,并使用该整数结果在矢量术语得分,但结果不会很好。极其常见的术语(如“是”,“和”,“the”)会导致大量文档看起来相似。 (这些特定的例子可以通过使用stopword list来处理,但其他常用术语不够通用,不足以被视为停用词,这会导致同样的问题。在Stackoverflow上,“question”这个词可能属于这个类别。分析烹饪食谱,你可能会遇到这个词“蛋”的问题。)
TF-IDF考虑到调整原料词频每个学期一般(在d ocument f怎样频繁发生频率)。 我 nverse d ocument ˚F requency通常是通过在(维基百科图像)出现的术语的文档的数量划分的文档的数量的对数:的
认为'日志“作为一个细微的细微差别,从长远来看有助于事情的发展 - 它在争论增长时会增长,所以如果这个词很少,那么以色列国防军将会很高(很多文件被很少的文件分开),如果这个词是常见的,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在文档中生成了更有用的术语测量方法,因此您不会关注真正常见的术语(停用词,“蛋”),也不会注意重要术语('芝麻菜')。
我发现了一个很棒的[博客](https://janav.wordpress.com/2013/10/27/tf-idf-and-cosine-similarity/)。它确实有帮助。 – divyum 2015-04-25 13:01:30