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=(
,…,
),文档为d=(
,…,
),那么二者的相似性为 sim(q,d)=q*d=
+…+
,还是以上面的文档为例可得到
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定理
定理表明,一个词出现的频率和他的排序是一个常量