Monday, May 7, 2012

《搜索引擎信息检索实践》 notes 之query transformation and refinement

整理一下最近看书的notes,一来share一下自己的理解,顺便可以交流,二来不让自己的note荒废,乱乱七八糟。没有按照书的顺序阅读,当然到最后有整理一个list,更加有序地列出来。

这一篇是query transformation and refinement,讲述了一下几点

  • stopping and stemming

  • spell checking and suggestions

  • query expansion

  • relevance feedback

  • context and personalization

1. stopping and stemming revisited




  • stopping即stopwords相关的工作,

  • stemming主要是涉及单词多态,找到单词的原始态,甚至是同义词match的问题

这个大家都了解的比较多,不赘述

2. spell checking and suggestions


这二者是用户最常见的query变化的形式了,二者的方法比较类似,区别在于前者的原始query是wrong的或者un populoar的,SE会猜测是不是输入错误了,只给出一个候选,而后者是在用户输入任何queyr的时候,给出top k的候选,协助用户输入的同时给出建议。

形式如下

checking:




suggestion:



二者的方法比较相通,可以概述如下

普通文本最basic的方法是使用拼写字典,计算拼错的word和字典中的word的编辑距离

编辑距离:


  1. insertion

  2. deletion

  3. substitution

  4. transposition

计算拼错的word和字典中的word的距离计算量很大(要有一定的候选),有一些手段,包括一些近似的方法

  1. word A和B的start letter必须相同

  2. 相同或者类似的长度

  3. 发音类似,等(在英语中应用)

得到候选之后就是ranking所有的corrections

  1. 典型的有按照降序排列

  2. 对于搜索引擎,通常只需要best one

需要noisy channel model这个framework来ranking,在language model中,word w的概率分布为p(w),用word occurrence即可。noisy channel为P(e|w)即persion想写w,却写成了e的概率,该概率成为error model,编辑距离长的概率更小,使用的时候对于编辑距离一样的e,概率可以假设相同,而rank的时候使用的是P(w|e),做一个贝叶斯变化即可=P(e|w)*P(w)/P(e),p(e)不变,等价于,P(e|w)*P(w),这个是上下文无关的rank

考虑到上下文有关的,可以考虑二元的贡献,即前一个word的因素,word的language可以使用一个混合的概率模型,即为lamda P(w) + (1-lamda)P(w|wp) wp为previous word,在p(w)相同的情况下,P(w|wp) 利用上下文来判断选择谁
spell checking的流程


  1. 切词

  2. 使用词典和query log等资源寻找候选corrections

  3. 使用noisy channel model选择最好的correction

  4. 迭代上述的过程,知道找不到更好的correction(注意假如迭代多了会转义)

实验表明,query log的language model是correction accuracy中最重要的部分,error model比较次要,但是假如没有使用qurey log(只使用doc集合)的话,error model更加重要,好的实践是query log + application的dictionary,构建noisy channel model query expansion

3. query expansion


通常用于

  1. 搜索的时候会利用query的同义扩展或者相关的query来增加召回

  2. 用户交互界面的半自动化query提示,即suggestion

query expansion技术通常基于word或者term的共现(co-occurrence),集合可以是整个文档集合,query的机会,或者是搜索结果中的排名靠前的一些docs,著名的有pseudo-relevance feedback后续会提到,term association measure在expanseion中非常重要,有以下一些度量

  1. Dice's coefficient = 2*Nab/(Na + Nb) (rank等价于) Nab/(Na + Nb)

  2. 互信息mutual information = log(P(a,b)/(P(a)P(b))),而P(a,) = na/N,因此上式等价于 log(N*Nab/(Na*Nb))等价于Nab/(Na*Nb)

  3. 混信息的期望expected mutual information = P(a,b) *log(P(a,b)/(P(a)P(b))) 等价于 Nab*log(N*Nab/(Na*Nb))

  4. 皮尔逊系数 pearson's chi-squared(x2) measure =(Nab - N * Na/N * Nb/N)^2 / (N * Na/N * Nb/N)

其中2和4偏向于低频的terms

4. relevance feedback


rf是基于query session的,而不是基于历史数据的,即点击数据可能用不上

rf是基于retrieval model相关的假设的,如假设搜索的前几条结果靠谱,从中抽取相关的term来扩展query,进一步去retriveal

事实证明suggestions要比是使用rf要好,目前也更加流行,因此不铺开说了

5.context and personalization


why:起初多数搜索引擎的特点是一个query的返回结果是相同的,不管是谁提交的query,为什么提交,在哪里提交,抑或在同一个session中其他的query是什么样的。然而事实上,我们在提交query的时候,是处在某上下文中的,而这些上下文,不仅影响检索到哪些文档,还影响到如何ranking。而上下文信息往往很难捕捉,或者不能一直保证效果。

