wei님의 프로필哼哼哈嘿사진블로그리스트 도구 도움말

sun wei

스페이스에 음악 리스트가 없습니다.

哼哼哈嘿

4월 14일

新浪博客的问题与google的访问

Warning: mysql_connect(): Host 'blog16' is blocked because of many connection errors. Unblock with 'mysqladmin flush-hosts' in /data1/apache/htdocs/blog_pub/include/my_dbfairy.2.0.class.php on line 827

Warning: Cannot modify header information - headers already sent by (output started at /data1/apache/htdocs/blog_pub/include/my_dbfairy.2.0.class.php:827) in /data1/apache/htdocs/blog_pub/myblog/blog.php on line 52
上面这几行是新浪博客在4月14日上午时的普遍状态."老徐"他们不在能够发散光芒.对于每一个博客的经营者这个时候都是黑暗的.这个时候你键入blog.sina.com.cn并不能看出什么问题,当你试图进入一个你比较赶兴趣的文章时,那么抱歉,你可能看到的是上面两行相对固定的文字.
 
可以从文字中发现sina的blog是在大量访问出错的情况下发生的.这种错误只在网站被攻击的情况下发生.
请允许我描述这种攻击状态:数据库在某一主机发生多次错误后,限制该主机的访问,而返回Host 'blog16' is blocked because of many connection errors. Unblock with 'mysqladmin flush-hosts'这样的错误段.
这个错误是mysql的问题.而sina的数据库地址是隐藏的保密的.所以只有sina自己的服务器能够访问这个数据库主机.
google,baidu等搜索引擎的蜘蛛是采集信息的.自然界里的蜘蛛只有8只手,中国的千手观音不过有千只手,而搜索引擎的蜘蛛可以有2的32次方甚至更高只手在做抓文章的工作.sinablog被这么多只手给整坏了.众多的手在sina中肆意的抓,google,baidu,sogou等等等等...呵呵.
不要忘记上面我们说的,sina的数据库只有sina的主机能访问,而搜索引擎也只有通过sina的主机才能获得数据库的资源.所以不过是哪个搜索引擎的访问,返回到sina的数据库中的都是由sina的web主机的访问.这里出错的主机叫blog16.它真倒霉,被来自不同地方的很多手一起抓,听起来很淫意.可事实就是这样.乱抓带来的后果就是有错误,过多的错误被数据库捕捉...后果就是现在这样数据库停止响应blog16的访问了.
google.com不能访问了.注意不是google.com.cn.
.com实际上是英文的google.虽然我的英文不好,但是我知道google有一个blog搜索功能.
还记得前些年,因为色情信息google经常被封的事情么?那大概是与某中国搜索引擎公司竞争的结果.如今google.com又不能访问了.没办法,千手观音可以抓中国的sina.因为千手观音是中国制造的,是国货,是传统.google的blog搜索只有英文版本的有,自然被列为嫌疑对象.
1월 4일

垂直搜索引擎

