正义推手的机械化大生产

背景: 你在百度/google搜索某个问题的时候,一些社区 SNS 上面的用户的评论,QA等,thumb up/down都可以给用户带来决定性的选择。试想一下,商家是否希望,自己的产品的优点可以随着用户的搜索而进行展现呢?回答是肯定的;

Continue reading

Posted in Uncategorized | 9 Comments

What’s the next??

好久没有写blog了,忙不是借口,但是没有借口是忙也是可以原谅的;

之前有次看rake大师在群里面说,很多技术blog会误人子弟,自己都没搞清楚,就在上面瞎指点,我比较赞同rake大师的观点;

这次咱不说技术;说说下个互联网,会有什么异军突起?

先说我的观点:sentiment analysis + mobile web;

mobile这个啥,我就不说了,现在国内也大力推广3g,再说了,手机不带上网的功能,都不好意思出来见人,mobile的数量已经远远超过pc的数量,并且,它比pc更加和人接近。看看地铁上,公车里,各种公共场合,不管老幼都捧个移动终端,移动互联网不火,敢不敢!!

sentiment analysis可能大家比较陌生。SA说白了,就是从从一句话中来识别说话人的观点。比如“super.jiju的blog太好了!”, 里面就有一个观点:“super.jiju的blog“, 观点是

或许有人会问,这有什么用呢?

当时我在nus的时候,小余同学和我讲了SA,我当时就觉得没有什么用。后来我去了一家公司面试,我没有丝毫这方面的背景,记得当时问我如何来解决SA这个问题,我就套了一个ngram+svm来进行解决。后来进去之后,开始做这方面的东西,读了几篇paper,看了公司的一些业务,忽然发现:这个,他妈的太有用了,是好东西!

  1. 互联网的信息是不是越来越多?
  2. 人们是不是需要获得别人对于某事的观点?比如,你想买个iphone,或者在网上订个酒店,去找个餐馆,你很在意别人的观点。
  3. 我们目前互联网上的数据都是半结构化的,事实上,正好比2进制一样,世界上任何东西,也完全可以用二进制来表示,1表示好,0表示不好,如果有足够多的维数,那么,这个东西总可以被格式化。这样的数据可以做很多东西(基于内容的)。
sentiment analysis就为此而生的。互联网上每天有那么多人关于某些事情,某些产品,生活态度等等的看法,这个时候,这么多的信息,需要SA来帮助其归纳整理,并以一个友好的UI方式展现给用户。
这个产品能成活吗,那必须的;一个平台要想生存,必须互惠互利:用户可以从中得到收益,不管是娱乐的,还是获取知识,都可以。同时,商业也要可以从中获利,从而让平台可以更好的发展。比如搜索引擎最为代表,以及广大的中小站长也赖以生存的网站也是这样的平台。有时候用户可以获得”利“可能是短暂的,比如开心网;能让用户增加粘性的,就是让用户真正的获得所需。要是有个平台,用户登录就发钱,靠,那这平台非火不可; SA的平台友好的将商业和用户结合了在一起。那个啥,你懂得;
那说说SA的现状。现在市面上,不管是research还是工业界,主流做法是rule based ,和分类器之类的。毫不客气的讲,给我一个这方面的demo,随便试一试,就大概知道这个demo是怎么做的了。也就是说,目前的状态,虽然是百家,但是没有争鸣。
所以机会还是很大的。就好比90年代,搜索引擎受到大家热捧(其实information retrieval在70年代就已经被研究了貌似),yahoo这个需要人工堆积的SE的市值那是如日中天啊。当时还有很多搜索引擎公司,比如infoseek等等。多如牛毛,后来还不是Google给收拾了。记得中间有个小故事,G家做出个东西,要卖给某司,某司CEO还是啥看了下,说,你丫这个搜到太好了,用户都不在我的网站上了,不要!! 其实也不能说这个CEO不对,只能说这个CEO的眼光太超前了!!
SA也是这样,需要有个人来收拾一下这个百家混战的局面。其实目前也没有混战,只是说,百家都在偷偷摸摸滴做,基于b2b赚点钱。
本可以贴几个比较不错的这方面网站的,不过不想给他们打广告,我就不贴了;
最后,想整个SA相关的小团队。大家没事聊聊这方面,按期更新一些blog啥的;
回家睡觉;
Posted in Uncategorized | 3 Comments

