数学之美之TF-IDF算法

数学之美之TF-IDF算法


By 白熊花田(http://blog.csdn.net/whiterbear) 转载需注明出处,谢谢。


吴军博士在《数学之美》一书中提到如何使用TF-IDF算法进行确定网页和查询的相关性判断。我在这里给出自己学习的笔记。


相关名称:

TF-IDF(term frequency–inversedocument frequency)是一种用于资讯检索与资讯探勘的常用加权技术。

TF:Term Frequency 词频

IDF:Inverse documentfrequency 倒文档频率


问题:

用户在谷歌上搜索,谷歌如何能够保证返回的结果是用户想要的呢?即用户输入”XXX”,谷歌如何保证返回的网页与”XXX”相关联,而且是把与“XXX”关联性最大的那些网页放在头几条结果中呢?


分析:

比如用户输入“原子能的应用”,那么,可以轻易想到,网页中包含这三个词比较多的网页会比包含它们比较少的网页更相关。但是,这样是不公平的,因为有些网页很长,它们可能会包含更多的关键字数目(但是却不一定比短的网页与这个内容更相关)。所以靠关键字的数目来比较是不靠谱的,所以我们换一种方式,看它们出现的频率。


TF:

频率的计算方法:用该网页的关键字出现的次数除以网页的总字数。我们把这个商称为TF(关键字的频率或者单文本的频率)。比如,某个网页中共有1000个词,其中“原子能”,“的”,“应用”分别出现了2次,35次和5次,那么它们的词频就分别是(2/1000)=0.02,(35/1000)=0.035,(5/1000)=0.05,这三个词频相加之和0.042就是这个网页相对于“原子能应用”这个关键字的TF(单文本词频)。

有了词频,我们便有了一种简单而方便的计算查询的关键词和特定网页的相关性的办法。当然,用户可以输入好几个关键字,它们在特定的网页中的词频(TF)分别为:。那么,这几个关键字与该网页的相关性为:

但是,这样仍然有漏洞,在上面给出的例子中,“的”这个次占了词频的80%以上,而它对确定网页的主题几乎没什么用。所以我们应该忽略掉这些词,取消掉它们的影响。(注:我们称这种词为“停止词(stopword)”,英文中有a, the, or等冠词,介词,连词等,中文中有“和”,“中”,“得”等等)。忽略掉这些停止词后,上述网页的相关性就变为了0.007,其中“原子能”贡献了0.002,“应用”贡献了0.005。

到这,细心的读者可能会发现另一个漏洞,在汉语中,“应用”是一个很通用的词,而“原子能”是个很专业的词,后者在网页中的相关性排名中应该占据更大的比重。而前面我们计算的词频都是假定“原子能”,“应用”的权重是相同的条件下计算的,所以我们需要改进它。

我们给汉语中的每个词赋予一个权重,这个权重的设定必须满足两个条件:

1>    一个词预测主题的能力越强(与主题的关联程度),权重越大,反之,权重越小。在网页中看到“原子能”这个词,或多或少能够了解网页的主题,而看到“应用”一词,则对主题基本上还是一无所知。因此,“原子能”的权重应该比应用大。

2>    停止词的权重应该为零。

容易发现,如果一个关键词只在很少的网页出现,通过它就容易锁定搜索目标,它的权重也就应该比较大。反正,如果一个词在大量的网页中出现,看到它仍然不清楚要找什么内容,因此它的权重应该小。(比如你在搜索“python gensim”,“python”这个关键词会在很多的网页中出现,内容可能是python入门介绍,python官网,python应用,而“gensim”却只会在相对比较少的网页中出现,一般所以gensim的官网,gensim的安装教程,gensim的学习笔记等,而后者是我们更倾向于看到的内容)。


IDF:

我们已经明白了,某些词在搜索某些内容时应该占据更多的权重,可是如何确定每个词的权重呢?在信息检索中,使用最多的权重就是IDF(逆文本频率指数)。公式: 。

含义:如果某个关键词出现在网页中出现,在网页总数个情况下,值越大,我们就认为关键词的权重越小,反之亦然。(如关键字“python”在10万个网页中出现,而“gensim”只在1000个网页中出现,那么“gensim”的权重就会比“python”多,这样搜索出来的结果就与你想要的结果越贴近)。比如,假定中文网页数是,停止词的在所有的网页中都出现,即,那么它的IDF = log(10亿 / 10亿) = log(1) =0。假如专用词“原子能”在两百万个网页中出现,即Dw=200万,则它的权重IDF=log(500) =2.7。又假定通用词“应用”,出现在五亿个网页中,它的权重IDF = log(2)则只有 0.3。

也就是说,在网页中找到一个“原子能”的比配相当于找到九个“应用”的匹配。利用 IDF,上述相关性计算的公式就由词频的简单求和变成了加权求和,即 TF1*IDF1 + TF2*IDF2 +... + TFN*IDFN。在上面的例子中,该网页和“原子能的应用”的相关性为 0.0069,其中“原子能”贡献了 0.0054,而“应用”只贡献了0.0015。这个比例和我们的直觉比较一致了。

TF-IDF的概念被公认为信息检索中最重要的发明。在搜索,文献分类,与其他相关领域有广泛的应用。

 


你可能感兴趣的:(算法,数学,吴军,idf)