February 25, 2005

百度硬盘搜索分析

16:05 on Friday February 25, 2005 | 1 Trackbacks | 18 Comments

百度硬盘搜索将于下周一推出颇受注目的[百度硬盘搜索],说瞩目,原因是在搜 索引擎大比拼的时代,能否吸引用户,吸引了用户后能否守住用户,现在似乎大 家的共识是在桌面上了。而这一款硬盘搜索也将逼迫同行业的中文搜索引擎们要 考虑如何巩固市场的问题了。 百度硬盘搜索下载 在使用了几天的百度硬盘搜索引擎概括的看起来有如下的特征: 1] Google Like 就是从设计风格上和理念上都沿袭了google 的硬盘搜索产品,趋同设计或者 copy strategy是现在一个减少开发成本减少创新成本的绝招,这点上百度做的非 常到位。 2] Baidu Style 当然,是中文产品,就有中文产品的特征。突出的特征有两个: 1.中文分词--这个简直是废话!不能分词不就是google 硬盘搜索了么? 2.加密码功能。这个功能很体贴,因为加了密码就在一定程度上保护了个人隐私, 对于中国现在还不能人手一台电脑的国情考虑的比较周到。 3] Something whoops. 1. 图片搜索 没有能给出缩略图,这样的话这个功能显然就型同虚设了。而且最重要的是,因 为图片搜索在网页上的算法跟本地的文件系统的算法的差异很大,因此这个功能 应该说开发的不算好。 2. 长结构的语句搜索,硬盘搜索的分词系统不如百度网站本身的好。 这点上等下我有两张图可以做对比。我想百度的硬盘搜索并没有完全采用百度网 页的分词算法,因此可以从长句子的查询中得到结果,本地的硬盘搜索是先对长 语句进行分词后进行“and”的查询结构,查询后没有进行进一步的“=”的验证。 4] Something cool. 1.索引的快速。我0.8G的笔记本平时运行个PPT都只喘气,20分钟内百度硬盘搜索 索引了6000多个文档。搜索起来也非常的快。 2.能够方便的索引中文word/ppt/pdf/xml/..... 并能够清晰的区分的方式显示 搜索结果和数目。 百度硬盘搜索能够占领多大的市场? 这点上我没有概念,在百度硬盘搜索之前,我曾经使用过几个硬盘搜索工具,中 文的硬盘搜索例如 88data.com ,就做的相当不错。不过市场还没有做起来,因此 88data到现在的搜索量看起来还是一个可怜的数字。 百度的客户端一直做的不错,以前的百度下吧我曾经用来下过一阵子电影,不过 后来没有了Windows Desktop就算了。百度下吧显然没有百度硬盘搜索要容易推 广,一来下吧有竞争对手无数,二来总有侵犯版权的嫌疑。而这个硬盘搜索则是 毫无后顾之忧,而且能够固化用户的忠诚度,估计会大力推广。 百度硬盘搜索能有其它玩法么? 当然了,这里我就说说一个利用百度硬盘搜索制作个人搜索引擎的方法,如果你 有两台空闲的计算机并且在同一个局域网内的话: 1] 请你准备一台Linux 计算机,这台是做爬虫用的和搜索引擎的前端。 2] 请你格式掉另外一台计算机,从新安装全新的windows系统,安装上百度硬盘搜索。 下面配置Linux 服务器 3] Linux 上建立一个目录专门用来存放抓到的网页,并启动爬虫程序 4] Linux 上将这个目录采用 samb 的方式输出 5] Linux 配置Apache 的前端,作为搜索引擎的入口 6] Apache 采用Url rewrite到 Windows 计算机的7887端口进行真正的请求 下面配置Windows服务器 7] 在windows上联结 Linux 上的Samb 的输出,挂上这个Linux 的输出目录,映 射到本地 8] 下载安装百度硬盘搜索,并运行索引 返回到Linux 服务器 好了,这台Linux 服务器就可以进行搜索引擎服务了,改变你自己的 page style就可以做成自己的搜索引擎了。 好了,下面是我自己使用的硬盘搜索的快照。...



February 23, 2005

搜索引擎SPAM的检测方法:供BSP参考

1:23 on Wednesday February 23, 2005 | 1 Trackbacks | 6 Comments