Hello world!

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

Posted in Uncategorized | 1 Comment

分词的那些事(二)

分词的应用背景

也是基于上面两种情况来说吧。
先说基于信息检索的。根据我们前面的了解,可以知道这个分词在除了切分精度之外,另外一个重要的特征就是保证切分的一致性。比如说:用户搜索时候输入的query中包含的某些词 和 这些词在网页中的环境是不一样的。所以,这个时候,为了能搜索到相关的网页,切词一定要保证一致性。比如“北京市长是谁”,用户的query为“北京 市长”,搜索引擎就切分成“北京”“市长”,如果在网页中“北京市长某某”切分成了“北京市|长|某某”是肯定搜索不出的。
说到这,想起一个问题,大家关注中文切分的时候,可能会有这样的疑问,为什么用HMM CRF切分的精度能达到95%以上,但是很多搜索引擎公司不用呢,还是用最大匹配来做。速度是其中一个原因,另外一个就是,基于上下文相关的统计切分方法在保持一致性的时候做的不够好。当query文本和句子文本存在差异的时候,会造成搜索不到。但是,如果用户query和网页都切错,但是还是保持一致,却同样可以找回网页。
这里不是说统计切分没用。统计切分有用,只不过在应用于搜索引擎的时候,要换个思路。比如在切分的时候,输出多种切分结果,比如上面“北京市长”还要切分成“北|京市长”“北|京|市长”和“北|京|市|长”,然后多建立索引,不管用户的query语言环境是怎样的,搜索引擎总能找到对应的那部分。当然了,解决的办法有很多,上面只是比较直接的想法。

第二个应用背景就是切分可以帮助机器来理解句子。这个应用就很多了,在英文里面,大家经常看到phrase based的某某方法,都是需要切分的;包括很多关键词提取等等都是需要切分这个模块来实现。
也可以换个角度来看这个问题。中文切分里面有个方法是最大匹配,根据我们的经验或者联合分布概率or信息量等来说,phases相对于words来说歧义性要小一些,长的phrases要比他的subphrases的歧义性要小些。因此在处理很多歧义问题的时候,也需要切分(处理歧义问题也是理解语言,哈哈)。
对句子分析的时候,nlp里面有个topic叫chunking。它是基于词性句法来将一个句子切分成若干块。这个方法也是目前做英文句子切分中用到的非常广泛的方法。由于句子有很好的句法结构,因此,在切分句子的时候可以充分地利用词性以及句法结构,而不是单一的运用词典、统计/机器学习方法等。稍微说下两者的区别:理论上说,如果学习语料足够多,任何一种基于语法、或者heuristic的方法都可以用统计、机器学习来做。但是由于各方面的限制,因此利用人的总结出来的知识来辅助学习,效果比单纯地用statis ML要好些。在切分这块,日本有个切词工具MeCab,就是利用了相关句法知识,做得也不错。
但是在处理互联网的语言的时候,在处理用户query的时候,这个方法就显得有些力不从心了。对此也有个专门的topic,query segmentation。query segmentation就是根据语义对用户的query进行切分。这个主要针对英文的。有兴趣的大家可以看看。下面我会把这个方法放在切分方法里面一起介绍。

Posted in Algorithms | 3 Comments

分词的那些事(一)

分词的那些事

By
Super.Jiju

好久没更新blog了,前天为了让群里面的技术气氛活跃点,以及也整理整理自己的一些知识以便与大家交流,所以我把分词的前前后后介绍一下,希望大家多多指教。


分词是中文自然语言处理里面最基础的工作,因此大家说到中文信息处理的时候,都会说到中文分词。事实上,切分的思想是没有语言边界的,下面从我的理解分别说一说分词的前因后果。整个介绍分为分词的需求背景,分词的应用背景,分词的常用方法,分词的相关不足及其改进策略,概述等等。欢迎加入 Web Mining & Search QQ9826518

分词的需求背景

