班智达藏文标注词典设计
2010-06-05才智杰才让卓玛
才智杰, 才让卓玛
(青海师范大学 藏文信息研究中心,青海 西宁 810008)
1 引言
大规模语料库是除自然资源以外的重要资源,各国目前已把实现大规模真实文本的处理作为自然语言处理今后一个时期的战略目标,从大规模的语料库中提取、归纳、分析、概括出所需要的知识和信息。藏文和汉文都是字的序列,词之间没有间隔标记,使得词的界定缺乏自然标准,这就需要分词。分词是理解自然语言的第一步,在此基础上标注词性,分词、标注的语料可供划分短语、抽取概念以及分析主题,以至自然语言理解,最终实现智能化[1]。
近年来随着藏文信息处理技术的不断发展,研究人员已意识到藏文自动分词标注的重要性,在借鉴汉语分词标注研究已有成功经验的基础上,藏文自动分词标注也取得了一些有价值的研究成果。目前藏文分词标注主要采用基于词典的分词标注,基于词典的分词标注是把分词标注所需的各种信息都以词典的形式存储,在整个分词过程中都需要频繁地访问词典以获得词语信息。因此词典的设计和查询是整个分词标注系统的关键。《班智达藏文自动标注系统》的研制为藏文输入法研究、藏文电子词典建设、藏文字词频统计、搜索引擎的设计和实现、机器翻译系统的开发、网络信息安全、藏文自动分析等方面的研究奠定了基础。
2 藏文自动标注的过程
《班智达藏文自动标注系统》采用模块化设计,由知识库管理模块、知识库模块、句子分块模块、块分词模块、标注模块和校正模块等六部分组成。
自动标注系统的总体设计思想是基于词典的最大匹配算法。先将待切分文本分块,然后按照一定的策略将待分析的字串与词典中的词条进行匹配,若在词典中找不到某个字串,则将字串缩小继续查找,否则匹配成功,识别出一个词,并加以标注。藏文分词标注需要四步完成[2]:文本切分成句,句切分成块,块切分成词,词性标注,其处理过程如图1所示。
图1 分词标注流程
3 词典设计
3.1 主词典库设计
词典库是基于词典的分词标注系统的核心,由于《班智达藏文自动标注系统》采用基于词典匹配的分词方法,因而词典库设计的合理性直接影响其性能。通过对85万字节原始藏语语料的统计及切分实验,班智达藏文自动标注词典库共收录了95 970条词,词条分布见表1。
表1 班智达藏文自动标注词典词条分布统计表
由表1可以看出班智达藏文分词标注词典库中长度最小的是1个字符,长度最大的达40个字符,词条基本集中在1~20个字符之间,20个字符以上的词条共467条,约占总词条数的0.49%,随字符数的增加词条数递减。通过在85万字节藏语语料统计,文本中出现的词绝大部分是3~13个字符(在词典库中共有87 672条,占总词条的91.4%)构成的词,少部分由1、2、14~20个字符(在词典库中共有7 831条,占总词条的8.11%)构成的词,20个以上字符组成的词出现的频率很低。假若按常规模式建立词典库,一方面由于词典库规模太大而增加模式匹配次数,分词速度将受到影响;另一方面,由于词间字符数悬浮太大而出现数据冗余再现,浪费系统资源。因此,为了减少查词典的次数和计算量,提高藏文分词标注的速度,班智达藏文自动标注系统在建立词典库时按词条字符数分成高频用库、常规库和稀疏库等三种,并针对“最大匹配算法”的实际需要,设计了藏文分词的“最大匹配索引法”。
整个词库采用线性表组织,并通过分块和索引的方法来提高词库的检索速度,以减少进行匹配的词条数。首先对词条按字符数分块,字符数相同的词条放到同一组,并组内排序。一级索引加在各个分组上,一级索引记录组成块的字符数length和该项块的首地址head1,再根据下一分组块的首地址确定该分组的终止地址,组首地址可通过哈希函数f(n)=(n-1)×30+1确定。二级索引是加在一级索引内部,记录词条的字符数length、首字符WH和length个字符且首字符为WH组成的词在库中首地址,在同一组内部由于有很多的词条,二级索引是按词的首字符建立,它加在以不同字符开头的词条组中,这样通过二级索引可以进一步缩小查找范围。使用这种结构存储库,不但可以提高查询速度,同时解决了由于藏语词条间字符数悬浮太大而出现的数据冗余现象。
在藏语词语标注分类体系的构建上,根据藏语语料库自动切分和标注的实际需要,采用先分虚实词,再确定大类,在大类的基础上分出小类,再分出不同深度的子类。大类类划分为21个一级类,60个二级类,二级类是在确定了基本属性的基础上对一级类的分解,也是对词类信息的进一步丰富。依据国际通常做法,标记代码主要采用英文术语中的字母。例如,“名词”,采用英文术语“noun”的首字母“n”作为标记代码;“数词”,采用英文术语“numeral”的第三个字母“m”作为标记代码。藏语独有的或使用英文术语字母不便的,依据国内通常做法,标记代码采用汉语拼音字母。如,“格助词”采用汉字“格”汉语拼音的首字母“g”作为标记代码;“状态词”采用汉字“状”汉语拼音的首字母“z”作为标记代码。库结构描述如下:
Typedefine struct index1
{int length;//描述组成词的字符数
int head1;//描述length个字符组成的词在库中首地址
}ID1;
Typedefine struct index2
{ int length;//描述组成词的字符数
string[] WH;//描述词的首字符
int head2;//描述length个字符且首字符为WH组成的词在库中首地址
}ID2;
Typedefine struct data
{sting[] Word;//存储词
Char G1;//存储一级词性
Char G2;//存储二级词性
}DT;
库结构中部分内容的索引表如图2所示。
图2 索引表结构示意图
3.2 临界库设计
例如对下面藏文文本直接利用最大匹配算法其时间复杂度为35!≈1.03×1040,而先用特殊格助词分块然后再切分其时间复杂度为3!+2!+9!+16!+11!≈2.09×1013,有效地提高了切分速度。
3.3 临时库设计
未登录词的识别是分词技术的难点[3-4],基于词典的模式匹配分词标注系统而言未登录词的识别就更为重要。为解决未登录词的识别问题,班智达藏文自动标注系统中建立临时库后采用智能和人工两种方法识别未登录词。智能识别法:对无法分词的字符串,统计这个子串在整篇文章中出现的频率,若频率较高则将此视为一新词,把该词自动添加到临时库,这种将词库与词频统计相结合的方法可提高未登录词的识别率,通过实验用这种方法能够识别85%以上的未登录词;人工识别法:人工阅读文本时若发现某未登录词,则选择该词利用添加功能把词添加到临时库。通过知识库管理模块把临时库中新抽取出的词条添加到主词典库,这样在实际应用中,可不断扩充系统的词库,提高信息的查全率。
4 词库索引查询算法
4.1 索引查询算法
索引查询算法是索引搜索策略的形式化描述和具体实现,由以上分词标注库结构描述可知,索引查询算法的主要特点是通过建立二级索引减少查询词库的次数,从而提高分词标注系统的性能[5]。具体算法如下:
1) 按照“最大匹配切分算法”从文本开头取出一个最大待查字串;
2) 求出该字串的长度,并根据哈希函数f(n)=(n-1)×30+1确定ID2的首地址和终地址;
3) 在ID2的首地址到终地址间利用折半查找算法查找字串中的首字符,根据head2字段确定DT中的首地址和终地址;
4) 在DT的首地址到终地址间利用折半查找算法查找字串。若字串在词典库存在,则分词并加以标注,否则缩小字串并转至2)。
4.2 索引查询过程举例
下面结合3.1和4.1给出的结构和算法,通过一个分词标注实例来介绍分词标注词典库中索引查找的具体实现过程。
5 结束语
藏文自动分词标注的研究,将推动机器翻译、语音合成、文字识别技术的发展。随着歧义性研究的进展,还可进一步提高分词准确率。
[1] 陈玉忠,李保利,俞士汶,等.基于格助词和接续特征的书面藏文分词方案[J].语言文字应用,2003,(1):75-82.
[2] 才智杰.藏文自动切分系统中紧缩词的识别[J].中文信息学报,2009,23(1):35-37,43.
[3] 孙茂松,黄昌宁,等.中文姓名的自动辨识[J].中文信息学报,1995,9(2):16-27.
[4] 孙茂松,邹嘉彦,等.汉语自动分词研究评述[J].当代语言学,2001,(1):22-32.
[5] 李庆虎,陈玉健,孙家广.一种中文分词词典新机制——双字哈希机制[J].中文信息学报,2003,17(4):13-18.
[6] 陈玉忠,李保利,俞士汶,等.藏文自动分词系统的设计与实现[J].中文信息学报,2003,17(3):15-20.
[7] 陈玉忠,俞士汶.藏文信息处理的研究现状与展望[J].中国藏学,2003,(4):97-107.