400-685-0732

TF-IDF:传统IR的相关排序技术

TF-IDF:传统IR的相关排序技术

rude 暂无评论
搜索引擎技术

那一年,菊花还只是菊花,2B还是考试时涂卡使用的铅笔,黄瓜只有蔬菜的功能,信息检索技术(Information Retrieval)还只是简单的使用在图书馆、资料库等处。

也正是在那一年,信息检索的相关排序技术很风靡的是TF-IDF。

或许此刻你会十分想问,啥是TF-IDF?嗯,不捉急,在找寻这个问题的答案之前,先来看一个问题。

在一堆书籍里面,你想找寻和OOXX主题相关的资料(不要想歪),你用什么标准来判定这堆书籍里面的A比B更符合你的主题呢?

思考一分钟。

你或许会说,看一下这些书籍的名字,看看哪些书名里面包含我要找的主题的相关信息,然后再在剩下的这部分书籍中概览一下内容,看看哪个更符合我想要的。

想法很好。

人是这么想的,信息检索系统也得这么干才能给出我们最想要的结果,但是一个问题又暴露了出来——程序看不懂文字无法判定。

来,再给你一分钟时间,想想怎么帮程序解决这一问题。

嗯,你发现了,你想查询的主题中所包含的词汇跟这堆书籍中的某个子集内容中的词汇是有交集的。

对,用上次在搜索引擎原理简介的文章中我们谈到的基于词典的分词技术,来找寻交集。

先来给定一个词典,它是N个词的集合。

∑={t1,t2,…,tn}

而对于你搜索的条件q和这堆书籍中的某一本d,则可以根据这个词典表示为:

q={q1,q2,…,qn}

d={d1,d2,…,dn}

其中q1为t1这个词汇在你的搜索条件q中出现的次数,q2为t2这个词汇在搜索条件q中出现的次数,依次类推。如果qn为零,则表示第n个词在q中没有出现。

设定w1=d1/∑dn,则w1即为词汇t1在d中出现的频率,此刻d即可表示为:

d=<w1,w2,…wn>,wi(i=1,2,3,…,n)即为词频(term frequency)。

对于一些质量很高的信息(书籍、文献等),词频是一个很好的,可以通过程序语言实现的,表达词汇在文档中所占权重的方式。

嗯?疑问出来了,一些词比如“我们”、“大家”等这种词汇也肯定会在多篇文章中出现,但是用此来衡量的话显然上面下的结论是不成立的啊。

恭喜你想到了这一步,此种词汇对于文档内容的辨别来说,实在木有太大的意义。

来,找特征,去掉这种词汇的影响。

啊,这些词汇会在多个文章中同时出现。

用ki(i=1,2,3,…,n)来表示ti这个词汇在书籍的集合D中所涉及的书籍次数,M表示书籍D的大小,则ki/M的值即可以说明一些问题,我们定义这个值为ti的文档频率(document frequency)。

显然,文档频率越高,这个词的权重就应该越低。

为了便于计算,常用的会是与文档频率成反比的一个量,我们称之为倒置文档频率(inverse document frequency),定义为:

IDFi=lg(M/ki)

这样以来,wi就变成了(哥从网上找了一个公式)

tf-idf

给定某种权重的定量设计,求文档和查询的相关性就变成了求d和q向量的某种距离,最常用的是余弦(cos)距离(这句话果断不懂,完全复制来的)。

余弦距离

虽然说上面的这个算法在理论上看起来比较垃圾(不考虑文章的意思,将文章看成词的集合),但是从实践下来看,其价值还是得到了普遍的认可(尤其是对于上述提到的图书检索来说)。

当然,对于目前web上这些个鱼龙混杂的网页,仅仅依靠td-idf是不够的(很容易造成一大堆关键词堆砌的网页获得好的排名),这也促成了基于链接关系等一系列算法的诞生。

 
文军二维码

发表评论

今日说说

    问:做什么事情会让你成就感爆棚?

    答:做让你感觉心理畏惧的事情,做完之后你会发现,去TMD,不过如此。

站内搜索