据说垂直搜索现在很热,那么什么是垂直搜索呢,下面是我的几点认识,欢迎大家讨论。 1、垂直搜索引擎不是什么? 垂直搜索不只是类google的行业通用搜索。以房产行业为例,如果我们按照google抓取网页的方式,来建造一个房产行业google的做法,是行不通的。技术壁垒不用解释,就算我们借助nutch,lucene等搜索技术来做,我们也无法提供差异化的服务,而没有差异化的产品在互联网赢家通吃的规则下是无法生存的,就是不要简单地模仿,而要想办法形成互补。 垂直搜索和目前的google,baidu等通用搜索从定位,内容,用户,市场策略等都是不同的。所以垂直搜索不只是简单的行业google。 用户使用google,baidu等通用搜索引擎的方式是通过关键字的方式实现的,是语义上的搜索,返回的结果倾向于知识成果,比如文章,论文,新闻等;垂直搜索也是提供关键字来进行搜索的,但被放到了一个行业知识的上下文中,返回的结果更倾向于信息,消息,条目等。对买房的人讲,他希望找的房子需求就是信息,不是文章等。这个特性是他们各自的的技术特点决定的。打个比方,如果google搜索引擎是一个正金字塔型,那么垂直搜索引擎就是个倒金字塔型,两者是互补的。 2、垂直搜索是什么? 我认为:垂直搜索的本质是对垂直门户信息提供方式的一次简化性的整合。 搜索领域有句明言:就是用户无法描述道他要找什么,除非让他看到想找的东西,这个过程有点像找对象,碰运气是用户搜索行为的最大的特征。而垂直搜索引擎就是提高为用户提供更好的运气。 垂直搜索是服务于某项功能的,比如:用户搜索租房,买房信息就是一种垂直搜索。对信息的再加工处理是非常关键的,不管是结构化的数据,还是非结构化的数据。 3、垂直搜索的内容来源: A门户网站自身的资源 B以开放接口方式让行业用户提供的资源 C普通用户发布的资源 D抓取行业用户的资源 微软亚洲研究院负责搜索的一名技术专家说:75%的内容通用搜索引擎搜索不出来。这里面包含2层含义: 、网站结构不合理,网页对搜索引擎不友好; 、由于信息在互联网是海量的,非结构化的信息需要经过结构化的梳理后才能更好的展现。 如果梳理者能提供搜索,那样会更好。而垂直门户网站就是行业信息最好的梳理者。 垂直搜索引擎提供的主要内容不应该局限于普通的网页索引,而且包括商业信息的加工,结构化的信息。 4、进入垂直搜索的门槛在那里? 在互联网上说门槛,就是比资源。垂直搜索也是这样,能否提供全面权威的行业信息,能否拥有行业资源是垂直搜索引擎发展的门槛。换句化说,垂直门户是垂直搜索血统最近的父亲。作为房产行业的搜房网就是一个垂直门户,在房产领域没有谁比我们更清楚什么是垂直搜索了。 垂直搜索的难点不是技术,而是用户参与门户网站行为的创新和垂直门户网站对产业上下游信息资源的整合。 5、垂直搜索的特点: 、搜索是一个产业商业联盟的平台,一个集成产业链的上下游公司的搜索门户。 、垂直搜索的表现方式和google,baidu的表现方式不同,结构化的搜索和非结构化搜索并用。 、从广告模式上 提供了除 google adsense 和 百度竞价排名广告 之外的另一种可能。 作者Blog:http://blog.csdn.net/accesine960/
1월 3일

一种分词方法

 引言

在全文信息检索系统中,索引项的选择是一个基本的,也是非常重要的问题。对输入的文档及用户查询要做的第一件事就是将它们分解为索引项的集合,然后才有可能计算出查询与文档的相关度。在英文的全文信息检索系统中,将查询及文档分解为索引项集合是件非常简单的事因为通常选用词为索引项,
而英文中词与词之间存在分隔符(如空格)。对中文全文信息检索系统来说将查询及文档分解为索引项集合就复杂些。首先要确定以什么单位为索引项,是以字,词还是短语为索引项?现有的研究中大部份认为应以词为索引项。这是因为首先以词为单位比较符合人的自然思维习惯,其次以词为索引项就可以借用英文全文检索系统中已有的理论及方法。


以词为索引项,就要进行分词,也就是将由汉字组成的连续字符串分解为词的集合,要进行正确的分词不是一件十分容易的事,首先在中文中字与之间,词与词之间是不存在分隔符的,因此分词一般都要借助词典来进行,而中文的构词非常灵活,词的数目几乎是无限的,因此要构造完备的词典是不可能的。为了克服以词为索引项所带来的困难,人们提出了一些别的方法如以字为索引项,以二元,三元语法为索引项等。


本文首先对各种类型的索引项技术作简单介绍,分析它们应用于中文检索中的优缺点,然后着重讨论以词为索引项时的分词系统的设计及实现。


2 索引项及中文文本的表示方式


2.1 字


使用字为索引项是最简单的方法,将文本分解为索引项时非常容易实现。按照GB2312的规定共有6763个汉字。这样索引集合就非常小,最大不会超过6763。在这一点上与其它索引项技术(如词,N元语法)相比优点是非明显的。但以字为索引单位也有其明显的缺点。首先是匹配的准确性不高,例如用户的查询为
"识别",而某文档中存在 "你是否还认别的人?" 这样一句话。则基于字的检索方法则会认为该查询与文档是相关的。其次在中文中同一概念可以有多种表达方式如
"中文","汉语","国语"。基于字的检索方法是无法处理这类问题的。