经车东提醒,我也注意到现在很多的人采用blog系统进行网站优化,情况已经到了非常严重的地步了。 例如你在google里搜索天下无贼免费电影下载,您一定会失望,而且您会发现一个“有趣”的现象,几乎第一叶的10个全部是blog相关的,点击进去后才发现原来是利用blog 进行 link farm从而进行提升网页流量最终为特定的网站获取点击的做法。 这个做法凸出利用了各个BSP(博客托管)服务商的首页Page rank比较高的原因,在加上良好的inbound link和outbound link以及多个BSP下的blog所构成的Link farm,已经"成功"的将自己做成了我们定义的search engine spam的一种。 我最初的想法是在整个bsp的数据库里进行搜索,判断这个用户有多少个links out并且[Text length/# of Links]来进行筛选,但是后又想到这个需要遍历整个数据库,太不化算,最终想到了一个比较简洁实用的做法: 在google 里搜索 blogchina yculblog blogcn site:blogdriver.com就可以一把将blogdriver.com 里所有的Link spam 找出来,通理适用于blogcn.com,和blogchina.com以及任何的BSP,并且也适合于其它的搜索引擎。 例如在中搜里搜索link spam的情况:donews yculblog blogcn site:blogdriver.com 当然,上述的方法除了可以查询link spam之外还可以从侧面看一个搜索引擎防止spam上所做的努力。 已经开始在blogdriver和blogchina上清理link farm了,未来这两个网站将不再是SEO作弊者的地方。...



February 22, 2005

卢亮博士学位的声明

12:58 on Tuesday February 22, 2005 | 0 Trackbacks | 10 Comments

事情过去很久了吧(一个多月了),我想我亲自来澄清一下一些新闻里关于〖博客中国和博客动力〗合并的事情上面有关我的学历的错误。 我许久不愿意说这些事情,因为〔博客中国〕发表关于网站合并声明的新闻稿我并没有看到,上面的错误当天已经经过新浪造成了雪崩方式的转载,等我看到各个新闻转载站点的以讹传讹的时候,已经无法阻止了。这点以后我会在加强博客中国的对外宣传管理上下功夫了。 只所以挑选这个时候来对我自己进行一个说明,主要原因是不想在当时的情况下火上浇油,这并不表明我是一个软弱的人,更相反,我有我的原则。看到很多人大义临然去谈一个人的人品的时候,我想说去谈论别人人品的事情千万不要这么轻率地去做,因为这无疑会使得别人一同样的方式来谈论你,而且最好要对自己的人品有所认识。 这里来澄清两点: 1. 本人卢亮,现在就读于美国Texas的Dallas的Southern Methodist University(SMU) 物理系,预计今年5月完成博士学位,因此正确的说法是博士生。 2. 本人卢亮,2000年8月至2001年一月在Texas A&M University读书,期间获得恭亲王奖学金,一学期后转学到SMU。 之前或者更详细的简历请看这里:个人简历-卢亮 ,有疑问请发email 给我:sixwings # gmail.com ,有人说我学识/技术很差,这一点我不做辩解,因为学海无涯,我本一做技术和设计的人,知道这世界上牛人多如牛毛,我虚心接受便是了。 这位仁兄 指出我的【搜索引擎研究】内容肤浅,我自当接受,希望未来能够做出让这位仁兄看的上眼的东西。 感谢不少认识的和不认识的朋友给我提醒和帮助我辩护,然而希望以后还是不要进行这样的辩护,因为为我辩护而被划归一类并被上黑锅就不好玩了。...



February 21, 2005

中文Blog Top 100走势分析

16:04 on Monday February 21, 2005 | 1 Trackbacks | 8 Comments

中文Blog Top 100走势分析 。这是一个很初期的版本,纪录blog/博客中哪些联接在过去24小时被点击的最多(排除了搜索引擎)。 当然,这个统计不够全面也不权威,只有加了Booso 反向联接代码的才能够追踪到。 这是一种发现流行趋势的简单做法,未来将公布类似 Baidu top50 类似的关键词等等一系列的东东。 一个令我自己意想不到的事情:查查全中国有多少人的名字和你一模一样这篇日志一共被转载了5000多次,在仅仅2/3周之内,流量也合计超过了100万。看来正经的文章大家不喜欢看,反而是副产品却能走红。...



February 20, 2005

简并算法:文本自动聚类算法的实现

16:35 on Sunday February 20, 2005 | 0 Trackbacks | 14 Comments

基于文本的信息自动聚类的算法很多,我以前介绍过一些,比较流行的算法有我以前提到的KNN和SVM,在过去的一段时间里,空闲的时间基本上都用来研究能否快速的实现自动聚类。上周终于完成了文本自动聚类的兼并算法,能够相对快速的实现文本信息的自动聚类。下面就介绍一下信息自动聚类的实现,希望能够帮助大家了结google news 的新闻如何进行自动聚类工作。 1] 什么是简并算法 简并算法是指在文本信息空间内寻找任何两个最相关的文本信息,并将之简并成一个文本信息,从而实现信息数量的收缩。 2] 如何实现 1. 简并算法的实现通过比较整个信息空间内的所有文本的相关性(相识性),得到相互之间的相关性后两两(注)进行配对。配对的要求是这两个文本信息的相关性最大,例如A 找到了文档B,那么B 也一定找到最相关的文档就是A 。 注,某些情况A 最相近的文档是C ,那么B 而B 最相关的文档也是C ,存在一种情况,A,B,C 三者之间自恰,就是构成空间信息最近的一个三角形。 2. 得到了最相似文档后,将只进行平均化,或者简单的迭加。 3. 信息空间中独立信息的数量会减少到原来的一半以下,然后重复实现1 的过程,在进行兼并。 4. 信息最后简并到唯一的一个信息,就是整个信息文本的平均值。 5. 画出信息树的结构,就能够根据要进行规模不同大小的聚类进行自动聚类了。 如下的信息树结构是对我进行测试的一个小样本大约70个文档进行信息简并算法得到的图像: 完整的树结构可以看这里: 从上图可以看出,经过自动聚类后类别0,2具有最相近的关系然后进行兼并后和类别5进行了简并,然后在和类别6进行了简并,最终和另外一支的信息进行了最后的简并,聚成唯一的全部的信息简并。 图中矩阵的明暗表明了信息之间的相关程度,矩阵经过对角化后可以明显看到聚类的效应。 本试验的文本信息和分类结果下载: 下面是我进行文本聚类的文档公布下载『一共70个文档』,我产生的文本的相关性的矩阵下载。 简并算法我也实现在大样本的聚类上,大约2000个文档进行自动的分类后进行聚类的运算时间大约为2个小时「抱歉,我基本上是用shell scripts 和perl scripts 来写代码」,如果先进行聚类在分类大约要5个小时。 最耗时间的过程是产生相关性矩阵,2000X2000有400万的元素,当然不会那么快了。 经过实践,简并算法的自动聚类还有很多需要改进的地方,例如最关键的是信息之间的相识性的计算,我采用了最大似然(Maximum Likelihood Fitting)的拟合,在计算上比较消耗时间,以后可以改变成其它的算法。 文本的自动聚类可以看到Google New上面已经相当成熟,这里的简并算法未来将为博客中国的新闻搜索提供支持,希望能够提供较好的机器新闻。 - 卢亮 2005年2月20日 参考文献: Yiming Yang, S. Slattery and R. Ghani. A study of approaches to hypertext categorization (ps.gz) Journal of Intelligent Information Systems, Volume 18, Number 2, March 2002. Yiming Yang and Xin Liu A re-examination of text categorization methods. Proceedings of ACM SIGIR Conference on Research and Development in Information Retrieval (SIGIR'99, pp 42--49), 1999. Soft Clustering Criterion Functions for Partitional Clustering Ying Zhao and George Karypis (A poster paper appears in CIKM 2004) Web Page Categorization and Feature Selection Using Association Rule and Principal Component Clustering Jerome Moore, Eui-Hong (Sam) Han, Daniel Boley, Maria Gini, Robert Gross, Kyle Hastings, George Karypis, Vipin Kumar, and Bamshad Mobasher...



February 15, 2005

Hack google: News + gmail + groups = ?

15:18 on Tuesday February 15, 2005 | 0 Trackbacks | 14 Comments

google News + google gmail + google groups = XML = personal news portal. 这几天大约是在做分类算法和做我讨厌的SAS程序太烦琐了,之余做了一个花招,将google现在的几个主要的服务 hack 了一下, 穿了起来,做成了一个个人的新闻信息门户(这个个人信息门户与我跟文心和老冒去年三月提起来的个人门户的观点是不一样的)。 主要突破了google的新闻不输出 RSS 的限制,利用google 的系统间的bug (其实也是google的自恰的原因),将google的新闻通过google本身转换成Rss输出。 做法: 1] 申请一个google gmail 帐户 例如 nowings 2] 申请一个google groups,其中设置以下几项: 1. 不发送 email 2. 谁能成为成员 Who can become a member of your group? Invitee Everyone Membership is moderated yes moderated 3. 谁能发文 members 4. 增加几个默认的用户 googlealerts-noreply@google.com (这个是必需要加的!) gnews@gmail.com 这个就是你自己了。 这里不需要邀请,直接成为会员,你自己作为moderated。 5. 记录下来发文的 groups email: nowings@googlegroups.com 3] 回到gmail Setting -- Forwarding and POP -- Forwarding 里输入 你这个group的发文地址: nowings@googlegroups.com 并且在自己的帐户里留下一份备份。 4] 去 http://news.google.com google 新闻 订阅自己喜欢的新闻来源 5] 回到 google groups, About this group 的联接下, 有: Atom feeds: 100 New topics 15 New topics 100 New messages 15 New messages 好了,这些就是我们最终得到的 Rss 来源了,google 虽然自己不提供Rss,而且也禁止别人提供Rss,可是还是被我们Hack了一把。写到这里我发现我头疼的SAS又运行出错了。。。。 以下为我的几个抓图,可以参考: Google group 的成员email 列表 Gmail 的email fordwing setting 订阅google快迅 最后将之输入到我的Rss阅读工具里面,一切就完成了:...