分词不同的应用需求对应这不同的需求背景。比如说,分词最基本的功能是帮助计算机来理解句子。计算机本身擅长做的工作就是匹配,却无法知道如何根据语义去匹配。这个时候就需要分词来帮助他。对于一个句子来说,如果按照组成成分进行切分,那么计算机在读取这些组成成分的时候,一定程度上相当于“理解”了这个句子。举个例子来说,假如有个句子“分词的那些事”,计算机在读入这个句子如果想“理解他”,比如让他“理解”这个是什么意思,是说“人文”,“地理”,“评论”,还是“科技”。那么通过向量空间模型(Vector Space Model)
计算机为该句话建立了一个向量,在其中6个字对应的位置上都有每个字对应的tfidf。最后计算向量之间的相似性,来判断这句话到底说的是啥类别的事。这样做的效果可能不容乐观,因为是仅仅字面意思的匹配。如果通过分词得到“分词||那些事”,然后再一次建立VSM,结果就不一样了。所以,通过分词,让计算机假装理解了我们的语言。

在这个层次上,分词是无边界的。中英文都需要通过这个手段对句子进行切分理解。这方面有个单独的topicchunking,就是把句子分成几块。在中文中,这个也是以切分为基础的,在英文里面因为不用切分,因此可以直接通过词性句法进行处理。因此很多research中带有phrase based的方法,大多都是利用了这一点。

 

再说另外一个需求,在中文搜索引擎中,需要分词。当然前面说的分词的可以有助机器理解的功能在搜索引擎中是重要的,但是除此之外,分词另外一个功能是降低中文搜索引擎的性能消耗。我们常用的汉字有5000多个,常用词组是几十万个。在倒排索引中,如果用每个字做索引的话,那么会造成每个字对应的拉链非常长。所以我们一般会用词组来代替字建立索引,这里面的词组也就是英文里面的words(说个极端的比喻,为啥英文里面不用128ascii字母做索引,一个道理)。在这么多家搜索引擎公司中,应该以G家的切分粒度最小,原因是G家的计算能力很强,这种小粒度下最大的好处就是保证召回。当然对后期的rank也有一定的影响。

大多数情况下,分词简单的说是对一个输入片段进行有效地切分,让每个切分片段都能表达一个意思,并且尽量表达一个意思。


下一节:分词的应用背景。


Posted in Algorithms | Leave a comment

大牛是如何成长的?

刚刚和一大牛聊天,聊多了,大牛就给我说说了他的成长历程。
绝对大牛!

先从我目前状况说起的。大牛说:07以前的B公司,那时候人少,新人容易脱颖而出, 基本上的情况是,不怕没有事情做,就怕事情搞不定,不怕没有机会表现,就怕能力不够表现不了, 实践是最好的学习。

然后大牛说了他3个成长经历:

1. 在著名的M公司;独立做了某算法,而且成功release。算法本身不难,主要花的时间也就1个月。但是是第一次从头到尾自己一个人把一个产品的核心功能给做出来。 这一次的收获主要是信心,知道自己是可以做事情的。但很快就碰了壁

2. 被B公司挖去了。大意:大牛说,自信心膨胀,然后开始做项目的时候,没有规划,没有明确的应用思路,没有从别人的角度来考虑问题,于是,3个月,在执著的解决不可能解决的问题。 3个月后,醒悟了。从此明白了做项目的原则:
简单的说,就两个点。

一是分解,就是把项目的目标分为多个阶段,每个阶段顶多解决一个难题(比如说第一个阶段做数据挖掘,那挖掘出来的数据的应用算法就尽可能的简单做,能体现本质即可)
二是递进,以战养战。每个阶段的成果(无论是对是错)都为下一个阶段做铺垫
第一点是最难的,新手往往好大喜功,喜欢规划一个很诱人的目标,但是压根儿找不到走过去的路
老手往往过于谨慎,而过于注重短期收益,过分强调“短平快”,结果小心翼翼走完第一阶段,发现该验证得东西没有验证,该明确的东西没有明确,结果后续的路也就越来越难走

3. 做某个team的leader:期间的收获主要有两点:
 1. 发现了自身的一大问题,就是太凭借自己的兴趣做事。所以会虎头蛇尾
 2. 在此之前,我觉得带人方面,给宏观的指导就够了,所以忽视了很多“点”上的把握