1. personalization


user model和user profile

user model和user profile被研究用来代表用户的insterests,以便将搜索个性化。例如:同时搜索“rose”,对花感兴趣的人和对电影感兴趣的人所得到的结果理应是不同的。

然而这种思想有下面的问题。


  • user model的准确度问题。构造user model往往基于用户看过的文档,访问过的web页面,email信息,以及桌面文档等等。然后从中提取term,进行tf,idf之类的计算,最终获取一个term的权重列表。

  • 然而,在这些文档中,一方面用户感兴趣的只是文档其中某一部分,并非文档的全部,另一方面,这些文档仅仅代表了用户的一部分兴趣,而不是全部, 即从文档中抽取的兴趣和用户的真实兴趣的match程度是不确定的


predefined category 

还有的方法询问user的兴趣,然后把user划入预定义的类别


  • 这个方法的弊端在于,喜欢鲜花的人,也可能去询问一个和电影相关的query

  • 因此事先将user划入类别也是不好的,query粒度的category仿佛更好,然而这还不如输入更加确定的query来的方便,如输入rose titanic,而不是输入rose的时候再选择category是film




隐私问题

人们现在越来越关注自己的隐私,建立user profile现在的利弊还不是很清楚(Google+也带来了诟病)


2. context information




  • 利用query log和点击数据来改进搜索,这里的context包括session中的previous searches以及实现挖掘的similar search session(利用统计)

  • local search,从query中识别出location相关的信息,然后和对应的location相关的文档match上,流程通常如下



    1. 对web pages预处理,识别出其中的地理位置

    2. 人工添加的location 元数据

    3. 文本解析,识别出地名

    4. 识别出query中隐含的地理位置,可以通过query中包含的location,或者设备的ip,等。可以通过分析query log,发现包含location的query是非常多的,15%左右,(在中国这个比例更高)。

    5. 结合locatioin信息进行rankking


总结,最有效的是利用past interactions,即query log和session history,而对于location相关的,可以进一步使用local search,而这些工作的目的是对不是specific的query进行expansion,使得更加specific,已达到context和personalization的效果

 

Inside AdWords 中文

blog除草,先推广下维护的AdWords相关的blog http://adwordszh.blogspot.com/

主要翻译Inside Adwords,还有一些关于AdWords的相关分析和报道,当然偶尔也会涉猎一下bing,yahoo,yandex,百度等相关search engine的sponsored search。

维护这个blog两个原因

  1. 做一项翻译工作,而且能够长期坚持(现在看来还凑合 -  -)

  2. 更多了解sponsored search

Sunday, January 1, 2012

盘点下2012-1

流水帐记录大事件


  • 完成论文

  • 拿到驾照

  • 毕业了

  • 北漂,开始在度娘的工作

  • 转正


学业:

写论文的过程非常好的描绘了一幅power law分布图,最后差点没难产。答辩的过程中老板提前走了,没有最终合影成功,算是一个遗憾吧。没有要学校坑爹的毕业照,一来是研究生的生活对于本科来说简直天上人间(别想歪),二来照片做得是在太差,把照片的电子档搞到手之后扔在了box.net,这样大家都好了。



工作:

苦逼的研究生升级为苦逼码农,老人说对比实习时候的我,哥带来的欢乐已经弱于当年(都是苦逼闹的有没有)。吐槽能力和概率下降,流氓能力下降、愤青指数上升。

被扔在海里,结果没有被淹死,然后就修炼升级了,于是在技术上也被升级了。

生活:

校园:

各种happy啊

工作:

说一点北京和南京的区别吧,从生活的总体享受上来说,已经差了一大截了(富二代、官二代、榜上大腿的请无视,四环内同学请绕行)。

空气质量差,当然南京也不好,但是不像北京都TMD的要爆表了有木有,pm2.5吓死人啊,小时候得亏喝过××奶粉、吃过地沟油,要不顶不住。

干燥,这个因人而异,好处是省得晒被子,坏处是夜里都得爬起来喝水,太坑爹了。

以上两点直接导致我颇费3600买了个净化器and加湿器,京东账户直逼金牌- -,不过确实效果不错(已经过滤社会认同影响力带来的判断)

超市贵,特指家乐福,到金润发面前就是个渣。

消费过程中,遇到的服务水平较南京差,当然好处是简单直接

在北京生活的过程中要特别感谢老婆在生活上的造诣,让我得以天天可以得瑟,mua mua mua

其他:

参加过几场婚礼,蒋狗的、哥的、凯子的,还有落下的,老大和马驴的,在这里一并祝福他们

修炼:

肉体:夏季踢球,没有比赛了玩乒乓,天冷了玩羽毛球,来年要健身,ps,期间去滑雪,很赞,发现我还蛮有天赋:)

