jump to navigation

现代汉语文本的词语切分技术 一月 17, 2006

Posted by wansion in 计算机与 Internet.
add a comment
北京大学计算语言学研究所  孙宾

一、引言

1、汉语自动分词的必要性

    汉语自动分词是对汉语文本进行自动分析的第一个步骤。可以这样设想汉语自动分词过程的困难:如果把某个英语文本中的所有空格符都去掉,然后让计算机自动恢复文本中原有的空格符,这就是词的识别过程,此过程的主要问题是对大量歧义现象的处理。

    切词体现了汉语与英语的显著的不同。英语文本是小字符集上的已充分分隔开的词串,而汉语文本是大字符集上的连续字串。把字串分隔成词串,就是自动分词系统需要做的工作。

     词是最小的、能独立活动的、有意义的语言成分。计算机的所有语言知识都来自机器词典(给出词的各项信息)、句法规则(以词类的各种组合方式来描述词的聚合现象)以及有关词和句子的语义、语境、语用知识库。汉语信息处理系统只要涉及句法、语义(如检索、翻译、文摘、校对等应用),就需要以词为基本单位。例如汉字的拼音-字转换、简体-繁体转换、汉字的印刷体或手写体的识别、汉语文章的自动朗读(即语音合成)等等,都需要使用词的信息。切词以后在词的层面上做转换或识别,处理的确定性就大大提高了。再如信息检索,如果不切词(按字检索),当检索德国货币单位’马克’时,就会把’马克思’检索出来,而检索’华人 ‘时会把’中华人民共和国’检索出来。如果进行切词,就会大大提高检索的准确率。在更高一级的文本处理中,例如句法分析、语句理解、自动文摘、自动分类和机器翻译等,更是少不了词的详细信息。

 