加黑那段很受用,虽然目前还不能很好的消化。
嗯,要多多努力,向大牛看齐!

  

Posted in Web mining and Search Engine | 1 Comment

Talking about 本年度CVPR最有趣的文章

 太威武了

转载过来

这些做research的神啊

Click to access gestalt.pdf

啥idea都能想到

Quote

本年度CVPR最有趣的文章
在今年的CVPR,见到了很多朋友,也看到很多Paper。

在这次会议里面让我最喜欢的一篇Paper,却不是在会议中正式发表的,而是在TC Panel派发的。这篇Paper的题目叫Paper Gestalt。文章以诙谐的笔调描述了一个基于vision + learning的自动paper review算法。

参加会议的朋友们可以很幸运的在会场获取这篇文章,至于没有来的朋友,我想只能向作者(这位兄弟(也许是姐妹)在paper中自称Carven von Bearnensquash, bearensquash@live.com)索要了。

这篇论文出炉的背景,就是最近几年CVPR或者ICCV的submission呈现急速的指数增长的趋势(在过去10年翻了三倍)。按照这个速度增长,在 10年后每次会议的投稿量就会超过5000篇!也许最好的办法是采用“货币杠杆”进行“宏观调控”——就是对投稿者收费。比如,对每个 submission征收100美元的费用,我相信对于投稿的数量和质量都会取得立竿见影的效果。一方面,很多纯粹是来碰运气的作者会掂量一下花100块 钱来博取1%的命中机会是不是值得;而持认真态度的作者则会对paper精益求精,免得投稿费白白浪费;而最终文章被录用的作者就可以减免注册费,会议方 面也有更多的funding来给有志于为Computer Vision奋斗的学术青年发放参加会议的路费。一举四得,何乐不为,呵呵。

当然了,涉及到钱的问题,自然要经历很多微妙的利益博弈——这些事情还是让Chair们去担心好了。这里,我们还是继续“奇文共欣赏”吧。文章的算法很简 单(前提是你对Machine Learning或者Computer Vision有一点了解),把8页的pdf文档并排成一张长的image,然后就在上面抽feature。做自然语言处理的朋友们请不要激动,这是 Vision的paper,自然用的是Vision圈子自己的方法。好了,抽什么feature呢?主要是HOG(Histogram of Gradients),这是一种纯粹用于描述视觉观感的feature。显然,大段的文本,曲线图,图像,表格,数学公式,它们的feature应该是不 太一样的。然后作者用AdaBoost做feature selection训练得到一个分类器:纯粹根据paper的视觉观感来判断paper的好坏。

说到训练分类器,自然需要一个训练集。这篇文章的作者收集了CVPR 2008, ICCV 2009和CVPR 2009的全部1196篇paper构成正样本。那么负样本从何而来呢?被拒的paper显然作者是拿不到的。于是他很聪明的利用了一个众所周知但是大家 却不会公开明言的事实:workshop接纳的很多是在主要会议被拒收的paper。这样,很不幸的,workshop上发表的文章被用作负样本。在 Workshop上发表了论文的同志们不要打我——我只是讲述一篇别人的文章,这个主意不是我出的。

最有趣的部分要数实验结果了。从ROC曲线来看,结果其实还是不错的——以拒绝15%的正样本为代价,可以滤除一半的负样本。作者对于正负样本的特征做了 一些总结,也许对于大家以后投paper还是有点指导意义呢。。。

正样本的“视觉”特点:
1. 里面有几段公式,看上去文章显得似乎很专业,也显得作者似乎数学不错;
2. 实验部分里面多少要有几个曲线图,即使那几个曲线图说明不了什么。但是,只要有几个曲线图在那里,起码表示我做的是“科学实验”;
3. 最好在文章开头或者最后一页排列一堆图像。其实,我也注意到很多作者喜欢排列很多dataset里面的图像到paper上——即使那是一个 publically available的standard dataset——我不知道这样做的意义何在——除了审美效果。
4. 最好写满8页,代表分量足够。

