阅读 636

文本获取与搜索引擎中的TF,TF-IDF

coursera课程 text retrieval and search engine 第二周 推荐。

什么是TF

TF(term frequency),根据出现的次数作为权重,出现一次,权值加1。但是仅使用这种方式无法区分重要的词和非重要的词,比如the

什么是DF

DF(document frequency),包含关键词的文档的个数

什么是IDF

IDF(inverse document frequency),指的是一个单词如果在更多的文档中出现,那么IDF值越低,关系可用下图表示

TF-IDF 模型

即使用TF*IDF。
假如TF不计算频率,按最简单的来,有就算1[y={0,1}]。 以下面文档为例,假如想搜索"news about presidential campaign",文档库中一共有3个文档

很明显presidential出现次数多,那篇文章应该更重要,那么可以加上次数做考虑,使用向量空间模型,假设查询为q=(x_1,...,x_n),文档为d=(y_1,...,y_n),那么二者的相似性为 sim(q,d)=q*d=x_1y_1+...+x_ny_n,还是以上面的文档为例可得到

f(q,d2)=3,f(q,d3)=3,f(q,d4)=4

d4更相关可以得到认同,但是d3和d2却一样,有点无法接受,因为presidential的重要性很明显应该比about更重要,也就是说,不同词的权重是不一样的,在所有文档中出现的越多的词,应该重要性越低,可以算上IDF,假设 每个单词的IDF对应如下

再计算各个文档的相关度为:
对于d5文档来说,很明显它关于food可能更多,只是campaign出现的次数非常多,这也不合理,假如使用TF表示在文档中出现的次数,那么根据文档中出现的次数相比,这是一个线性模型[y=x],问题在于,如果假设一个单词出现的过多(而没有有关键字中某些其它重要的词),显得权重过大,因而引入了TF Transformation,我们希望能够随着词出现的次数增加,TF能够变大,但是又不能无限的变大,几种常见的TF如下

对于这种增长的速率,如果能够加入人工的调控是最好的了,据此发现,最好的是BM25

可以看到它的上界是k+1,也就是增长的速率是可调控的,同时,也会提现词频出现越多越重要的这个特性。此时的排序函数为

其中c(w,q)表示在查询语句中,词w的出现次数;c(w,d)表示在文档中词出现次数;df(w)表示包含关键字的文档的个数,即TF*IDF。

为什么长文档需要正规化?

一般说来,长文档更有可能包含更多的词汇,因此它会以相对疏散的方式匹配到查询关键字,但真实主题却不是查询的关键字。这样看来,需要更好的方式来对长文本做出”惩罚”。另外需要考虑到的是,长文档可能存在两种情况,1是仅仅用了过多的词,2是有很多描述主题的内容,这是不希望有惩罚的。总的来说是希望惩罚有一个度,一种策略是使用“摆动长度正规”

使用双ln是为了达到次线性转换(随着TF增加,权值增长相对更慢) 此时的排序函数为

这里b是一个变量,当b=0,文档长度被忽略,当b非0,|d|(文档长度)越大,权值反而越小,也就得到了”惩罚”长文档的目的,当文档太短时,如果包含查询关键字,很有可能主题就是这些,起到适当的激励作用

文本获取(TR)的一般架构

  • tokenization:词提取,确定好词的边界,把相近意思的词映射到同一个
  • index :将文档转换成易于检索的数据结构,一般使用倒排索引(用一个字典存储文档的部分统计信息,比如当前词一共出现在了多少个文档,出现了多少次,这些文档分别是那些文档,那些位置,等等)

Zipf定理

定理表明,一个词出现的频率和他的排序是一个常量