2、汉语自动分词中的困难

    在过去的十几年里, 汉语自动分词工作虽然也取得了很大成绩,但无论按照人的智力标准,还是同实用的需要相比较,差距还很大。我们首先需要对这一工作的困难有充分的认识。

    1).分词规范的问题

    (1)汉语词的概念

     汉语自动分词的首要困难是词的概念不清楚。书面汉语是字的序列,词之间没有间隔标记,使得词的界定缺乏自然标准,而分词结果是否正确需要有一个通用、权威的分词标准来衡量。分词标准的问题实际上是汉语词与语素、词与词组的界定问题,这是汉语语法的一个基本、长期的问题。它涉及到许多方面:

    ·核心词表问题:分词需要有一个核心(通用、与领域无关的)词表,凡在该词表中的词,分词时就应该切分出来。对于哪些词应当收进核心词表,已提出各种收词条件,但这些条件本身难以操作,目前尚无合理的可操作的理论和标准。

    ·  词的变形结构问题:汉语中的动词和形容词有些可以产生变形结构,如“打牌”、“开心”、“看见”、“相信”可能变形成“打打牌”、“开开心”、“看没看见”、“相不相信”等。可以切分出“打打/牌”,但“开开/心”就不合理。“看/没/看见”说得过去,“相/不/相信”就说不过去了。又如大量的离合词 “打架”、“睡觉”等可以合理地变形为“打了一场架”、“睡了一个觉”。对这些变形结构的切分缺少可操作而又合理的规范。

    ·词缀的问题:语素’者’在现代汉语中单用是没有意义的,因此’作者’、“成功者”、’开发者’内部不能切开。依据这个标准, “作出了巨大个人财产和精神牺牲者”、’克服许多困难而最终获得成功者’、’开发中国第一个操作系统软件者’也不能切开,但这样复杂的结构与词的定义相矛盾。又如职务名称’教育局长’, 语义上理解为’教育局之长’,切成’教育/局长’、’教育局/长’、’教育/局/长’或不予切分,都会有人提出异议。

    · 非词语素问题:一些汉字在古代汉语中是词,演变到现代汉语时成了非词语素,例如“民”。现代的书面汉语并非纯粹的’现代汉语’,其中夹杂着不少文言成分,如“为民除害”、’以逸待劳’、’帮困济穷’等等。探寻白话文中夹杂文言成分的规律,是中文信息处理需要解决的一大问题。

    (2)不同应用对词的切分规范要求不同

    汉语自动分词规范必须支持各种不同目标的应用,但不同目标的应用对词的要求是不同的,甚至是有矛盾的。

    · 以词为单位的键盘输入系统:为了提高输入速度,一些互现频率高的相互邻接的几个字也常作为输入的单位,如:“这是”、“每一”、“再不”、“不多”、“不在”、“这就是”、“ 也就”等。

    ·  校对系统:校对系统将含有易错字的词和词组作为词单位,如许多人“作”、“做”分不清。计算机自动判别时,若把它们当作单字词也不好区分,但在同前后文构成的词或词组中往往可以有确定的选择,故应把有关的词和词组都收进词库,如“敢做”、“敢作敢为”、’叫做’、“做出”、’看作’、’做为’等。校对系统要求分词单位较大。如把’勇斗’、’力擒’、’智取’等分别作为一个分词单位并划归及物动词参与上下文检查。’张老师’、’五分之三’、’北京中医学院’ 也应分别作为分词单位,并分别归类作为人、数字、机构名,再参与上下文检查。

    · 简繁转换系统:’干’的繁体形式有“乾”和“幹”,它的简繁转换是非确定的。但在词和词组的层面上,它的转换常常是确定的。比如“幹部”、“幹事”、“乾净”、“乾燥”等。为了提高简繁转换的正确率,简繁转换系统把这类词或词组收进词表。

     · 语音合成系统:语音合成系统收集多音字所组成的词和词组作为分词单位,如“补给”、’给水’,因为在这些词或词组中,多音字’给’的音是确定的。

    · 检索系统:检索系统的词库注重术语和专名,并且一些检索系统倾向于分词单位较小化。比如,把’并行计算机’切成“并行/计算机”, ‘计算语言学’应切成 “计算/语言学”,使得无论用’并行计算机’还是用’计算机’、“计算语言学”或是“语言学”检索,都能查到。分词单位的粒度大小需要考虑到查全率和查准率的矛盾。

 

    2).分词算法的困难

    要将汉语文本的字序列切分成词的序列,即使确定了一个合适的分词标准,要实现这个标准也还存在算法方面的困难。

    (1)切分歧义

     汉语文本中含有许多歧义切分字段,典型的歧义有交集型歧义(约占全部歧义的85%以上)和组合型歧义。只有向分词系统提供进一步的语法、语义知识才有可能作出正确的决策。排除歧义常常用词频、词长、词间关系等信息,比如“真正在”中,“真”作为单字词的频率大大低于’在’作为单字词的频率,即’在’常常单独使用而“真”作为单字词使用的可能性较小,所以应切成’真正/在’。有时切分歧义发生在一小段文字中,但为了排除歧义,需要看较长的一段文字。如’学生会’既可能是一个名词,指一种学生组织,也可能是’学生/会’,其中’会’为’可能’或’能够’的意思。在“学生会主席”中只能是前者,在’学生会去’中只能是后者,在“学生会组织义演活动”中歧义仍然排除不了,则需要看更多的语境信息。

    (2)未登录词识别

     未登录词即未包括在分词词表中但必须切分出来的词,包括各类专名(人名、地名、企业字号、商标号等)和某些术语、缩略词、新词等等。’于大海发明爱尔肤护肤液’需要切分成’于大海/发明/爱尔肤/护肤液’,并需要识别出’于大海’是人名,“爱尔肤”是商标名,’护肤液’是术语名词。专名中还包括外族、外国名的汉译名,如’斯普林菲尔德是伊里诺州首府’,’丹增嘉措70多岁了’,其中的美国地名、藏族人名都需识别。未登录词的识别对于各种汉语处理系统不仅有直接的实用意义,而且起到基础性的作用。因为各种汉语处理系统都需要使用词频等信息, 如果自动分词中对未登录词识别不对,统计到的信息就会有很大误差。比如,一个分词系统若不做中外人名识别,分词后进行词频统计,可能会发现’张’、’王’、’李’、’刘’、“尔”、“斯”的频率比’却’、’如’、’你’ 的频率还要高,用这样的统计结果做汉语处理,其效果肯定有问题。又比如校对系统,如果系统不具备生词识别能力,就无法判断句子中大部分词的使用是否合理,也就不能检查真正的错误所在。

 (3) 分词与理解的先后

    计算机无法像人在阅读汉语文章时那样边理解边分词,而只能是先分词后理解,因为计算机理解文本的前提是识别出词、获得词的各项信息。这就是逻辑上的两难:分词要以理解为前提,而理解又是以分词为前提。由于计算机只能在对输入文本尚无理解的条件下进行分词,则任何分词系统都不可能企求百分之百的切分正确率。

 

