自动答疑系统中文分词模块的设计与实现
马新意,王剑辉
(沈阳师范大学 数学与系统科学学院,辽宁省 沈阳市 110034)
摘要:本文对国内外自动答疑系统的研究现状进行了分析,对常用的分词词典机制和分词算法进行了理论研究,深入讨论了分词过程中常出现的歧义问题,提出了基于双字哈希索引的词典机制,并将改进的最大匹配算法与串频统计相结合,提高了中文分词的准确性,对自动答疑系统中的中文分词模块进行了设计与实现,通过实验证明该分词系统具有良好的切分精度和实用性。
关键词:中文分词算法,分词词典机制,最大匹配算法,交集型歧义
中图分类号:TP302.2 文献标识码:A
Design and Research of Chinese word Segmentation Module in automatic answering system
Ma Xinyi,Wang Jianhui
(school of Mathematics and Systems Science, Shenyang normal University, Shenyang, Liaoning Province, 110034)
Abstract: In this paper, the current research situation of automatic question answering system at home and abroad is analyzed, the commonly used word segmentation dictionary mechanism and word segmentation algorithm are theoretically studied, and the ambiguity problems that often occur in the process of word segmentation are discussed in depth. A dictionary mechanism based on two-word hash index is proposed, and the improved maximum matching algorithm is combined with string frequency statistics to improve the accuracy of Chinese word segmentation. The Chinese word segmentation module in the automatic answering system is designed and implemented. Experiments show that the segmentation system has good segmentation accuracy and practicability.
Key words: Chinese word Segmentation algorithm, word Segmentation Dictionary Mechanism, maximum matching algorithm, intersection ambiguity
0.引言
随着网络技术的迅猛发展和教学主体的转移,在线网络教学已成为现代教育的重要形式之一。网络教育在充分利用网络现有资源的基础上,不仅节约了教育成本更提高了效率。同时,网络教学平台为教师和学生提供了一个不受任何限制的交流场所。既节省了教育资源,又避免了一位教师要回答几十名同学的问题,应接不暇的情况。因此,一个功能良好的自动应答系统的出现是非常必要的,而中文分词模块的建立是自动应答系统的重中之重。
1.国内外研究现状
1.1国外研究现状
国外成功的智能应答系统包括AskJeevesforKids在线智能应答系统、START应答系统、AnswerBus和FAQFind应答系统。从智能的角度来看,由于西方语义学的特点和对分词技术的早期研究,国外的系统具有更高的智能性和更高的召回率和精确度。
最早的系统START于1993年推出。Start系统的目的是向用户提供正确的信息,而不仅仅提供点击量列表。目前,该系统可以回答关于地理、电影、人物等相关问题,问题的答案不局限于文本,也可以是图片、声音、动画等。[1] AnswerBus是基于搜索引擎的答疑系统,选择 Google, Yahoo, Yahoo News, Alta Vista和 Wisenut作为搜索引擎。
1.2国内研究现状
国内对答疑系统的研究始于20世纪90年代末,从一开始没有单独的答疑部件,师生通过留言板、电子邮件等方式交流;再到清华大学远程教育等系统具有最初的答疑组件,教师和学生可以通过WEB异步或实时讨论;然后逐步开发具有自动应答功能的应答部分,如上海交通大学的Answer Web自动应答系统。而且,由于中文语义的复杂性和中文分词技术的难度,国内大多数系统都存在一些缺点。如系统智能化程度不高、系统查全查准率不高、系统运行负荷超载、系统跨平台性不好等[2],因此,没有多少系统可以广泛使用和受到好评。
2中文分词技术
与外语中单词和单词之间的自然分隔符不同,中文句子连续写入,句子中的两个或多个单字形成单词。同一个词在不同的语境中表达的意思也不同,错误的分词方法会改变原句的含义造成歧义,对信息检索的结果产生影响。如何让计算机理解和判断是否是一个词,这个过程就是中文分词。
2.1分词技术的现状
苏联学者首先提出“6-5-4-3-2-1”的分词方法。近年来,越来越多的企业也投身到这一领域中。海量公司从1999年开始从事中文语义的研究,采用复方分词法与多种算法相结合来处理问题,是目前中文语义识别领域最领先的企业之一;中科院面向商用市场推出了分词产品ICTCLAS,取得了不错的反响;托尔斯、方正、盛大研究院等机构,从2005年后开始从事中文分词研究,并应用于企业自身业务领域。
2.2常见的中文分词方法
目前,中国有三种常用的分词方法。基于字符串的分词使用机器字典作为分词的基础。要处理的中文字符串根据特定策略与机器字典中的术语匹配。如果找到字符串,则匹配成功识别单词。统计结果表明,仅使用正向最大匹配比单独使用逆向最大匹配的误差率更大。在实际的分词操作中,机械分词经常被用作初步分词的手段,并且有必要通过与其他后续方法相结合来进一步提高分词准确率。
基于统计的分词仅需要统计文本中字块的频率。该方法的缺点是系统资源开销很大,并且还存在共现频率高却不是词的情况。另一类是机器学习的方法,这种方法利用汉语组词的规律性,要求有大量预先分好词的文本作支撑,利用统计机器学习的模型训练切分词语的能力,进而实现对未知文本进行切分。[3]
基于理解的分词是让计算机模拟人员分析和理解句子,综合考虑分词过程中的句法分析和语义分析,达到明确分词的效果。在一般控制部分的协调下,分词子系统可以获得与文档相关的句子和词语的句法信息和语义信息。句法和语义子系统模拟人类的分析和理解过程来判断分词。这种分词需要大量的语言知识和信息作为分词和消歧的基础。将通用语言信息存储转换为可由计算机直接读取的形式是我们必须克服的困难。
2.3中文分词技术的应用
中文分词技术的核心是中文信息处理,是自然语言处理的基础,在信息检索,语音合成,自动分类,自动校对,简化和传统转换,自动摘要等方面有许多重要应用。
如今,互联网中具有海量的信息,各类信息混杂在一起,要想充分利用这些信息资源就要对它们进行整理,这巨大的工作量非人力所能及。比如之前百度发生的复大医院推广事件,一位患者想去复旦大学附属医院就医,通过百度查询之后搜索到的结果是“复大医院”,该患者前去就医后发现自己百度到的“复大医院”并不是真正的复旦大学附属医院,百度表示这是由于两所医院的名称存在一定的语义相似性才出现的情况,并再度扩展了品牌保护关键词库。因此,只有引入并不断提高分词技术,才能使检索的结果更加准确。
Word提供文本的自动转录,但中文中有大量的同音词和复音词。无论是语音合成还是拼音自动注释,都需要识别正确的拼音。多音字的判断需要联系上下文,通过语义和语境才能进行辨识定音。
3中文分词模块的设计
3.1分词词典的设计
分词词典的设计是中文分词的重要组成部分。典型的分词词典机制有三种主要类型。
全二词词典机制的词典结构分为词典文本,词索引表和首字哈希表三个部分。[4]通过首字哈希表的哈希定位和词索引表,可以确定单词主体的可能位置范围,进而将整词二分法用于定位。TRIE索引树的字典机制由TRIE索引树节点和首字散列表组成,索引树节点是按关键字排序的数组。对应首散列表的单元包括TRIE的大小和指向汉字索引树的根节点的指针。
通过观察中文词语构成的特点,发现汉语中的双字占中文词语的一半以上。字典由字符串首字哈希表,字符串次字哈希表,剩余字的索引表和剩余字的字典文本组成。这就使TRIE索引树实现了两个字以下的短语的匹配,线性表实现了三个字以上短语的匹配,避免深度搜索以提高中文分词的速度。
词典机制 |
优点 |
缺点 |
基于整词二分法的词典机制 |
数据结构简单、占用空间小、词典容易构建和维护 |
采用全词匹配的查询过程、查询范围大、效率低下 |
基于TRIE索引树的词典机制 |
采用逐字匹配的查询过程、查询效率高 |
数据结构复杂、树的构造和维护较繁琐、浪费空间 |
基于逐字二分法的词典机制 |
采用逐字匹配的查询过程、提高匹配的效率 |
不是完全意义上的逐字匹配,没有改进数据结构 |
基于双字哈希索引的词典机制 |
采用双字哈希和逐字匹配、提高中文分词的速度 |
词典规模较大时,查询效率并没有得到较大的提高 |
表1 四种分词词典机制比较
3.2常用的中文分词算法——正向最大匹配算法
基于最大匹配的分词具有算法简单,分词速度快,开销低等特点,是实际应用中应用最广泛的分词。正向最大匹配的分词法首先需要一个收录了尽可能多词的分词字典,按照某种原则截取长度为 m的子串,如果子字符串成功匹配分词字典中的词,则子字符串被视为构成词语,并从原文中删除,然后继续匹配其余部分。否则通过减少一个单字继续比较,直至剩余一个单字为止。如果没有匹配成功,则根据相应的原则重复拦截和匹配。如果该单字串无法切分,则作为新词录入。最大的匹配是尽可能地将句子中的字符串与最长的单词匹配,以使每个句子段结果中的单词总量最少。
图1 正向最大匹配算法流程图
3.3改进的中文分词算法
正向最大匹配算法在具有操作容易、应用范围广的同时也存在着一些不足之处。首先要人为设定一个最大词长m,如果最大词长太短,长度超过最大词长的词句就切分不出来,算法效率较低;如果最大字长太长,则匹配所花费的时间增长。[5]因此,系统采用优化的最大匹配算法和串频统计相结合的方法,不仅起到快速匹配字符串的作用,它还结合了上下文来识别新词,具有自动消除歧义的优势。改进的最大匹配算法改变了原算法的不灵活性,动态地获得最大字长作为分词的基础。
算法的流程如下:
(1)先处理字符串的第一个字,根据首字哈希表找到第一字的存储位置。
(2)获取第一个字的二级索引指针,将该字符串的二级字符与二级索引的哈希表进行匹配,如果匹配成功,则进入下一步骤;如果匹配失败,则将第一个单词拆分为单个字。如果待处理的字符串仍大于1,则转入第一步骤。
(3)找到对应于子字哈希表的剩余字符串指针,并获得前缀为第一个字并且剩余长度为n的字符串。
(4)截取首字后,按照长词优先的原则,对剩余字符进行匹配,若匹配成功,将结果切分出来;如果匹配失败,删除字符串最右边的字符并继续匹配剩余的字符串,直到匹配成功,然后拆分结果。如果待处理字符串仍大于1,则转入第一步骤,否则切分结束。
图2 改进的分词算法流程图
3.4歧义的发现与消除
中文是一门非常复杂的语言。歧义意味着可能存在两个或更多个分词结果对于同一句子的分词。交集歧义是指两个相邻单词之间有重叠。如“化妆和服装”中,“和服”和“服装”都是词,它们重用了一个“服”字。组合歧义意味着词的一部分也是一个完整的词。这种歧义要根据整个句子进行判断,如“中国社会主义”中“中国”、“社会”、“主义”都是词,但它们合在一起也是词。真歧义是指给出一句话,如果不联系上下文的意思,人们无法做出判断,同样的词在不同的语境下有不同的分词结果,如在句子“将军任命了一名中将”中,“中将”是一个词,但在“价格在两年中将增长一倍”中,“中将”不再是一个词,这使得识别计算机变得困难。
新词识别是指未包括在分词词典中的单词,包括人名,地点,新单词,缩写,专有名词等。没有包含所有这些词的词典。然而,未注册词的识别对分词结果的有效性具有巨大影响。
根据文献[6]对交集型歧义字段中链长分布数据的统计发现,在交集型歧义字段中主要以链长为1、2、3的歧义字段为主,因此本文主要以消除交集型歧义字段为主。
链长 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
总计 |
交集型歧义字段数 |
47240 |
28790 |
1217 |
680 |
29 |
19 |
2 |
1 |
78068 |
所占比例(100%) |
60.72 |
36.89 |
1.56 |
0.78 |
0.04 |
0.02 |
0.00 |
0.00 |
100 |
歧义字段出现次数 |
12686 |
10131 |
743 |
324 |
22 |
5 |
2 |
1 |
23914 |
所占比例(100%) |
53.05 |
42.36 |
3.11 |
1.35 |
0.09 |
0.02 |
0.01 |
0.01 |
100 |
表2 交集型歧义字段中链长的分布
在本文中,通过双向最大匹配方法发现歧义,双向最大匹配方法的优点是它只需要一次扫描就能找出是否存在交叉类型模糊字段。[7]在形式上,一个词是一个稳定的组合,互信息的大小很好地代表了中文单词形成的准确性,因此互信息方法用于消歧。互信息的消歧策略是比较交叉点模糊字段中前一个字符串和下一个字符串之间的互信息的大小。对于形如 XJY这样的歧义字段,若 M( X, J) >M( J, Y),则将句子切分成 XJ/ Y,否则将句子切分成 X/ JY。 [15]
用互信息M(X,Y)表示两个字符X、Y的紧密程度,则有公式:
M(X,Y)=
P(X,Y)=n(X,Y)/N P(X)=n(X)/N P(Y)=n(Y)/N
其中n(X,Y)表示字符XY在文档中出现的次数,n(X)、n(Y)分别表示字符X、Y在文档中出现的次数,N表示整个文档中字符的个数,P(X,Y)表示X、Y两字相邻共现的概率,P(X)、P(Y)分别表示X、Y在文档中出现的概率。
4中文分词模块的实现
设计的中文分词模块主要由预处理、分词、歧义发现、歧义消除这四个子模块构成。首先加载词典,本文的分词词典包括基本词典与专业词典两部分,其次对待切分文本进行预处理,用“/”或空格来区分文本中的数字、英文和汉字串。分词算法以预处理后的元句子为单位进行。
图3 中文分词模块的构成
图4 中分分词系统的页面设计
系统可以通过文本文件和输入框两种方式获取待处理文本,用户可以在分词界面选择不同的分词算法,分词完成后界面显示分词结果和分词过程的总耗时,以此对算法性能进行检测。在实验过程中,随机选择包含交叉模糊度的四组文本,并通过四种算法进行分割。目的是证明基于交叉类型模糊度改进的最大匹配算法具有更高的准确性。切割精度=正确切割的单词数/正确结果的单词总数* 100%;切分速度=切分结束时间-切分开始时间。
|
4875个字 |
21456个字 |
1326个字 |
16314个字 |
平均值 |
正向最大匹配算法 |
96.3% |
96.3864% |
96.5476% |
96.3992% |
96.4083% |
反向最大匹配算法 |
96.5462% |
96.6964% |
96.6012% |
96.5234% |
96.5918% |
最大匹配改进算法 |
96.5462% |
96.7204% |
96.6218% |
96.5628% |
96.6128% |
避免交集型歧义的最大匹配改进算法 |
96.5462% |
96.835% |
96.6356% |
96.6012% |
96.6545% |
表3 四种分词算法的切分精度比较
本文采用双字哈希索引的词典机制,Web界面采用java语言进行设计和实现,数据库采用MySql,最终实现了对给定的文本进行分词。从实验中看到四种算法的精确率在96%以上,但是由于对新词、人名等词汇未能准确识别,重点只放在比较四种算法的切分精度上,仍有一些需要改进的地方,如对真歧义的字段没有很好的消歧能力,导致算法在切分精度上无法进一步的提高,对未登录词的切分有所欠缺等,下一步的工作是设计一个专门识别人名、地名的模块,解决未登录词的问题。
5结束语
本文在分词词典和分词算法研究的基础上,提出了一种基于双词哈希索引的词典机制,将改进的最大匹配算法与串频统计相结合,设计并实现了中文分词模块,通过改进分词算法提高分词系统的歧义处理能力。该中文分词系统可以研究共同的交叉歧义,并通过互信息方法消除歧义,从而提高中文分词的准确性。通过实验证明中文分词系统取得了良好的分词效果,极大的满足了中文分词的需要。
参考文献:
[1] 刘迁,贾慧波.中文信息处理中自动分词技术的研究与展望[J].计算机工程与应用.2006,42(3):170-175
[2] 张春霞,郝天永.汉语自动分词的研究现状与困难[J].系统仿真学报.2005,17(1):138-147
[3] 莫建文,郑阳,首照宇.改进的基于词典的中文分词方法[J].计算机工程与设计,2013,34(5)
[4] 孙茂松,左正平,黄昌宁.汉语自动分词词典机制的实验研究[J].中文信息学报,2004,14(1):1-6
[5] 王瑞雷,栾静,潘晓花,卢修配.一种改进的中文分词正向最大匹配算法[J].计算机应用与软件.2011,28(3):194-197
[6] 郑德权,于凤,王开涛等.基于汉语二字成词的歧义字段切分方法[J].计算机工程与应用,2003,40(1):17-18
[7]郑晓刚,韩立新,白书奎.一种组合型中文分词方法[J].计算机应用与软件,2012,7(29):26-28