2.2 n元语法


在全文检索中常用的为二元及三元语。二元语法的思想为将文本中所有相邻汉字均作为索引项,这样前一个索引项的后一个字与下一索引项头个字是相同的。例如有一个字符串C1C2C3C4C5,则由它生成的索引项为C1C2,C2C3,C3C4,C4C5。三元语法的思想与二元语法相同,差别仅为三元语法的索引项由三个字构成,例如对上面的字符串由其生成的三元语法索引项为C1C2C3,C2C3C4,C3C4C5。


同样n元法的优点为将文本分解为索引项集合是十分容易的。但其索引空间是十分巨大的。使用n元语法同样也会使系统无法利用语言学知识。


2.3 词


目前大多数研究者认为中文全文检索也应以词为索引单位。也就是索引项应该为中文的词。这样做的好处是十分明显的。首先符合人的习惯,有利于提高查询的准确性,也便于系统利用语言学知识。如果要进一步设计跨语种查询系统则非要以词为索引项不可。但使用词为索引项则应先解决好分词问题。


3. 一种混合型正向最大匹配算法


中文分词问题的研究己有二十多年历吏。其间己提出了多种分词算法。总的来说这些算法可分为四大类。第一类为基于词典的机械分词算法。第二类为基于统计的分词算法。第三类为第一类和第二类的混合型分词算法。第四类为基于知识的分词专家系统。


但各种分词算法均有其适用领域,针对全文检索中文档数量大,要求速度快的特点。我们设计了一个混合型正向最大匹配算法,该算法可利用规则及字频信息来处理分词中的歧义并使用了三词块方法[1]。为加快分词过程中词的查找速度,按首字索引结构对词典进行了组织。


3.1 三词块及处理歧义的规则


三词块是一种处理分词歧义的方法。分词中遇到歧义时(假设有一字符串C1C2C3C4C5C6,当前处理到汉字C1,且C1为词C1C2也为词),则向前多找两个词,这种由三个词组成的串称之为三词块。处理中我们将找出所有可能的三词块并且认为具有最大长度的三词块是最有可能的分词。


假设有字符串C1C2C3C4C5C6,且C1,C1C2均为词并有如下一些可能的三词块。


1 C1 C2 C3C4
2 C1C2 C3C4 C5
3 C1C2 C3C4 C5C6

具有最大长度的词块为第三个。这样我们就认为第三个词块中的C1C2为正确的分法。取其为词。从C3外再次开始进行分词,一直到字符串结束。


我们所设计的分词算法以正向最大匹配算法为框架。分词过程中遇到歧义时则应用下例规则加以解决。


规则1


具有最大长度的词块的第一个词为正确分词。


规则2


如具有最大长度的词块不唯一则寻找具有最小词长变化的三词块。该规则的隐含假设为在文档中词长是均匀分布的。


例如: 1 研究 生命 的 起源


2 研究生 命 的 起源


按规则选取块1中的"研究"为正确分词。


规则3


当具有最大长度的词块不唯一并且有相同的词长变化则具最大平均词的块中的第一个词为正确分词。该规则的隐含假设为遇到多字词的概率大于遇到一字词的概率。该规则仅当某些词块由一个或二个词构成时才有用。


规则4


当前面规则均不能确定选取那词块时,则分别计算各块中一字词的词频和,取词频和最大的词块。


3.2 词典的组织及词的查找


整个词典由12万个词条信息构成。词典组织结构为首字索引结构,其示意图如下

词典由两部份组成,一部份为索引部份,另一部份则为词典正文。索引部份由字,字频,指针组成。其中指针指向以该字为首字的所有词的首地址。正文部份为词条。词条按其长短从短向长的顺序存放。词典采取这种组织方式是为了加快词的查找速度。


4 结束语

本文介绍了一种混合型分词算法。为解决分词歧义问题引入了四条规则。在分词中遇到歧义时则通过生成三词块并引用规则来解决。文中提出的分词算法已在一全文检索系统中进行了实际应用。


 

参 考 文 献

[1]Chen K.J & Liu S.H, Word identification for Mandarin Chinese sentences. COLING -92