3、分词系统的目标

    汉语自动分词系统达到怎样的水平才能适应信息处理的要求?我们认为可以从以下几个方面来衡量,即准确、高效、通用及适用。

    1).准确性

     准确率是分词系统性能的核心指标。现在有些分词系统的准确率达到98%,似乎已经很高了,其实不然。若这种分词系统被用来支持句法分析、汉-外机器翻译系统,假定平均每句话有10个汉语词,那么10句话中会错切2个词,含有切分错误的2句就不可能被正确处理。因此仅仅由于分词阶段的准确度不够,语言理解的准确率就会减少20%。可见,分词系统的准确率应达到99.9%以上才能基本满足上层使用的要求。

    2).运行效率

    分词是各种汉语处理应用系统中共同的、基础性的工作,这步工作消耗的时间应尽量少,应只占上层处理所需时间的一小部分,并应使用户没有等待的感觉,在普遍使用的平台上大约每秒钟处理1万字或5千词以上为宜。

    3).通用性

     随着Internet的普遍应用,中文平台的处理能力不能仅限于我国,仅限于字处理,仅限于日常应用领域。作为各种高层次中文处理的共同基础,自动分词系统必须具有很好的通用性。自动分词系统应支持不同地区(包括我国的香港、台湾、澳门,以及新加坡和美洲、欧洲、澳洲的华语社区)的汉语处理;应能适应不同地区的不同用字、用词,不同的语言风格,不同的专名构成方式(如港澳台地区一些妇女名前冠夫姓,外国人名地名的汉译方式与我国人名地名很不一样)等;支持不同的应用目标,包括各种输入方式、简繁转换、语音合成、校对、翻译、检索、文摘等等;支持不同领域的应用,包括社会科学、自然科学和技术,以及日常交际、新闻、办公等等;应当同现在的键盘输入系统一样成为中文平台的组成部分。为了做到足够通用又不过分庞大,必须做到在词表和处理功能、处理方式上能灵活组合装卸,有充分可靠和方便的维护能力,有标准的开发接口。同时,系统还应该具有良好的可移植性,能够方便地从一个系统平台移植到另一个系统平台上而无需很多的修改。当然,完全的通用性很难达到。

    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、基于统计的分词方法

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

 
三、几种典型的自动分词系统评介

 

    衡量自动分词系统的主要指标是切分精度和速度。由于切分速度与所运行的软、硬件平台密切相关,在没有注明运行平台时,切分速度只是一个参考指标,没有可比性。另外,所注明的切分精度都是开发者自测试的结果。

(续)
附:第二稿补充或改动的内容

      1、汉语自动分词的一般模型;

      2、北京师范大学自动分词专家系统;

      3、清华大学分词标注系统CSegTag;

      4、哈工大统计分词系统;

      5、杭州大学改进的MM分词系统;

      6、自动分词的“生成—测试”方法与语委文字所基于句法分析技术的

   汉语自动分词系统;

      7、Microsoft Research 汉语句法分析器中的自动分词;

Advertisements

系统维护常用配置文件 四月 12, 2005

Posted by wansion in 计算机与 Internet.
add a comment

系统维护常用配置文件  

1./etc/hosts
   主机名字解析文件,提供主机名和IP地址的对应。

2./etc/passwd
   口令文件,内容为:
登录用户名:加密口令:用户ID:组ID:保留:初始工作目录:shell路径

3. /etc/group
   内容为:
组名:加密密码:组ID:所有属于该组的用户。

4. /etc/profile
   如果该文件存在,则每个用户登录时将执行该文件。该文件一般用于设置一些通用环境变量,如果用户的home目录中存在.profile文件,则在执行/etc/profile之后,再执行用户的.profile文件。

5. /etc/inittab
   内部初始化之后,系统将启动/etc/init这个deamon进程,使/etc/init进程取得引导序列的控制权。而init进程从文件/etc/inittab(init table,初始化表)取得指示,该文件 的内容控制所有init状态,同时也控制那些已消亡进程的再生。

6. /etc/fstab
   系统中可以mount的文件系统的信息。

7. /etc/lvmtab
   使用命令:
# strings /etc/lvmtab;查看系统VG和磁盘信息。

8. /etc/rc.config.d/netconf
   包含系统名称和网络配置信息,如IP地址、子网掩码和路由信息等。

9. /stand/system
   包含系统的驱动程序和子系统信息,内核设备信息和一些系统可调参数信息。

 

 系统维护基本命令
 

1) tail 和 head
   使用tail命令可以查看文件的尾部,head命令则查看文件的头部。
# tail filename
# tail -f filename; 使tail不断执行,当文件被写入时显示文件的新行。
#head filename
2) date 和 cal
   cal命令显示日历。
# cal 2000
# cal 1 2000
3) find
   find命令是功能最强的命令之一,但同时也是命令行结构最难以掌握的命令之一。