February 10, 2005

关于中国人姓名的算法说明

11:29 on Thursday February 10, 2005 | 1 Trackbacks | 0 Comments

这个事情本来是不原意提起的,只是很多人认为我做到姓名的搜索误差太大,这里也就说明一下,以免让大家认为蒙在鼓里。 1. 查查全中国有多少人的名字和你一模一样 是纯粹的娱乐性产品。 2. 计算机非人口普查部门和公安部门,因此任何输入的词语都将给予解释。 下面介绍本系统的算法,如果你系高中毕业,对概率统计有一定的认识,可以继续: 算法A : 前文已经声明,我通过网络采集了大约40多万人的姓名,这期间大约有20万的姓名是独立的,现在这个数据库还在变大,今天已经大约有100万的姓名了。 我们假设在这100万的姓名分布和全国13亿人的姓名的分布相近,那么当你搜索“张三”这样一个姓名的话,如果我的数据库里有70个张三的话,那么全国按照样本的分布就应该是 70*1300000000/1000000 = 91000 就是说全国有91000个人都叫张三。 误差分析 Sigma = f_sigma(70) + f_sigma(1300000000) + f_sigma(1000000) = 11050 就是说,全国张三最多是 91000+11050 = 102050 个张三,最少91000-11050 = 79950 个张三,以上为70%左右的置信区间。 算法B: 根据姓名的概率 = 姓的概率*名的概率 建立在姓和名的概率分布是独立的分布,P(姓, 名) = P(姓) * P(名) 在100万的数据里,我大约收集到2800个姓,和24000个名,这样关于姓和名的分布就很合理的建立起来了。例如当我们输入“张三”的时候,算法将是先计算“张”作为姓的概率,然后计算“三”作为名的概率,然后将两者相乘,再乘以全国的总人数就得到多少个张三。 P(张) = 0.602% , "三"作为名的概率为 P(三) = 0.4%,因此 Num(张三) = P(张) * P(三) *1300000000 = 31200 因此根据此算法得到张三全国一共有31200个。 误差分析,误差来源主要是来自2方面,姓、名的统计误差,姓与名之间的非独立分布的系统误差。例如一个人名子可以叫“刘八”却一般不会叫“王八”,因此实际上姓和名是一个关系的分布。 后续: 1] 对于这样一个查询自己姓名的系统,我花了大约1个小时写代码和算法,结果完全没有想到后续竟然有那么大的波澜,在短短的几天内,差不多有30万的人访问查询,最后不得不将我blog上的页面直接定向到了booso.com并且关闭了留言。 2] 由于这30万人的访问,又给我的数据库里添加了大约30万的数据,这样实际上数据将更加趋于完整和实效,数据源的扩大,将进一步提高查询的精确度。...