[2]黄昌宁等,语言信息处理专论。清华大学出版 1996年4月.

[3]姚天顺等,基于规则的汉语自动分词系统。中文信息学报,1990年 第1期

[4]吴胜远,一种汉语分词方法。计算机研究与发展,1996年 第4期

分词技术研究报告

三、主要的自动分词算法

现有的分词算法主要可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。

1 基于字符串匹配的分词方法

这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的几种机械分词方法如下;

1正向最大匹配

2逆向最大匹配

3最少切分(使每一句中切出的词数最小)

还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。由于分词是一个智能决策过程,机械分词方法无法解决分词阶段的两大基本问题:歧义切分问题和未登录词识别问题。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各种其它的语言信息来进一步提高切分的准确率。

      一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。

      另一种方法是将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。

      对于机械分词方法,可以建立一个一般的模型,形式地表示为ASM(d,a,m),即Automatic Segmentation Model。其中,

 d:匹配方向,+1表示正向,-1表示逆向;

 a:每次匹配失败后增加/减少字串长度(字符数),+1为增字,-1为减字;

 m:最大/最小匹配标志,+1为最大匹配,-1为最小匹配。

例如,ASM(+, -, +)就是正向减字最大匹配法(即MM方法),ASM(-, -, +)就是逆向减字最大匹配法(RMM方法),等等。对于现代汉语来说,只有m=+1是实用的方法。用这种模型可以对各种方法的复杂度进行比较,假设在词典的匹配过程都使用顺序查找和相同的计首字索引查找方法,则在不记首字索引查找次数(最小为log<汉字总数> » 12~14)和词典读入内存时间的情况下,对于典型的词频分布,减字匹配ASM(d,-,m)的复杂度约为12.3次,增字匹配ASM(d,+,m)的复杂度约为10.6

2、基于理解的分词方法

      通常的分析系统,都力图在分词阶段消除所有歧义切分现象。而有些系统则在后续过程中来处理歧义切分问题,其分词过程只是整个语言理解过程的一小部分。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。

3、基于统计的分词方法

      从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映成词的可信度。可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息。定义两个字的互现信息为: ,其中 是汉字XY的相邻共现概率,  分别是XY在语料中出现的概率。互现信息体现了汉字之间结合关系的紧密程度。当紧密程度高于某一个阈值时,便可认为此字组可能构成了一个词。这种方法只需对语料中的字组频度进行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如“这一”、“之一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差,时空开销大。实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典)进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。

在本课题中,采用 基于字符串匹配的分词方法来实现中文搜索引擎下的汉语自动分词系统。

四、   技术方案

1)研究方法:

1、  研究词典的存储方式和数据结构

2、  采用正向/反向最大匹配分词法实现自动分词

3、  2中两种匹配分词算法的结果不一致的词进行提取,标记为歧义字段

4、  对歧义字段进行消歧处理

5、  对未登陆词进行处理

6、  从分词的准确性和分词速度方面对系统进行评价

7、  设计词典管理模块,完成对词典的更新和维护

8、  针对具体的中文搜索引擎应用背景,对自动分词算法进行改进

2)技术路线:

   本项目的研究主要分为四个阶段来实施:

第一阶段:定义词典的数据结构

第二阶段:实现正向/反向最大匹配分词法

第三阶段:实现歧义处理

第四阶段:实现未登陆词处理

4)实验方案:

实验一:建立词典机制,实现词典管理模块

实验二:实现正向/反向最大匹配自动分词算法

实验三:检测并提取歧义字段,实现歧义处理模块

实验四:实现未登陆词处理模块

目前,已对整个系统的模块设计进行了规划,完成实验一和实验二,实现了词典管

理模块和正向/反向最大匹配自动分词算法。本课题选用19981月份人民日报语料进行统计和分析,得到词的统计信息如表1所示。

1    19981月份人民日报语料库中词的统计信息

词类

词数

(个)

词数所占百分比(%)

词频

(个)

词频所占百分比(%)

单字词

2873

5.164480

361751

40.971094

二字词

30939

55.615675

463077

52.447046

三字词

10658

19.158727

38082

4.313081

四字及四字以上词

11160

20.061118

20032

2.268779

总词数/总词频

55630

100

882942

100

 

