搜索引擎研究心得
这是自己以前一个阶段关于搜索引擎的一些想法,当时觉得还不错;通过深入的学习,发现有许多东西可以用敝帚自珍几个字来形容,因此把一部分东西公开出来。
否定自己是件让人很难接受的东西,不过相信否定之否定在认识上也有所提高。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1.
总论
最初对搜索引擎的认识,来源于图书馆的书目文献查询系统。后来当互联网在中国比较普及之后,开始接触Yahoo。后来在学习了中图法和文献编目,以及文献检索等课程,对搜索有了进一步的认识。
因为自己知识结构的博杂,对搜索引擎的价值有更深的认识。觉得搜索引擎的存在哲学在于解决信息量的爆炸和人类有限的认知能力之间的矛盾。人的记忆能力是有限的,不可能把学过的东西精确的记下来。学习的长远效果在于掌握一种方法,并在面对具体问题的时候,知道需要查找那些知识,并且如何去查找。并运用掌握的方法把找到的知识组织起来去解决具体的问题。搜索引擎提供了一种有效的辅助手段。
原来用于衡量搜索引擎的指标——查准率、查全率、响应速度。随着情况的变化,最突出的矛盾集中于查准率上。目前的问题是搜索引擎返回的检索结果许多都是不相关的,需要使用者自己去判别一大堆返回信息是不是对自己有用,检索效率很低。这将是文本搜索方面期待提高的一大突破点。
对知识的深入探索,会发现事物之间的关系本身是很有意思的。借用一句禅语:“一沙一世界”来说明,我对之参读的结果是缘由“关系千万重”。可以举例阐释:在关系数据库的建模概念里,用实体——关系模型(entity-relation
model)就可以描述大千世界;其实更进一步可以说实体本身相对于关系而言在模型当中的地位是不重要的,实体之间的关系才是模型的核心;实体因为自身集结的关系而存在,实体因为和自身发生联系的关系而具有属性。搜索引擎的开发和使用,就是基于对知识之间关系的发现和利用;以便在卷帙浩繁的,呈现混沌状态的信息海洋当中,发现和利用知识之间的关系规律;从而大大提高我们的认知能力。
要想在这个方面有所作为,需要充分的发现我们对世界的认知规律;对知识运用的思维规律;分析网络信息的结构,并掌握和利用自然语言的特点。
2.
联想方法
现在写东西一般都是在计算机上写,而且输入法都是用微软拼音输入法。便有这么一个体验,有的时候在遣词用字的时候,自己事先并没有想好一个恰当的用语,但是当出现联想词库让自己选择的时候,可能突然间发现某个单词更加适合表达自己的意思;结果最后实际使用的是用这个联想词库当中的词语。类似的情形在我们用搜索引擎查询某个知识的时候也会发生,查询结果的这种联想关联性,使得我们能够马上修正自己原来的认识;或者说这种模糊的信息(fuzzy
information),使得我们更加进一步的去认清楚自己原本就含糊的认识;然后会发现,自己认识变得更加清晰了。这个可以称之为基于联想的知识发掘机制。
现在所有的搜索引擎都有这种基于联想词库和主题关联程度的知识发现机制,但是这种机制在许多时候表现了太多的随意性,使得查询的结果显得有点杂乱无章;这种知识发现更多的是依靠查询者自身的知识结构来进行鉴别和提炼。期待改进的地方就是使得这种联想不要太过于随意,而变得相对的精确,使得这种知识发现的作用,对于一般层级的检索者而言也变得实际可用。并且能对于检索者自身的知识发现起到一种循循善诱的作用,引导检索者去找到问题的答案。
关于“一沙一世界,关系千万重”的进一步阐释,我认为万事万物之间都是有联系的;正是因为这种联系(关系),使得我们能够得由一粒沙子而构建出来一个世界。这句话用到搜索引擎上,给我们的启发就是说,知识之间是有关系的;我们需要去发掘这种规律性的关系,以便做到知识发现;这种关系规律是一种客观存在,不因为我们没有发现他而去说它们不存在。搜索引擎的前边的任务就是找到这种知识之间的这种规律性联系,并加以好好利用。
3.
关键词@目录搜索法
关键词@目录搜索法,现在的主流搜索引擎都是以关键词为搜索提问式,来进行全文检索的关键词匹配,然后返回检索结果。因为词语在不同上下文语境下的多义性,这种检索方式的返回结果让人误解的地方很多,常常只有一小部分是符合检索者原意的。这方面的经典例子是关于java的搜索,因为计算机没有办法理解你是要查询coffee,还是要查询一种编程语言;所以计算机全文检索的结果是返回所有的匹配条目,而你肯定只是需要查询其中的一种,所以误解就产生了。而且这种误解的存在,是查准率不能提高的主要障碍所在;为了提高查询的相关性,就需要消除这种语意歧义。
一种有效的考虑就是把网页作为一个单元,自动进行主题分类。例如,现在的yahoo中国的主题分类类目为:
参考资料 (268)
电脑与因特网 (5297)
健康与医药 (2155)
教育 (2318)
科学
(2773)
商业与经济 (37202)
社会科学 (1558)
社会与文化 (4082)
新闻与媒体 (1899)
休闲与生活
(5735)
艺术与人文 (4298)
娱乐 (5302)
政府与政治
(2363)
网站类目後面[]里的数字代表这个类目下所有连结网站的总数。
这样当用一个“关键词@主题目录”形式的检索式来查询搜索引擎的时候,会先找到相应的目录类目,然后再在该目录下面去查询关键词相关的网页。譬如查询式为:java@电脑与因特网,将返回java
programming language相关的网页。java@休闲与生活,将返回java
coffee相关的网页。有效的消除了语义歧义,提高了查询的准确率。
现在的主流搜索引擎的检索方式都为关键词全文检索,要实现上述的“关键词@主题目录”的检索,需要实现一个网页主题自动分类系统。这一点在充分分析网页单元的上下文信息,并且确定一个自动主题类目标准的基础上,应当可以做到。
4.
SEO(Search Engine
Optimization)的启发。
Seo曾经有一段时间在市场上异常活跃,他们摸索各大搜索引擎的排名规律,对搜索引擎采取一些作弊欺诈手段,迎合多个搜索引擎的搜索规则,帮助客户提高在搜索引擎检索结果当中的排名。在商业利益的驱使下,曾一度给搜索引擎的结果造成了混乱,现在各个搜索引擎也采取了一些防止欺诈的技术手段和惩罚措施,以便保证搜索结果的公正性。
我们由此可以得到什么启发呢?在信息爆炸的今天,每个人都愿意自己的网页被更多的人访问到,也就是说希望自己的声音更大,以扩大自己的影响;为了达到这一目的,网页的制作者愿意迎合搜索引擎的口味,以便让自己的页面更加容易的通过搜索引擎检索到。所以,如果有实力的搜索引擎公开推出自己的收录分类规则的话,相信网页制作者——也就是网络信息的原始生产方,愿意遵循该规则去制作自己的网页。
在现有的模式当中,大量的网络信息生产方几乎是没有任何生产规则可以遵循的,这也导致了信息的源头附加给信息的可以控制的信息很少,而搜索引擎在当中扮演了一种无奈的角色,试图在浑水的汪洋当中捕捉到一点有用的东西,处于一种被动的局面。这种现状必须得到改变,这种现状也是可以改变的。
譬如对网页进行主题分类,搜索引擎现有的办法是对一个网页生成简短的摘要,并且去分析网页文章的结构和上下文等许多信息,然后才能得出一个相对比较准确的主题分类条目,然后把这一个主题类目赋值给这一网页。这种事后处理的方式是非常累的,因为要集中处理大量的网页;而且也不见得主题分类特别准确,因为这毕竟是依靠的一种主题分类算法来机械的实现的。
可以有效的改变主题分类的现状的有两种方法:1、让网页制作人员,在每制作完成一个网页之后,根据自己的知识结构,完全人工的给网页做一个主题分类,譬如:一个有关于黄仁宇的《万历十五年》的评论文章,可以分类为:明代史料,并根据通用的分类法(例如中图法)给出相应的分类号:K211。并采用约定的html
tag,把这些分类信息记录到网页当中去。这样,当搜索引擎抓取到这一个网页的时候,只需要根据这些特定的tag去读出相应的主题信息就可以直接利用了,不必再去做什么复杂的classification和clustering计算了。而且,人工(经过适当的培训)分类的结果应当比算法机械分类的结果要准确。
2、把机械分类的算法做成一个软件包,集成到诸如MacroMedia
DreamWeaver、Microsoft
FrontPage等网页制作工具当中去,当一个网页制作完成要发布的时候,自动生成一个网页的摘要和主题分类、关键词等信息,并把这些得到的信息用约定的html
tag插入到html文件当中去。这种做法的好处是:(1)、变抓取后的集中计算为分散计算。(2)、页面处于一个比较原始单一的状态(一般一个页面会被嵌入一个网页模版当中,在抓取后的集中处理过程当中,会有很多的干扰噪音信息),分类也会更加准确。
5.
信息冗余度作为PageRank的参考指标。
基本思路:在网络上,常见一篇内容质量好的文章,在许多地方被转载;那么这个被转载次数即信息冗余度(在这里是相同网页在网络上的重复次数)就可以用来衡量网页的重要程度。即信息冗余度可以作为PageRank的参考指标之一。
根据一项研究统计表明,现在网络上的信息的复制传播的平均膨胀系数为3,这其中的主要原因是电子化的copy和paste非常的方便。例如一些新闻网站并没有自己的记者队伍,仅仅依靠一些编辑在那里不停的copy&paste就可以弄出来一个新闻站点。类似这样子做法的还有很多,例如现在冒出来的天天网摘等,都是职业性增加信息冗余度的人员。
这种被转载的信息可以视为经过了二次加工,人工选择之后的信息;因此可以假设:被复制次数越多的信息越重要。当然有些无聊话题被到处张贴和曲高和寡的重要内容除外,这两种类型的信息前者冗余指数极高但信息质量不高,而后者冗余指数较低,但质量很好。我们可以把这前者的情形当作噪音过滤掉,而对后者则可以在冗余指数上进行适当的加权。
这个想法是很有意义的,但是这个算法实现起来可以按照某一个好的hash函数,或者就用MD5来计算文件的签名,然后在处理文档去重的时候把重数计算下来,然后用这一重数来判断文章内容重要性的一个指标。
其区分能力到底如何,需要在真是的网络信息环境中做实验来考证。
6.
从信息的源头抓起
现在的搜索引擎主要处理的都是web信息,而web信息都是纯粹以展现为目的,而不是为了搜索的目的而建立,搜索引擎都是去跟踪分析信息,因为事后处理很被动,这就导致了信息管理的失控。
就像一本早期的书,当这本书内容不太复杂,比较薄的时候,在书出版的时候,是没有目录的。但是,随着人类知识累积的增加,书的内容变得复杂,这个时候,书目因为必需而出现了。对小的图书室而言,是否有书目检索系统无关紧要;但是,对一个大型图书馆,如果没有书目检索系统,想利用好图书馆是不可能的。而随着web信息的急速扩张,如果不对源头进行附加处理,则想好好利用web信息是不可能的。
Microsoft的web分块(block)检索的想法认为,一个web页面,可以划分为不同的快,这些不同的块的内容的重要程度是不一样的,整个页面中不同的部分对网页的重要性起的贡献是不一样的。据说一个网页经过这么细分处理之后,内容相关性的查准率大概可以提高15%。而怎么让计算机能自动识别网页分块呢,则是用通过手工标引处理的一组web模板作为训练数据来训练人工智能程序,让其慢慢具有自我识别能力。这种识别能力到底如何,现在还没有正式的产品出来供测试。
在web信息出版的源头,需要为了搜索的目的做一些加工。例如,就分块而言,在web页出版的时候,通过一些标记tag来标识不同的页面块是一件很轻易的事情,有了这些辅助的语义标志。对块的识别率将大大提高。
从源头对信息就加以控制的做法还可以进行一些别的工作。
Yours Sincerely,
sog.white
http://spaces.msn.com/members/sogwhite/
http://sogwhite.blogchina.com
http://www.baidu.com/s?wd=sogsblog
MSN:
servantofgod_cn@hotmail.com