February 02, 2005

查查全中国有多少人的名字和你一模一样

21:21 on Wednesday February 2, 2005 | 0 Trackbacks | 0 Comments

名字是一个人的个性化符号,你的名字够特别吗? 查查全中国有多少人的名字和你一模一样就知道了。 查查全中国有多少人的名字和你一模一样 那么,全国哪些名字最流行呢?这里公布的top 10姓名,竟然有120万人的名字都叫李刚! 李刚:120万 李明:107万 王刚:105万 王磊:104万 王伟:88万 李伟:87万 李强:86万 张磊:83万 刘洋:80万 王强:68万...



February 01, 2005

MT 防止垃圾的 Trackback 的方法

21:52 on Tuesday February 1, 2005 | 3 Trackbacks | 44 Comments

以前做防止Spam comment垃圾留言的时候做了,长时间没有看都忘记了,朋友问起提醒了我,写在这里: mt-tb.cgi 是处理 trackback 的程序,这个程序拿到了 trackback 后进行插入数据库处理。 trackback 的数据结构定义在: lib/MT/TBPing.pm 里面,有如下结构: my $ping = MT::TBPing->new; $ping->blog_id($tb->blog_id); $ping->tb_id($tb->id); $ping->title('Foo'); $ping->excerpt('This is from a TrackBack ping.'); $ping->source_url('http://www.foo.com/bar'); $ping->save or die $ping->errstr; 其中 'excerpt'就是文字描述部分,可以进行监查有没有中文的判断,如果没有中文,就当做spam处理,直接中断: if ($ENV{'REQUEST_METHOD'} eq "POST") { my $tck = param('excerpt'); die if($tck ne "" && $tck !~ /[\x80-\xff]/); } 将以上四句话加到 mt-tb.cgi 里面 use strict; 后就应该起作用了。...