# find / -print | wc -l 显示系统中所有文件和目录的数目。
# find / -user $LOGNAME -print 显示系统中该用户所有文件和目录。
# find / -size 100 -print 显示文件大小为100 blocks。
# find / -size -100 -print 显示文件大小小于100 blocks 。
# find / -size +100 -print 显示文件大小大于100 blocks 。
# find / -name core -exec rm {} \;查找并删除core文件。
# find . -exec chown $LOGNAME {} \; 修改一个目录下的所有文件的用户所属。
# find .-type d -exec chmod 770 {} \;修改一个目录下的所有目录的权限。
4) stty
   该命令用于检查和修改用户当前注册终端的通信参数。
# stty -a;查看当前注册终端的通信参数。
# stty -ixon;设置ixon为off。
#stty ixon;设置ixon为on。
# stty sane;当终端发生混乱时,通常可以产生有益的效果。
5) tset
   用于设置终端类型。
tset -s -Q -m ‘:?hp’
6) cron
   cron(chronography,计时),每分钟苏醒一次,查看控制文件以确定当时是否存在应运行的作业,存在则运行之。
# crontab filename ; 创建一个 cron
# crontab -r ; 把cron从crontab去掉
crontab位于目录/var/spool/cron/crontabs下,每个用户的cron文件名是其用户名。
7) ioscan
   #ioscan -fn (用这个命令,我们可以看到所有的设备及其设备文件等信息。)

例如:查看CD-ROM的设备文件
#ioscan -fnCdisk
Class I H/W Path Driver S/W State H/W Type Description
===================================================================
disk 6 4.8.0 sdisk CLAIMED DEVICE SEAGATE ST34371W
/dev/dsk/c0t8d0 /dev/rdsk/c0t8d0
disk 7 4.11.0 sdisk CLAIMED DEVICE SEAGATE ST34371W
/dev/dsk/c0t11d0 /dev/rdsk/c0t11d0
disk 5 16/5.2.0 sdisk CLAIMED DEVICE TOSHIBA CD-ROM XM-5401TA
/dev/dsk/c3t2d0 /dev/rdsk/c3t2d0
http://www.uxma.com/sheke/news/pic/8.swf
其中描述为" TOSHIBA CD-ROM XM-5401TA"的设备
就是CD-ROM,设备文件为/dev/dsk/c3t2d0。

 bdf
   该命令用于检查文件系统的使用情况。

#bdf
Filesystem kbytes used avail %used Mounted on
/dev/vg00/lvol1 67733 35561 25398 58% /
/dev/vg01/lvol1 20480 11675 8247 59% /home

各列的含义:
Filesystem:文件系统名
kbytes:字节数,以k为单位
used:已使用空间
avail:尚可使用空间
%used: 已使用空间占本文件系统全部空间比率。
Mounted on: 安装目录
注: %used达到90%以上时,应考虑做必要的文件清理工作

9) lanscan
    用 lanscan 命令查看主机中的网卡。例如:
# lanscan
Hardware Station Crd Hdw Net-Interface NM MAC HP-DLPI DLPI
Path Address In# State NamePPA ID Type Support Mjr#
10/4/8 0x00108318E6E8 0 UP lan0 snap0 1 ETHER Yes 119
10/12/6 0x0060B0C44462 1 UP lan1 snap1 2 ETHER Yes 119

上述命令显示主机中有3块网卡,它们的有关参数如下:
硬件地址分别是 10/4/8、10/4/12(Hardware Path)
网卡名是 lan0、lan1(Net-Interface Name列)
各网卡的NMID是 1、2(NMID列)
各网卡的工作状态是 UP、DOWN、UP (Hdw state列)
各网卡的MAC地址是Station Address所对应的列。

一个网卡要能够正常工作,首先它的工作状态(Net-Interface name)必须是UP。
用 ifconfig 命令查看网卡对应的IP地址。例如:

# ifconfig lan0
lan0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST>
inet 15.85.114.14 netmask fffff800 broadcast 15.85.119.255

在网卡lan0上的地址是15.85.114.14(inet),子网掩码ffff800,广播地址15.85.119.255

10) ifconfig

# ifconfig lan0
lan0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST>
inet 15.85.114.14 netmask fffff800 broadcast 15.85.119.255

在网卡lan0上的地址是15.85.114.14(inet),子网掩码ffff800,广播地址
15.85.119.255

11) 更改主机IP地址      
1. 首先使用"lanscan"和"ifconfig"命令查出该网卡的设备名
2. 使用vi命令编辑/etc/rc.config.d/netconf文件。找到
INTERFACE_NAME[0]=lan1
IP_ADDRESS[0]=""
SUBNET_MASK[0]=""
BROADCAST_ADDRESS[0]=""
将原有的IP地址和SUBNET_MASK改成新值
3. 使用vi 命令编辑/etc/hosts文件,改变对应主机名的IP地址
4. 注意:不要在CDE环境中,直接改变IP地址,应退出CDE环境,完成修改过程。