负样本的特点:
1. 不够页数。在submission阶段,写不满6页的文章被录用的机会很小。虽然最后很多本来8页的文章还是能很神奇地被压缩到6页,如果作者想省掉 200美元的附加页费。题外话,我也一直不明白为什么多一页要多交100美元注册费。
2. 有很大的数字表,就是m行n列,排满数字那种。这篇文章表明,排列了很多曲线图和柱状图的文章比排列了很多数字表的文章有更大概率被接收。
3. 没有漂亮插图。

这篇文章的结果,我也做一些补充评论。
1. CVPR和ICCV的录用结果,对于文章的视觉观感,有着显著的统计相关。从我自己做Reviewer的经验,以及和其它reviewer的交谈来说,这 个确实在一定程度上影响了reviewer的第一印象,甚至是评价基调。一篇文章在first glance给人以专业和有内涵的感觉,会有利于它在reviewer心中树立良好印象。这与学术无关,但是,很不幸,却是一个普遍存在的事实。

对于NIPS这种理论取向的会议,虽然不需要那么多漂亮的图表,但是,文章要“长得”像这些会议的文章。让人觉得写文章的是一个有经验的研究者,而不是一 个打酱油的。

2. Workshop的文章和CVPR/ICCV主会似乎存在明显差距,以至于一个如此简单的分类器都能够在区分它们的任务中取得不俗的成绩。另外,作者使用 workshop paper作为负样本的做法虽然是个人选择,但是,起码在一定程度上反映了这个community对于workshop的态度。

3. 近年来CV paper的投稿量的高速增长,已经严重影响了review的质量。一方面,会议不得不邀请许多没有很多经验的学生参与到review的过程,即使文章是 发到senior researcher的手中,最终还是会被传递到他的某个刚入行的学生那里作为学习reviewing的“牺牲品”。我甚至听说过有reviewer为了 应付due date,把文章交给秘书或者亲戚来审,其结果可想而知了。另外,reviewer也没有足够的时间来仔细的审读paper。很多情况下,读完 abstract和intro,大概翻翻实验结果以及文章的插图,已经基本形成对文章的定性。如果reviewer喜欢这篇paper,它会根据作者的 claim对文章表示赞赏;如果不喜欢这篇文章,就会找一些似是而非的理由把文章拒掉。

当然了,最后我们还有rebuttal,然后由AC meeting来确定文章的生死。Area Chair大多是成名学者,个人的学术水平还是由一定保证的。但是,他们非常繁忙,AC meeting虽然目的是给每篇文章一个decision,但是在一些AC的心目里,这主要是一个旅游和social的机会。大部分的final decision就是根据review结果照本宣科(一个不成文的规矩是review rating的中位数是2作为录取划线标准)。另外,AC大概会看看abstract和rebuttal,然后酌情裁量。

Posted in Web mining and Search Engine | 4 Comments

小小体会

好久没有更新blog了
上来发发牢骚;

nlp方面吧,其实感觉学到一定程度,感觉什么都是一样的了。很多任务没啥区别,无非就是分类,聚类,相似性,标注,等等基础工作。只不过在不同的应用场景下可能要赋予不同的应用策略。看了很多paper也是如此,来个假设,嗯,这个假设好,idea牛,然后做做实验。我不否认实验的有效性,可能很多时候,实验的选取太单一了,不具有广泛性。

有的时候想,做nlp的话,如果大家都慢慢熟悉了,或者基本上理解做nlp的一些套路,这个方向一方面会得到快速的工业化进展,另一方面可能那时候,是个做互联网的,都会去较好的处理nl相关问题。那么现阶段应该做些啥呢?

以前,我的潜意识是这样的,如果做一个东西,处理一个问题,总希望有个漂亮的解决方案,一气呵成。可能是真实世界的太混乱,还是根本就没有啥完美或者接近完美的算法。真正应用起来的时候,可能需要很多heuristic的rule来搞定。在之前我还是蛮不喜欢这些方案的,现在还是,不过这些方法的效果某些程度上还是不错的。