MSN搜索引擎亮相,中文结果差强人意

18:45 on Tuesday February 1, 2005 | 2 Trackbacks | 14 Comments

今天下午 MSN 的 Beta Search 正式改造成为 MSN Search ,盖兹亲自出面为之宣传。记得前几天看电视,达沃斯年会上盖兹一脸轻松,看来是心里的石头放下了。 February 1, 2005 Greetings, I would like to introduce you to the new MSN Search service and MSN.com home page. Based on your feedback, we have designed the new MSN.com home page to be faster, simpler, and more organized. We've also made MSN Search more precise and powerful, so you can quickly find the information you’re looking for. Our goal at Microsoft is to use the power of software to solve our customers' toughest problems. Searching the Internet today is a challenge, and it is estimated that nearly half of customers' complex questions go unanswered. That's why we're proud of our new MSN Search service, a simple and powerful tool that helps you find the answers you want from sources as diverse as Web pages, images, news headlines, music downloads, and even files on your PC. Input from millions of our customers - including me - was crucial to our efforts to make MSN Search the best it can be. If you have not already tried it, I encourage you to visit www.msn.com and type in your question. We'd love to hear what you think, and I promise that we will continue to improve MSN based on your feedback. Sincerely, Bill Gates 初步进行了几个测试,主要是针对以下内容: 容量,速度,准确度,Spam的多少,中文搜索。 1. 容量: 使用 MSN Search 和Google 搜索 site:yahoo.com 比较MSN Vs Google 3,347,511 VS 23,100,000 使用 MSN Search 和Yahoo 搜索 site:Google.com 比较MSN Vs Yahoo 271,548 VS 342,000 对于大型的网站,MSN 还是相对比较小气的。但是却发现MSN Search更喜欢一些小型的网站的内容,索引量是 google 和 yahoo的多倍。 2. 速度: 这个根据显示出来的数据显示和对网页的文件大小相比: MSN 算是速度最快的, 一般平均在 0.1 以内, 而google 不太稳定,可从0.04 到0。17,yahoo基本上是0.10-0.14。Google 采用了gzip module,通常而且搜索结果的文档大小也只有yahoo的一半左右,因此速度不错,MSN 文件大小也很小,去处了许多无用的东西。 3. 相关性: 搜索一些关键词,例如 6e , 6a , mt ,苹果(apple.com)等,这些词汇有些是缩写,有些是谐音,甚至是非流行的,基本结果是 Google 好于 Yahoo 好于 MSN Search。 4. Spam 的情况: 针对流行的一些词汇“音乐下载”,“美女走光”,“ 年终总结”等,结果三个网站的前20个结果里都含有大量的 spam 网页,但是惊奇的发现,MSN Search的Spam竟然最少,也许是算法不同,对于那些简单的重复的内容几乎很少出现。 5. 中文搜索 这部分google 和 yahoo都比较强了,让我们看看msn: 首先有很多乱码,例如在msn search里搜索六翼时,还有乱码出现。 从文字片段的长度看出,文字序列长度超过一定长度的都判断准确无误,因此MSN非常可能是采用字符逻辑位置平均值加边界限定的方法来进行字符集的自动识别,可惜这种方法对文字比较多是最适合的,文字少就很难办了。 中文分词怎么样?同样有问题: 前几天曾经有人在我的分词测试上留言,说"研究生命起源"我分的不对,我监查了一下MSN,采用如下方法: 研究生 site:wespoke.com 的结果比较与研究 site:wespoke.com后,发现“研究生命起源出现在“研究生”的搜索里,显示的位置是经过我特意加了#的分词片段,没有出现在研究的搜索里(也许是研究这个词太普及了,给消除了)。 基本上说来,MSN Search跟Google和Yahoo还是有差距,但是也是紧跟其后,难说哪一天就胜出了呢。 补充一点, Msn Search支持 Rss,考虑的够全面的了。...