以上统计数据表明,在汉语中,二字词占有绝大多数。因此快速判断二字词,对提高自

动分词效率起着至关重要的作用。在实现分词程序时,主要采用快速判断二字词和匹配分词交叉使用技术提高自动分词速度。

对词典的优化主要表现在以下几个方面:分词词典中以同一个词头开始的词是按内码顺序从小到大连续存放在一起的,且不包括首字,这样可以节省存储空间。同时采用内存映射文件技术,词典文件一打开就被映射到内存的某个地址,只有根据词头映射表具体访问某个词头偏移地址的时候,才会读取字典中对应词块的数据,检索时根据词头映射表指针,直接映射到该词头数据存储的文件偏移,再根据词条数目以二分法逐次匹配查找词,这样能提高词典的访问速度。

12월 29일

一种面向搜索引擎的中文切分词方法

 

    首先说一下搜索引擎切分词的产生的原因。
    在进行全文检索时,首先将要检索的内容分割成较短的文字序列。然后生成在每个文字序列中所包含字符串的对应表(索引)。当输入检索语句后,也同样进行分割,与索引进行比较。也就是说,两者即使包含有同样的文字排列,但分割方法不同的话也不能正确检索
    文字的分割方法主要有两种,分别是 词语解析索引 和 文字索引 。
    词语解析索引是按照字典中最小的词语单位对文本进行分割,既按词义切分。如中科院的 ICTCLAS。
    文字索引是不考虑文本中词的意义,只是按照一定的字长的单位进行切分。如 车东的二元切分法。

    上面两种方法对搜索的影响已经在 不同规则的中文分词对Lucene索引的影响  一文中做了对比。
    这里想纠正的一点是:我在里面提到: 从直觉观察来看,索引文件中的Term越多,搜索结果也越快,搜索的相关性也越高。

    这句话漏掉了一点,就是Term的“质量”问题。比如采用二元切分方法,产生的Term一定比 单字切分 和 词义切分 要多,但是很显然不能提高搜索的相关性。我的看法是二元切分 提高了搜索关键字的命中率而降低了索引结果的相关性

    那么是不是按照词义切分就能解决上面的问题呢?
    在跟
车东lhelper谈论GrassLand的开发计划的时候,(车东和lhelper是WebLucene的主要开发者),他们很有方向性的提到:完全按照词义切分不完全适合于全文搜索

    得出这样的结论似乎有悖常理。这也是本文要集中讨论的地方。

    上面提到:搜索引擎在建立索引时要和用户搜索时采取相同的切分方法,才能够正确检索。而这正是 词义切分 容易出现差错的地方。原因在于当搜索引擎建立索引时,可以通过算法使文本内容中的词语和字典很好的吻合(ICTCLAS 公测招回准确率在90%左右)。而在对用户在输入的关键字进行分词的时候,一方面用户输入的文本要短,另一方面用户只使用自己认为对的关键词,(还不考虑错字、别字 :-( )这样就造成了前后两者分词的差异。

    这种差异导致的结果可想而知,甚至不如文字索引 二元切分 更有效。

    这时候我们怎么选择?下面引用相关组织的一点评论:

    美国加州大学伯克利分校却在报告中称,使用 按词义切分法按词语单位对检索语句进行分割的方法更为有效。“作为的NTCIR资深小组提出的报告,可信度很高。我们也许可以得出以单词为单位进行分割的方法有效这一结论了”(国立信息学研究所副教授神门典子)。但在作为检索对象的数据方面,为防止检索遗漏有时还是使用 文字索引 进行分割好一些。

    上面 伯克利分校 的评论可以作为本文要提出的:面向搜索引擎的中文切分方法 的理论起点。

    概括起来就是:以词义切分为主要的切分方法,对于其中偏差的部分采用 文字索引切分法。 搜索引擎切分词的目的不是切分出有意义的词,而是切分出用户需要的关键词

    上面提到的只是一个总的思路,在技术上还有很多细节需要考虑。

    我会按照把上面的思路,修改 小叮咚 的分词方法,放在 GrassLand 的中文切分模块中。
    另外请大家关注 GrassLand 的进展,多多参与。
    田春峰
    20040108



Trackback:

 
사진 앨범이 없습니다.
추가한 리스트 항목이 없습니다.