首页 > 其他 > 详细

班课5

时间:2020-10-28 19:54:38      阅读:52      评论:0      收藏:0      [点我收藏+]

1. ranked retrieval

是free text queries形式,不需要query语言,直接输入要找的单词就可以

2. 做rank的前提是可以进行排序,如Jaccard Coefficient

jaccard(A, B) =|A∩B|/|A∪B|,即两者重复的单词数量比上二者总共的单词数量

jaccard(A, A)=1, jaccard(A, B)=0 if A∩B=0

但是这个方法并没有考虑一个单词出现的次数;很少出现的单词比大量出现的单词更具代表性,但是这个方法并没有考虑到这一点

3. bag of words model:将每句话打散成独立的单词,不关注单词出现的顺序

4. term frequency: tft,d指的是单词t在文章d中出现的次数

5. document frequency即一个单词在多少个文章中出现过;inverse document frequency即idf指的是log(N/dft),N是一共的文章数量,用它除去document frequency

单词出现的次数越少,idf越大

6. tf-idf weighting

技术分享图片

对query与文章同时求tf-idf,然后求两者之间的差距

但是不能直接用欧几里得公式,要用下面的公式

技术分享图片

7. 计算cosine score的最后一步要除以length,即normalization;然后取top

简单理解就是对每一个query,求每个文章对应的score,取top

8. document使用lnc,代表log形式,no idf,用了cosine normalization

query使用ltc,代表log形式,使用idf,用了cosine normalization

9. effienct cosine ranking

快速计算+减少需要计算的数量

优化1:unweighted queries,即不对query本身进行计算,只看document本身,加快速度

优化2:max heap,binary tree的一种,父节点一定大于子节点,但是左右两个子节点的大小没有规定。构建的时间复杂度为O(n),找到前K个最大的值的复杂度为O(K*log(n)),因为每次遍历的时候走到最下面一层的复杂度为log(n),需要找到前K个

优化3:min heap,将最小的data放在最上面,即子节点总是大于父节点;tree形成之后,只要将位于root的最小的点pop掉就可以了;时间复杂度为O(n*log(k)+k*log(k))

10. query processing

document-at-a time:一个document一个document的处理,即对于query中的第一个term,首先处理array中的第一个文章,结束之后处理第二个。。。

term-at-a-time:一个term一个term的处理,首先处理inverted list中的第一个term,将出现该term的所有document都处理完再做别的term

第二个磁盘利用率更好一些

conjunctive TAAT:所有单词都出现在document中才能进入rank,只重合了一个单词不算

conjunctive DAAT:先做Boolean查找再做rank

11. maxscore methods:将每个term的最大值从大到小排序,假设要求top3,r‘是top3中最低的分数,若其中一个term的最大值比r‘要小

any doc scores higher than r‘ must contains at least one of the first 2 keywords

跳过个别单词

 

班课5

原文:https://www.cnblogs.com/eleni/p/13874752.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!