中文公众事件信息熵计算方法.docx
- 文档编号:30668382
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:14
- 大小:170.48KB
中文公众事件信息熵计算方法.docx
《中文公众事件信息熵计算方法.docx》由会员分享,可在线阅读,更多相关《中文公众事件信息熵计算方法.docx(14页珍藏版)》请在冰豆网上搜索。
中文公众事件信息熵计算方法
中文信息处理报告
课题名称
搜索引擎中的关键技术及解决
学院(系)
电子信息与工程学院
专业
计算机科学与技术
学号
072337
学生姓名
张志佳
完成时间
2009年1月3日
目前,国内的每个行业,领域都在飞速发展,这中间产生了大量的中文信息资源,为了能够及时准确的获取最新的信息,中文搜索引擎应运而生。
中文搜索引擎与西文搜索引擎在实现的机制和原理上大致相同,但由于汉语本身的特点,必须引入对于中文语言的处理技术,而汉语自动分词技术就是其中很关键的部分,也是进行后续语义或者是语法分析的基础。
汉语自动分词到底对搜索引擎有多大影响?
对于搜索引擎来说,最重要的并不是找到所有结果,最重要的是把最相关的结果排在最前面,这也称为相关度排序。
中文分词的准确与否,常常直接影响到对搜索结果的相关度排序。
分词准确性对搜索引擎来说十分重要,但如果分词速度太慢,即使准确性再高,对于搜索引擎来说也是不可用的,在Internet上有上百亿可用的公共Web页面,如果分词耗用的时间过长,会严重影响搜索引擎内容更新的速度。
因此对于搜索引擎来说,分词的准确性和速度,都需要达到很高的要求。
更具体的说,现在的搜索引擎要达到下面的三要求,才能适应当今这样一个信息爆炸的时代,分别是:
数据量达到亿,单次查询毫秒级,每日查询总数能支持千万级。
撇开搜索引擎要用到的数量庞大的服务器硬件和速度巨快的网络环境不提,就单单说说搜索引擎中软件部分的三大核心技术。
我个人以为:
一个优秀的搜索引擎,它必需在下面三个方面的技术必须是优秀的:
中文分词,网络机器人(Spider)和后台索引结构。
而这三方面又是紧密相关的,想要解决中文分词问题,就要解决搜索时间和搜索准确率两方面的难题。
而搜索时间上便是通过网络机器人(Spider)和后台索引结构的改进实现的,搜索准确率则是通过分词本身算法的求精来实现的。
下面的文章将从这两个大的方面来解决这两方面的问题。
为了能够更清楚的来说明现在的搜索引擎是如何解决这几个难题的,首先对搜索引擎的组成及工作原理在这里简要的说明一下。
搜索引擎的工作,可以看做三步:
从互联网上抓取网页,建立索引数据库,在索引数据库中搜索排序。
从互联网上抓取网页利用能够从互联网上自动收集网页的Spider系统程序,自动访问互联网,并沿着任何网页中的所有URL爬到其它网页,重复这过程,并把爬过的所有网页收集回来。
下面是搜索引擎的工作原理图:
搜索引擎工作原理图1
搜索引擎工作原理图中的相关术语说明如表1:
表1
术语
解释说明
搜索器
搜索器的功能是在互联网中漫游,发现和搜集信息。
它常常是一个计算机程序,日夜不停地运行。
索引器
索引器的功能是从中抽取出索引项,用于表示文档以及生成文档库的索引表。
索引表一般使用某种形式的倒排表,即由索引项查找相应的文档。
检索器
检索器的功能是根据用户的查询在索引库中快速检出文档,进行文档与查询的相关度评价,对将要输出的结果进行排序,并实现某种用户相关性反馈机制。
排序器
由搜索系统程序从网页索引数据库中找到符合该关键词的所有相关网页,只需按照现成的相关度数值排序,相关度越高,排名越靠前。
一,搜索引擎中的关键技术介绍
在介绍关于搜索引擎中的分词技术是如何解决的,相对搜索引擎中其它的一些关键技术做一下简要的介绍,对谈一下自己对相关技术的一些想法。
其实这些技术和中文分词技术是很有关联性的。
可能给你一片几千字的文章,让你对它进行分词可能你通过编编程序便可以实现,但是搜索引擎要解决的问题是怎样去处理互联网中海量的,且没有规则的信息,要解决的问题就不仅仅是简简单单的分词问题了,可以说下面要介绍的一些关键技术正是分词技术的一个基础,是为分词建立一个良好的搜索环境和数据结构。
1,网络机器人(Spider)的设计
为了保证搜索到的信息的实时性与相关性,就要保证在互联网上面搜到的网页获取的很及时。
并且对于互联网上面现在已经有几十亿的网页进行处理,必然要选择一种很好的方法才可以。
搜索引擎是通过两种方式来获得互联网上面的Web页面的,一种是定期(比如Google一般是28天)派出Spider(蜘蛛)程序,抓取网络上面的新页面,将相关的信息记录在数据库中。
另一种方式是网站的拥有者向搜索引擎提交网址信息,同样将相关的信息记录到数据库中。
而上面所说的Spider(蜘蛛)程序,是一种专业的Bot程序,是一个功能很强的Web扫描程序。
它可以在扫描Web页面的同时,检索相应的超链接并加入扫描队列等待以后的扫描。
我们知道网络上面的超链接的使用是很普遍的,因此一个Spider程序理论上可以扫描互联网上的所有页面。
比如搜索巨头Google公司,就利用网络机器人程序来遍历Web站点,并实时的更新已经建立的数据库。
从中我们也不难看出,一个网页抓取程序(即Spider)设计的好坏对搜索引擎的性能的影响是很大的。
Spider程序结构
网络机器人必须从一个网页迁移到另一个网页,所以必须找到该页面上的超连接。
程序首先解析网页的HTML代码,查找该页面内的超连接然后通过递归和非递归两种结构来实现Spider程序。
非递归结构方法使用队列的数据结构,当Spider程序发现超连接后并不调用自己本身而是把超连接加入到等待队列中。
当Spider程序扫描完当前页面后会根据制定的策略访问队列中的下一个超连接地址。
虽然这里只描述了一个队列,但在实际编程中用到了四个队列,他们每个队列都保存着同一处理状态的URL。
等待队列:
在这个队列中,URL等待被Spider程序处理。
新发现的URL也被加入到这个队列中。
处理队列:
当Spider程序开始处理时,他们被送到这个队列中。
错误队列:
如果在解析网页时出错,URL将被送到这里。
该队列中的URL不能被移入其他队列中。
完成队列:
如果解析网页没有出错,URL将被送到这里。
该队列中的URL不能被移入其它队列中。
Spider程序的非递归处理过程
以上的图表示了队列的变化过程,在这个过程中,当一个URL被加入到等待队列中时Spider程序就会开始运行。
只要等待队列中有一个网页或Spider程序正在处理一个网页,程序就会继续他的工作。
当等待队列为空并且当前没有任何网页时,Spider程序就会停止它的工作。
2,索引数据库设计技术
大型搜索引擎的数据库储存了互联网几十亿的网页索引,数据量达到几千个G甚至几万个G。
为了充分的为后面考虑在后面查询中能够跟快捷,更准确。
搜索引擎在分析索引系统程序对收集回来的网页进行分析,提取相关网页信息,根据一定的相关度算法进行大量复杂计算,得到每一个网页针对页面内容中及超链中每一个关键词的相关度,然后用这些相关信息建立网页索引数据库。
当用户输入关键词搜索后,由搜索系统程序从网页索引数据库中找到符合该关键词的所有相关网页。
因为所有相关网页针对该关键词的相关度早已算好,所以只需按照现成的相关度数值排序,相关度越高,排名越靠前。
最后,由页面生成系统将搜索结果的链接地址和页面内容摘要等内容组织起来返回给用户。
3,网页评级(PageRank,HillTop)技术
由于互联网上面的Web页面的数据量大,用传统的方法来确定检索表达式和网页的相关度会花太多的时间,不能够满足用户的需求。
采用网页评级技术可以保证系统能够快速的反应,并把重要的的网页返回给用户。
Google每天要处理的网页高达2亿次,占全球的搜索量的1/3。
Google却能够提供快速的搜索速度和高命中率搜索结果,完全取决于它所使用的复杂的文本匹配算法及其搜索程序所使用的Pagerank技术。
Pagerank技术是用来计算页面的重要性,对于每一个链入赋予不同的权值,链接提供的页面越重则此链入权值就越高,也就是说当前页面的重要程度是由其他的页面来决定的。
下面是PageRank的算法:
其中,PR(A)是页面A的级别,PR(Ti)是页面Ti的级别,页面Ti链向页面A,C(Ti)是页面Ti链出的链接数量,d是阻尼系数,取值在0~1之间。
从这个公式,我们可以直观的描述:
一个来自PageRank3拥有7个外向链接页面上的链接,要比一个PageRank9拥有200个外向链接页面上的链接,更有价值。
链接到你网页的页面的PageRank非常重要,不过其页面上链接的个数同样重要。
一个网页上的链接数越多,你所能够从这个网页获取的价值就越少。
从上面的式子可以看出来,当要计算某个页面的网页级数时,由于互联网上面的页面几乎都是可以相互链接的,因此要得到某一个页面的网页级数,就要即一个超大维数的方程组。
这对于现在的计算机的性能来说,完全是不现实的。
Google采用的是一种近似的迭代方法来计算网页的级别,也就是先给每一个网页一个初值,然后在调用上面的公式,循环进行运算来得到网页的级别。
根据研究实际要进行100次的迭代才能得到整个互联网满意的页面级别值。
不过前面已经说过搜索引擎在获取网页时是定期的,所以总的来说这种方法在现在的Web搜索来说还算可以。
下面的一种图片便是用Pagerank算法来进行对网页评级的一个结果。
从中我们也不难发现像Google这样的大型热门网站获得网页级别是处在金字塔的顶端的,Swingline等网站获得的网页级别就比较低。
图1Pagerank算法对网页评级的结果
但是这种方法也并不是完善的,当你仔细的思考一下,就会发现,在互联网中,像Google,XX这样的热门网站中,会在很多的网站中都有链接。
但你在查询框中查询“篮球”时,就会有很多这样不相关的网页指向它,从而得到较高的级别。
而事实上他们与“篮球”不太相关,而对于这种特俗的情况,我们可以在上面的计算公式中添加一些限制因素,来避免这种情况的出现。
比如在计算是可以将链入的的网页的内容和本网页进行匹配一下,根据相关程度来决定这种链入是否有效。
通过对由超过50,000万个变量和20亿个词汇组成的方程进行计算,PageRank能够对网页的重要性做出客观的评价。
使得在对互联网中海量的Web网页的搜索节省了时间,同时也使得搜索的结果更接近用户的期望值。
从上面的分析中我们也看到Pagerank算法仍然存在着不足。
近几年来也有一些新的排名算法出现,比如HillTop算法,它集成了Pagerank,HITS,相关性算法的优点于一身,是Google核心排名算法之一。
HillTop算法是一种查询相关性链接的分析算法,它克服了的Pagerank的查询无关性的缺点。
简单的说HillTop算法是针对热门查询词来对Web网页进行重新排序的技术。
而只针对热门关键词,是因为HillTop算法运行效率较比较低的限制。
我们可以看到HillTop算法通过不同等级的评分确保了评价结果对关键词的相关性,通过不同位置的评分确保了主题的相关性,通过可区分短语数量防止了关键词的堆砌。
在HillTop算法中存在着一种博弈的思想,在链接方面同类型的网站时,既需要竞争又需要合作,只有被对方“认可”的网站,对热门关键关键词的查询才会被排在搜索结果的前面。
HillTop使得那些小的网站不能够在此便处于劣势,除非你对热门关键词能够提前预知出来,然而即使预制出来了,这种持续也会很短。
4,后台索引结构:
其实后台索引结构和中文分词的算法性能的提高是很有帮助的,采用什么样的中文分词,那后面的索引也会受其影响的。
整体的后台索引结构的基本思想就是:
把查询结果预先给运算出来。
当然这些运算出来的结果全部放到内存中,那样查询是最快的,但内存总量毕竟是有限的。
所以肯定必须有大批量数据是放在硬盘中去。
对于那些搜索高频词的结果就放在内存中,低频词的结果当然就放在硬盘上。
但是,一些低频词可能会马上变成高频词。
但是说是这样说,具体实现起来其实并不简单,本学期我正好也在上操作系统的课程,设计操作系统中所用到的缓存技术,是可以解决此问题的。
下面我大略的说一下我的思路:
为了使CPU和外围设备能够并行的运行,在CPU和外围设备之间设置一个高速缓冲区。
当内存因空间不足,又有词汇需要调进内存时,就要将一些词汇淘汰出内存,而选择的时候是选择那些在最近的一段时间内使用频数比较低的词汇。
但调出内存时,并不是将它们立刻的调到硬盘上,为了避免在以后这些词汇变为高频词汇时,再次调到内存中比较浪费时间,采取的策略是将它们先送到缓冲区上面。
这样就在很大程度上面保证了搜索时间的快捷性。
当然这只是大略的说一下。
5,有关分词的解决方案:
互联网上面的数据都是以HTML等超文本的形式组织,是一种半结构化的数据,结构化比较差,这就为分词带来了极大的困难,但由于篇幅的原因,再此我就不对此方面做详细的介绍了,下面主要是对搜索引擎中的分词技术做一下介绍。
下面的一张流程图便是中文分词的一个主要流程,这种分词是基于有词典的一种分词,并且能够通过分词来不断的学习,丰富自己的词库内容与消歧能力。
在这种基于有词典的分词中词典的构建是很关键的,他不但对分词的速度有关键的影响,也会对分词的正确性带来必然的影响。
下面是一种词典的组织结构,它将两字词,三字词和多字词进行分开存取,有很多好处,我想主要是考虑到短字字词的搜索频率要比多字词的高,这对提高很有好处;另一方面我觉得这样存储会跟节省空间,因为长度都相同,而且词典室采用索引的方式建立的。
这样就可以再分配空间,增加词汇时,就能够最大程度的节省空间。
在词典中我们还会看到一项关于词频的项。
增加这项,主要是为了解决歧义问题,提高分词的命中率。
在开始我想先强调一下,在搜索引擎中用到的分词技术,和在纯学术领域中用到的分词技术是有很大区别的,不能够等对待。
因为学术界的要求分词的准确率极高,但分词速度就比较低了;搜索引擎的重点是,在保证分词高速的情况下,尽量提高分词的准确率。
所以,这也就导致了现在的搜索引擎公司,基本上都自己来做中文分词了。
事实上,不单单是中文,其他国家的语言文字也存在“分词问题”。
只是由于各种语言的不同,分词时,所遇到的困难,问题也就不一样。
由于汉字是象形文字,它是以字为单位的,而英文是以此为单位的。
并且中文在字与字之间也没有明显的切分标志,汉语的词序又极为灵活,相应的语法限制也比较少。
上述的种种原因就造成了中文在分词上面遇到的问将会多一些。
下面先对现在比较流行的主流分词技术做一个简要的介绍,然后在说一下搜索引擎中的分词技术应该做和改动,才更符合实际。
现在比较流行的分词技术有三大类,分别是机械分词方法,基于理解的分词方法和基于统计的分词方法。
■.机械分词方法
这种算法所采用的分词策略都是固定的,也就是当其他条件不变时,对于同一篇文章的分词结果应该是相同的。
并且这种分词方法需要有一个很大的词典,来进行词的匹配。
若在词典中找到某个字符串,则匹配成功,同时也就划分出来一个词,否则失败。
依照扫描方向的不同,这种分词方法可以分为正向最大匹配和逆向最大匹配,临近匹配,最短路径匹配算法等。
分词的具体方法可以参见《中文信息处理的原理与应用》,这本书上各种算法都比较简单,很容易理解。
在此就不详细的介绍了。
机械分词方法的实现比较简单,但分词的正确率是受字典大小的影响。
也就是它的正确率和词典的大小成正比。
但是如果将词典做的很大。
分词的速度必将受到很大的影响。
而且这种算法对新词的判断就无能为力了。
当然可以针对某一相关专业,建立一个针对性的词典,然而这种改善只是表面的。
令一种困难就是分词歧义,当然这也是所有的分词算法都面临的困难,如何解决好,对于搜索引擎的设计来说,也必将产生积极的作用。
为了能那个更好的进行分词处理。
可以对上述的算法做一些改进,比如优先在待剖析字符串中识别和切分出一些带有显明特点的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。
另一种方法是将分词和词类标注结合起来,利用丰盛的词类信息对分词决策供给辅助,并且在标注进程中又反过来对分词结果进行检验、调剂,从而极大地进步切分的准确率。
■.基于理解的分词方法
这种分词方式是通过让计算机来模仿人对句子的理解,到达识别词的效果。
其基础思想是在分词的同时,还进行句法、语义剖析,应用句法信息和语义信息来处理分词过程中遇到的歧义现象。
看上去这种方法能够解决歧义问题,应该还不错。
但事实上,这种分词方法要涉及到大量的语言知识和信息。
由于汉语语言知识的笼统、庞杂性,难以将各种语言信息组织成机器可直接读取的信息,因此目前基于理解的分词系统还处在实验阶段。
■.基于统计的分词方法
在实际应用中,我们可以根据几个字相邻概率的高低,来判断它是否可以构成一个词。
相邻的字同时呈现的次数越多,就越有可能构成一个词。
因此字与字相邻共现的频率或概率能够较好的反应成词的可信度。
我们可以从这一点出发来对文章进行分词。
我们可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息。
互现信息体现了汉字之间结合关系的紧密水平。
当紧密水平高于某一个阈值时,便可认为此字组可能构成了一个词。
这种方法只需对语料中的字组频度进行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。
介绍完了现在主要的几种分词技术,我们在回来看一下搜索引擎中的分词技术。
考虑到性能等各方面的因素,搜索引擎中的分词技术应该跟侧重于机械分词和基于统计的分词方法的结合,不过这只是我个人的一种理解,真正用于搜索引擎的分词可能会更复杂一些,但对于此方面的信息并没有找到,也就不好评测。
对于搜索引擎来说,它所要求的并不仅仅是找到所有结果。
由于在上百亿的网页中找到所有结果可能会有成千上万个,没有人能看得完。
最重要的是把最相关的,用户满意度最高的结果排在最前面,这种处理也称为相干度排序。
中文分词的精确与否,经常直接影响到对搜索结果的相干度排序。
但在保证精度的同时还要保证时间上面的讯捷性,你要知道搜索引擎是给上亿的用户使用的,让用户等的太久,也不会使用户满意的。
二,搜索引擎中仍存在的问题
虽然我们现在每天都会在互联网上面浏览网页,用搜索引擎搜索信息,而且搜索的速度也很快。
我在Google和Baidu上面曾做过一个小的实验,我用这两个搜索引擎进行搜索不同的信息,在几十次的搜索中,每次都能够在0.5秒以内完成,下面的图2是我在Google上面搜索篮球的结果,时间仅为0.14秒。
图3是用Baidu对对“篮球”的搜索结果,时间只用了0.005秒。
同时也可以看到搜索到的结果是在千万级的,数量之多,可想而知。
同时也说明了,中文的搜索引擎现在做的也是不错的了。
图2Google搜索“篮球”的结果
图3Baidu搜索“篮球”的结果
但是,这并不意味着现在的搜索引擎已经很好了,也不意味着有关搜索引擎的技术问题都攻克了。
在现在的搜索引擎中还存在着很多的不足,还有很多地方需要改进。
比如:
(1)网络信息质量控制欠缺,任何人只要具备条件,都可以将任何信息放到网上面,而这些信息搜索引擎很难过滤出来,当然这也导致了信息过滤技术的产生与发展。
但目前却仍然不够完善。
(2)索引数据库更新困难,提供的信息之后。
就像上面提到过的,搜索引擎对互联网上信息的获取是定期的,而不是实时的(主要是数据量过大的原因)。
同时对于搜索引擎所管理的一个庞大的数据库,其更新速度是落后于互联网信息的更新速度的。
并且索引数据库越大,其更新周期就越长。
(3)所有的搜索引擎各行其是,缺乏合作。
目前的各个搜索引擎对同一个资源进行重复的分析索引等,浪费了很多的时间。
我感觉比较好的办法是各大公司能够达成某种协议,对此方面的工作能够合作完成,我想这样肯定会对搜索有很大的帮助的。
对公司也会节省很多的资金投入。
(4)网络上面的重复信息太多,而现在的搜索引擎对此方面却还是无能为力。
比如我们经常会在用搜索引擎搜索某一信息时,虽然搜索的结果是我们想要的某些资源,但是在前10条或者是前20条中的信息中有很多内容都是相同的,这也是用户在搜索中,感到很恼火的。
搜索引擎还有很多不足的地方我在这里就不一一在列下去了。
三,搜索引擎研究的新方向
1,在自然语言处理方面的研究及发展方向。
比如
(1)基于规则和基于统计的研究方法的结合,随着人工智能的不断发展,其余规则的看待问题,结局问题也必将越来越重要。
(2)自然语言在语义网络中的广泛应用。
(3)自然语言处理与生物信息学相结合。
2,搜索引擎在智能搜索方面的发展,我认为还是很有前景的。
现在的搜索引擎都是基于关键词匹配的搜索,我觉得将来的搜索引擎应该是问答式的,或者是信息抽取式的。
问答式的就是你提一个问题,搜索引擎能给出问题的答案,比如你忘记的某一个电影的名字,你可以将电影的大致情节描述一下,通过搜索引擎便可以得到相应电影的名字。
信息抽取式就是你输入很多信息,让计算机从中抽取出重要的信息并进行检索,当然这也就涉及到了信息抽取方面的知识。
但是我感觉这些方面的都是很值得去研究的,并且有很好的商业前景。
3,就是我上面的说的信息重复问题,比如我在XX空间中分享了别人的一篇文章,而这篇文章很有可能也被其他很多人引用了,但是搜索引擎会将他们当成不同的信息,同时呈现给用会。
我觉得这个问题可以用计算两篇文章的相关程度来实现。
但具体的可能还要进行细化在这就不详细的深究了。
4还有一个我认为是比较有发展前景的就是多媒体搜索技术,当然想在已经有一些人在研究这项技术了。
多媒体搜索技术其实要比简简单单的文字搜索要麻烦的很多。
不仅仅他的信息量将是一个很难攻破的难关,而且里面还涉及到很多其他方面的技术。
在真学期曾经听过微软的一的讲座,他们介绍了一下他们现在的研究技术,其中有一项就是图片检索技术。
当然这种检索并不是现在那种基于文字的图片检索。
并且他们在这方面已经做出了一些成果。
中文信息的处理是搜索引擎中一项重要的核心技术,然而目前在自然语言处理技术中,中文处理技术比西文处理技术要落伍很大一段间隔。
中文分词是其他中文信息处理的基本,搜索引擎只是中文分词的一个利用。
其他的比如机器翻译,主动分类,自动摘要,等等,在很多方面都需要用到分词技术。
分词技术在不同的引用领域都应有不同的适应条件,可能要做相应的调整才能更好的服务于该行业。
对于搜索引擎来说,分词的正确性和速度,二者都须要到达很高的请求。
即也便对分词技术要求做一些改进。
同时还要使分词技术和其他领域的技术往相互渗透,才能发挥其最佳的效果。
目前研究中文分词的大多是科研院校。
清华,北大,中科院,微软中国研究院等都有自己的研讨队伍,而一个专业公司在此方面的研究必然很有限,因此中文信息处理技术要想更好的服务于更多的产品,还将有很长一段路要走。
参考文献
①《中文信息处理的原理与应用》苗夺谦卫志华编著
②《搜索引擎与信息获取技术》徐宝文张卫丰编著
③《主题搜索引擎的设计与实现》罗旭编著
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中文 公众 事件 信息 计算方法