灵魂:思考时间增多,读了几本闲书、很是震撼,推荐下《叔本华美学随笔》和《影响力》,决定以后多读点好书,入了kindle touch,多读书

Thursday, December 22, 2011

csdn的邮箱

csdn的邮箱丑事今天闹得沸沸扬扬了,更是有网友专门统计了密码的分布情况,我也无聊理工一把,统计下注册邮箱吧 - -

数据:www.csdn.net.sql 6428632行,包含用户名、密码、注册邮箱

top 100的注册邮箱后缀如下:

点评一下:

  1. qq和网易邮箱遥遥领先,这个正符合国内邮箱的现状

  2. gmail.com不是很给力我觉得是晚出生,大家已经用其他的邮箱注册过了,希望这个能够成长

  3. sina和sohu的不给力显然是,在后来体验不行,刚开始还有人用,后来日渐少了

  4. yahoo.com.cn、yahoo.cn数字大概是进军中国的那段时期建立的基础吧,现在也不行了

  5. hotmail.com显然是抱了msn的大腿

  6. 值得注意的是.seu.cn结尾的那些上榜的学校,有上交、西交、浙大等、也是无聊理工居多哈哈,符合程序员分布

  7. 还有huawei.com,看得出huawei的人经常逛csdn啊,内部的wiki不知道建设的如何?


qq.com    1909280
163.com    1740884
126.com    796352
sina.com    348518
yahoo.com.cn    203274
hotmail.com    200273
gmail.com    185130
sohu.com    103293
yahoo.cn    86101
tom.com    71085
yeah.net    52795
21cn.com    49928
QQ.COM    38002
vip.qq.com    34868
139.com    28218
163.COM    25965
QQ.com    25653
263.net    24576
sina.com.cn    18967
live.cn    18656
sina.cn    18523
yahoo.com    18252
foxmail.com    16209
163.net    15043
msn.com    14023
eyou.com    13239
126.COM    11520
yahoo.com.tw    10718
huiseo.cn    8492
csoftmail.cn    7120
citiz.net    6548
vip.sina.com    5333
189.cn    4817
etang.com    4211
chinaren.com    3913
yahoo.com.hk    3857
neusoft.com    2925
wormsoft.cn    2779
SINA.COM    2617
bdqnok-cp.com.cn    2550
sogou.com    2544
live.com    2491
qq.COM    2407
mail.china.com    2154
china.com    2141
mail.ustc.edu.cn    2034
huawei.com    1910
sjtu.edu.cn    1872
vip.163.com    1833
371.net    1788
10pig.com.cn    1781
YAHOO.COM.CN    1718
zte.com.cn    1662
cp-bdqnok.com.cn    1631
company-mail.cn    1554
msn.cn    1491
netease.com    1475
HOTMAIL.COM    1472
uggsrock.com    1362
bjtu.edu.cn    1321
hotmail.com.tw    1311
owlpic.com    1276
siteposter.net    1274
SOHU.COM    1245
2008.sina.com    1170
elong.com    1153
TOM.COM    1054
yahoo.co.jp    1047
x263.net    1038
chongseo.com    1032
bofthew.com    1021
Hotmail.com    996
tyldd.com    991
139.COM    983
fudan.edu.cn    980
marketnet.com.cn    962
newline.net.cn    954
stu.xjtu.edu.cn    928
online.sh.cn    920
msa.hinet.net    919
zju.edu.cn    871
king.com    869
Gmail.com    853
cmmail.com    835
56.com    826
cpok-bdqn.com.cn    817
123.com    801
china.com.cn    795
zj.com    793
fm365.com    758
71mail.com.cn    750
avl.com.cn    739
bdqncpok.com.cn    719
mails.tsinghua.edu.cn    717
21CN.COM    693
GMAIL.COM    690
bit.edu.cn    690
Qq.com    655
mail.nankai.edu.cn    637
lzu.cn    615

Friday, December 9, 2011

使用javascript代码来猜测你访问过的站点

声明:山寨的,来自visipisi

The javascript code on this page attempts to guess if you have recently visited a website by loading an image from the target website. If the loading completes fast (less than 10ms), it is highly likely that it was loaded from browser's local cache as the network latency and speed of most Internet connections cannot deliver sub 10ms speed. If it takes longer, it's not in the cache. To avoid polluting the cache, the loading is interrupted at the 10ms mark. This is important because any subsequent tests will yield the same results.

根据你load的这些站点的image的速度来判断是否从本地cache load的,假如很久,就不是从cache来的。

Although the idea is simple, two factors affect the speed and accuracy of the test: the speed at which the browser loads content from its cache, and the realtimeness of the OS and the browser event system to allow interrupting the request at a precise time.

只是把load的时间由10ms改为了50ms(考虑中国国情)

查看这里:http://www.econsh.com/test_what_u_visit.html