收了呵呵。
基于关键词的全文自动标引,是查准低的最主要原因。彻底的办法是改变这样的标引方式,比如基于词间关系来自动学习,采用模式识别等。autonomy.com好像在模式识别方面技术很突出。现在还有些做法是,在不改变标引的基础上,对搜索结果的做再处理,使搜索结果更有使用价值,比如clusty.com的自动聚类,rollyo.com的用户推荐,都是这种思路,但方式不同。
web2.0倡导的tag,也是一种改进,tag是作者自己选取的关键词,相当于作者人工标引,准确性相对较高,在tag基础上进行检索,查准似乎要好很多。html里的keywords meta tag也一样,但没有得到足够的重视和利用,倒是seo看中了这个。 :)
考虑标引词的词间关系的做法,现在一般的搜索引擎都有考虑的。譬如最简单的共现词。
autonomy的东西没有具体用过,不过他们处理的东西主要是企业数据吧,和搜索引擎面对的数据是不太一样的。
关于tag,我觉得要有相应的网站credit机制,以防止被滥用。而现实的情况是很容易被滥用。tag在站内检索方面是个很好的发展方向。
在网络上,常见一篇内容质量好的文章,在许多地方被转载;那么这个被转载次数即信息冗余度(在这里是相同网页在网络上的重复次数)就可以用来衡量网页的重要程度。即信息冗余度可以作为PageRank的参考指标之一。
不同意。难道spam都变成很重要的信息了么?
例如现在冒出来的天天网摘等,都是职业性增加信息冗余度的人员。
天天网摘应该不会增加信息冗余度,它只是提供链接,最多加一段摘要。全文的快照只有自己能查看,别人是访问不了的。
spam会被过滤掉的。