简单说说几个例子。
我做了个挖掘新词的方案。最初得到一个新词候选集set,准确率大概是80%+,另外有不到20%是短语,半截词等等。这个时候你要想办法将20%的这些垃圾词去掉。详细可以搜索下nlp@newsmth. 这个时候,也有假设,也有理论,听起来真的是那么回事,如果在某个数据集上效果也不错的话,包装一下,一篇paper就这么出来了。可是实际的情况不是这样。用熵的方法,效果是一塌糊涂。反而不如我自己根据一些简单的统计特征筛选一下。后来我又发现,其实很多2 3 个字的候选词几乎就是正确的。由于我完美心理作怪,我是不大乐意把这些短的候选词先抽出来,然后在剩下的候选词中进行筛选的,一直希望在某种程度上找到一个通杀的最优解。关于这种串行的解决方案的效果,我在上一次也感受到其威力,也就是在对query进行切分的时候,不同长度的query,应该选择不同的切分策略。

我不喜欢把一个大问题拆分成很多细节去处理。总是以为会存在个较好的方法可以很好的来把握这个问题,而后,可以靠一些rule或者其它办法来在一定程度上弥补这个大框架的不足。而不是一上来就把问题拆分成很多小部分,我总是不停的想,这样拆分有意义吗。
呃,这个应该是并行。

说说第二个例子,
怎么来判断一个句子是问句。我没做过QA。由于需要,我想把query log中的QA性质的query尽量删除。感受了下,其实基于找疑问词的方法或者“?”,在加上一些阀值来过滤效果感觉是很不错的。
如果是换到research的角度,就是个分类问题。那么就要做feature selection,其实上面的那些疑问词就作为了这里面的features。有的时候,用这样的features显示不出来自己水平的牛逼,所以,多整些features,但是具体那些features能带来决定性的作用,一般paper里面应该不会有说。paper总是为了作者的idea、假设服务的。

感悟下,看到很多人经常问各种各样的问题,追求各种各样的model,但是很少见人说说这些问题,这些model有啥本质的理解。

Posted in Web mining and Search Engine | 9 Comments

出来混,迟早要还的

今天以老乡在看算法导论的时候给我发了一段话,深有感触。

读《算法导论》时常有这种想法:当读到一章比较难懂的部分,如大段的数学证明,或者题目很难做,这个时候就会没耐心去读,或者草草带过,不求甚解,有时干脆跳过不读~但又心存愧意,觉得碰到晦涩难懂的就不去钻研而选择逃避,实在不该。于是就告诫自己,下一章一定要一页一页仔细看过去,然后就匆匆地读完这章余下的部分,满怀希望地奔向下一章。结果下一章又会碰到类似问题,于是就采用同样做法,跳过难懂的部分,寄希望于下一章。我想,要这么下去,肯定会心存愧意地“看完”这本书,而收获也会不多了。 
 我不禁想到现实中的一些事情,我也曾采用同样的做法去对待。比如这个星期不够努力,没做什么事情,等到周五回想起来,心存愧意,然而却又不想立即奋发,心想都已经是个烂摊子了,我暂且熬过这几天,等到下周一再开始吧,下周一开始一定要奋发。恶性循环就会这么开始。等到学期结束,发现自己这个学期都没做什么事情,然后后悔一番,告诫自己下学期一定要努力。
 困难时,总会想到逃避,不去面对它,拖到最后,然后寄希望于下一个开端,一个致命问题。
 遇到困难,要积极去面对,即使艰难,即使前行会变慢,不要逃避!我想,当解决了困难时,会发现,原来突然前进了这么多!

想想自己在求学过程中,无数的困难就是这样被自己心存愧疚的逃避过去。数学课程里面的定理证明之类的,我总是在某个不恰当的时候告诉自己,理解就好,理解就好。在刚接触linux的时候,也友善地提醒自己,不急慢慢来;还有写程序,心存着对c的畏惧,而始终选择用cpp;不会makefile,也就一直习惯用Visual studio…;

这么多年过去了,发现自己在这方面仍然停留在当初的水平上。

今天折腾了一天的makefile,总算稍微理清头绪了。
借这个机会,再次告诫自己,不能畏惧困难,要知难而上,然后才能提高,才有有所收获。否则,出来混,迟早要还的。失望

Posted in Feeling | 4 Comments

Love the facial expressions!

Posted in Entertainment | 3 Comments