(一)介绍
TF-IDF 称为词频 - 逆文件频率, 那么它是用来干吗的哪?
假定现在有一篇长文中国的蜜蜂养殖, 我们准备用计算机提取它的关键词.
一个容易想到的思路, 就是找到出现次数最多的词. 如果某个词很重要, 它应该在这篇文章中多次出现. 于是, 我们进行 "词频"(Term Frequency, 缩写为 TF)统计.
结果你肯定猜到了, 出现次数最多的词是 ----"的","是","在"---- 这一类最常用的词. 它们叫做 "停用词" http://baike.baidu.com/view/3784680.htm (stop words), 表示对找到结果毫无帮助, 必须过滤掉的词.
假设我们把它们都过滤掉了, 只考虑剩下的有实际意义的词. 这样又会遇到了另一个问题, 我们可能发现 "中国","蜜蜂","养殖" 这三个词的出现次数一样多. 这是不是意味着, 作为关键词, 它们的重要性是一样的?
显然不是这样. 因为 "中国" 是很常见的词, 相对而言,"蜜蜂" 和 "养殖" 不那么常见. 如果这三个词在一篇文章的出现次数一样多, 有理由认为,"蜜蜂" 和 "养殖" 的重要程度要大于 "中国", 也就是说, 在关键词排序上面,"蜜蜂" 和 "养殖" 应该排在 "中国" 的前面.
所以, 我们需要一个重要性调整系数, 衡量一个词是不是常见词. 如果某个词比较少见, 但是它在这篇文章中多次出现, 那么它很可能就反映了这篇文章的特性, 正是我们所需要的关键词.
用统计学语言表达, 就是在词频的基础上, 要对每个词分配一个 "重要性" 权重. 最常见的词 ("的","是","在") 给予最小的权重, 较常见的词 ("中国") 给予较小的权重, 较少见的词 ("蜜蜂","养殖") 给予较大的权重. 这个权重叫做 "逆文档频率"(Inverse Document Frequency, 缩写为 IDF), 它的大小与一个词的常见程度成反比.
知道了 "词频"(TF)和 "逆文档频率"(IDF)以后, 将这两个值相乘, 就得到了一个词的 TF-IDF 值. 某个词对文章的重要性越高, 它的 TF-IDF 值就越大. 所以, 排在最前面的几个词, 就是这篇文章的关键词.
(二)计算
1. 计算词频
词频(TF)= 某个词在文章中出现的次数
考虑到文章有长短之分, 为了便于不同文章的比较, 进行 "词频" 标准化.
词频(TF)= 某个词在文章中出现的次数 / 文章的总词数
或者
词频(TF)= 某个词在文章中出现的次数 / 改文出现次数最多的词的出现次数
2. 计算逆文档频率
这时, 需要一个语料库(corpus), 用来模拟语言的使用环境.
逆文档频率(IDF)=log(语料库的文档总数 / 包含改词的文档数 + 1)
如果一个词越常见, 那么分母就越大, 逆文档频率就越小越接近 0. 分母之所以要加 1, 是为了避免分母为 0(即所有文档都不包含该词).log 表示对得到的值取对数.
3. 计算 TF-IDF
(三)例子
TF-IDF = 词频(TF)* 逆文档频率(IDF)
可以看到, TF-IDF 与一个词在文档中的出现次数成正比, 与该词在整个语言中的出现次数成反比.
还是以中国的蜜蜂养 殖为例, 假定该文长度为 1000 个词,"中国","蜜蜂","养殖" 各出现 20 次, 则这三个词的 "词频"(TF)都为 0.02. 然后, 搜索 Google 发现, 包含 "的" 字的网页共有 250 亿张, 假定这就是中文网页总数. 包含 "中国" 的网页共有 62.3 亿张, 包含 "蜜蜂" 的网页为 0.484 亿张, 包含 "养 殖" 的网页为 0.973 亿张. 则它们的逆文档频率 (IDF) 和 TF-IDF 如下:
从上表可见,"蜜蜂" 的 TF-IDF 值最高,"养殖" 其次,"中国" 最低.(如果还计算 "的" 字的 TF-IDF, 那将是一个极其接近 0 的值.)所以, 如果只选择一个词,"蜜蜂" 就是这篇文章的关键词.
除了自动提取关键词, TF-IDF 算法还可以用于许多别的地方. 比如, 信息检索时, 对于每个文档, 都可以分别计算一组搜索词 ("中国","蜜蜂","养殖") 的 TF-IDF, 将它们相加, 就可以得到整个文档的 TF-IDF. 这个值最高的文档就是与搜索词最相关的文档.
来源: http://www.bubuko.com/infodetail-2690550.html