论文部分内容阅读
[摘 要]在藏文音节字构件中基字占有重要的地位,只要准确的识别出基字的位置,可通过音节字的长度来获得其他构件,并以基字为核心来判断组成音节字其他构件的搭配是否符合规则。本文通过研究藏文音节字构件组合语法,提出了一种基于基字识别的藏文音节字检错算法。该方法不使用藏文音节字词典及大规模语料库的支撑。通过实验,该方法自动检错藏文音节字的正确率为97%。
[关键词]藏文音节字;基字;自动检错
中图分类号:TP391.1 文献标识码:A 文章编号:1009-914X(2014)42-0260-03
Research on an detection algorithm of error Tibetan syllable based on Jizi recognition
Cai Rang San Zhi,GAO Dingguo, Tashi igyal, Guan Bai
(Tibet University, Lhasa,Tibet 850000, China)
[Abstract]Jizi plays an important role in the Tibetan syllable component. So long as the position of Jizi is recognized correctly, we can get other components through the length of syllable and take Jizi as core to judge whether the collocation of other components, which forms syllable, conforms to rules can detcet error Tibetan syllable.This article proposes an error detection algorithm of Tibetan syllable based on Jizi recognition by researching the combination grammar of Tibetan syllable component. And this method doesn’t get any support of Tibetan syllable dictionaries and large-scale corpus. Through the experiments, this method’s accuracy to detect Tibetan syllable automatically is 97% .
[Key words]Tibetan syllable; Jizi; automatic error detecting
引言
随着互联网及藏文信息技术的发展,出现了海量的藏文电子文本。这些电子文本在藏语语料库、机器翻译、信息检索、语音识别和语音合成等领域的研究中有着重要的作用。但这些电子文本的质量参差不齐,不能直接使用于研究。因此,在使用这些电子文本前,进行校对是一项重要的工作环节。
国外在文本校对研究方面起步较早,大约始于上世纪六十年代左右,其中英文文本的校对成果最为突出,大部分成果实现了产品化[7]。英文校对主要采用最小编辑距离和相似键技术以及自然语言统计技术等来实现的。最为常见的英文校对研究成果有office字处理软件中嵌入的英文拼写检查功能。国内对汉文文本的校对研究始于二十世纪九十年代初期。汉文文本的校对主要采用基于混淆集的特征方法、基于模式匹配的校对方法和基于散串技术的校对方法等,与国内其他少数民族的文字校对技术相比,成绩最为突出,且部分校对技术成果已产品化。
藏文自动校对研究始于上世纪九十年代末,《一个藏文拼写检查系统的设计》是藏文自动校对方面的第一篇文章。藏文属拼音文字,但与同属拼音文字的西文有着很大的区别,藏文独特的语法体系、书写方式和文化背景等造就了与其他拼音文字之间的差异。因此,其他较为先进的拼音文字校对方法、策略和技术等不能直接用于藏文文本校对中。研究藏文文本校对需立足于藏文字本身的组合规则、语法特点、发展规律和使用习惯等方面进行研究。藏文自动校对技术在近十几年的发展中取得了一些成果,但主要是以词典匹配为主。基于词典匹配的校对有以下局限性:1)语言是个动态现象,每时每刻都发生着变化,尤其词汇方面的发展和变化最为突出。2)藏文音节字的组合是由特定的语法规则来完成的,但目前实际使用的符合语法规则的藏文音节字的数量小于依照藏语语法所能组合的音节字的总和。因此,在本文中采用藏文语法规则来检错藏文音节字,可弥补基于词典匹配的校对方面存在的一些不足。
1.藏文音节字组合规则
藏文字在上千年的发展和演变过程中形成了迄今使用的文字概貌。藏文语法典籍《三十颂》和《音势论》是目前最为权威的藏文语法典籍。本文就这两部语法典籍及主要注疏为依据,对组成藏文音节字的构件组合规则及unicode藏文编码在计算机中的处理方法进行深入分析和研究,提出一种基于基字识别的藏文音节字的检错方法。
目前,现代藏文音节字的数量没有一个统一的数据。据统计,青海民族出版社于1979年出版的《新编藏文词典》中共收录了4300个藏文音节字[3]。西藏大学高定国教授在其《现代藏字全集的属性统计研究》一文中表示,现代藏文音节字有19380个藏文音节字[8]。当代著名藏学专家毛尔盖·桑木旦在其著作《藏文文法概论》中详细阐述了藏文音节字的组合规则,根据该规则可生成的藏文音节字字数达18088[1]。本文以《藏文文法概论》中阐述的音节字组合规则所产生的音节字数量为准进行检错。
据《三十颂》,藏文字分为辅音和元音两大类,30个辅音中可分为20个纯基字(既不能做前加字,又不能做后加字和再后加字)和10个后加字,后加字中又可分为5个前加字和2个再后加字[1][2]。组成音节字的字符数有较大区别,多则七个字符组成一个藏文音节字,少则一个字符组成一个藏文音节字,在单字符构成的藏文音节字中该字符本身充当基字角色。在藏文音节字构成部分中分别用集合f={k,kh,g,ng,c,ch,j,ny,t,th,d,n,pa,pha,ba,ma,tsa,tsha,dza,wa,zha,za,`a,ya,r,l,sh,s ,h,a}表示辅音;集合y={I,u,e,o}表示元音;集合h={g,ng,d,n,ba,ma,`a,r,l,s }表示后加字;集合q={g,t,ba,ma,`a }表示前加字;集合s={r,l,s}表示上加字;集合x={ya,r,l,wa}表示下加字;集合z={d,s}表示再后加字。各集合在藏文音节字中的位置及顺序如表1-1。 在unicode藏文编码字符集中,藏文音节字中的垂直组合部分的藏文字符由主字来实现。藏文文字法和语法书中对上加字、基字和下加字组成的垂直叠加部分的字符与其他非垂直叠加的同字符被视为同一字符,但在计算机中表示时因藏文主字与非主字在字形的描述上有所区别,被视为不同的两个字符,赋有两个不同的机内码。如字母ga和主字ga的机内码分别为0F42和0F92。
根据藏文语法典籍《三十颂》及其注疏《藏文文法概论》,前加字、上加字和下加字与基字、含主字的叠加部分间的组合规则及再后加字与后加字间的组合规则如表1-2。
2.藏文音节字中基字及其他组合构件的识别算法
通过以上对藏文音节字结构、组合规则和unicode编码的藏文字在计算机中表示的方式进行分析和研究。设计出一种通过主字和元音获取基字位置及基字的算法。具体算法如下:
第一步:识别并还原粘着虚词。以音节字为单位进行切分。
第二步:判断该音节字中是否存在主字(主字编码范围为0F90-0FBE),若有,转入下一步,否则,转入第六步。
第三步:判断该音节字中有几个主字,有1个主字,转入下一步,否则,转入第七步。
第四步:判断主字是否为“ya,r,l,wa”之一,若是,转入下一步,否则,转入第六步。
第五步:获取该音节字中主字的位置i,i-1处的字符为基字。若字长为6,基字位置为2,其音节字结构为:前加字+基字+下加字+元音+后加字+再后加字。若字长为5,基字位置为1,且有元音,其音节字结构为:基字+下加字+元音+后加字+再后加字;基字位置为2,且有元音,其音节字结构为:前加字+基字+下加字+元音+后加字;基字位置为2,且无元音,其音节字结构为:前加字+基字+下加字+后加字+再后加字。若字长为4,基字位置为1,且有元音,其音节字结构为:基字+下加字+元音+后加字;基字位置为2,且有元音,其音节字结构为:前加字+基字+下加字+元音;基字位置为1,且无元音,其音节字结构为:基字+下加字+后加字+再后加字;基字位置为2,且无元音,其音节字结构为:前加字+基字+下加字+后加字。若字长为3,基字位置为1,且有元音,其音节字结构为:基字+下加字+元音;基字位置为1,且无元音,其音节字结构为:基字+下加字+后加字;基字位置为2,且无元音,其音节字结构为:前加字+基字+下加字。若字长为2,基字位置为1,其音节字结构为:基字+下加字。若音节字的字长不满足大于等于2,小于等于6,视该音节字为非藏文音节字。
第六步:获取该音节字中主字的位置i,i处的字符为基字。若字长为6,基字位置为3,其音节字结构为前加字+上加字+基字+元音+后加字+再后加字。若字长为5,基字位置为3,且无元音,其音节字结构为:前加字+上加字+基字+后加字+再后加字;基字位置为3,且有元音,其音节字结构为:前加字+上加字+基字+元音+后加字;基字位置为2,且有元音,其音节字结构为:上加字+基字+元音+后加字+再后加字。若字长为4,基字位置为3,且无元音,其音节字结构为:前加字+上加字+基字+后加字;基字位置为3,且有元音,其音节字结构为:前加字+上加字+基字+元音;基字位置为2,且无元音,其音节字结构为:上加字+基字+后加字+再后加字;基字位置为2,且有元音,其音节字结构为:上加字+基字+元音+后加字。若字长为3,基字位置为2,且无元音,其音节字结构为:上加字+基字+后加字;基字位置为2,且有元音,其音节字结构为:上加字+基字+元音;基字位置为3,且无元音,其音节字结构为:前加字+上加字+基字。若字长为2,基字位置为2,其音节字结构为:上加字+基字。若音节字的字长数不满足大于等于2,小于等于6,视该音节字为非藏文音节字。
第七步:获取该音节字中第2个主字的位置j,判断该字符是否为“wa”。若是,判断音节字长度是否为3,若是,j-2处的字符为该音节字的基字,此类音节字字长为3,基字位置为1,其音节字结构为:基字+下加字+下加字。否则,该音节字为非藏文音节字。转入下一步。
第八步:获取该音节字中第1个主字的位置i,i处的字符为基字。
若字长为7,基字位置为3,其音节字结构为:前加字+上加字+基字+下加字+元音+后加字+再后加字。若字长为6,基字位置为3,且无元音,其音节字结构为:前加字+上加字+基字+下加字+后加字+再后加字;基字位置为3,且有元音,其音节字结构为:前加字+上加字+基字+下加字+元音+后加字;基字位置为2,其音节字结构为:上加字+基字+元音+后加字+再后加字。若字长为5,基字位置为3,且无元音,其音节字结构为:前加字+上加字+基字+下加字+后加字;基字位置为3,且有元音,其音节字结构为:前加字+上加字+基字+下加字+元音;基字位置为2,且无元音,其音节字结构为:上加字+基字+下加字+后加字+再后加字;基字位置为2,且有元音,其音节字结构为:上加字+基字+下加字+元音+后加字。若字长为4,基字位置为3,其音节字结构为:前加字+上加字+基字+下加字;基字位置为2,且无元音,其音节字结构为:上加字+基字+下加字+后加字;基字位置为2,且有元音,其音节字结构为:上加字+基字+下加字+元音。若字长为3,基字位置为2,其音节字结构为:上加字+基字+下加字。若音节字的字长不满足大于等于2,小于等于7,视该音节字为非藏文音节字。
第九步:判断该音节字中是否存在元音,若存在,转入下一步,否则,转入第十一步。
第十步:判断字长,若大于5,该音节字为非藏文音节字。否则,获取该音节字中元音的位置i,i-1处的字符为基字。若字长为5,基字位置为2,其音节字结构为:前加字+基字+元音+后加字+再后加字。若字长为4,基字位置为2,其音节字结构为:前加字+基字+元音+后加字;基字位置为1,其音节字结构为:基字+元音+后加字+再后加字。若字长为3,基字位置为2,其音节字结构为:前加字+基字+元音+后加字;基字位置为1,其音节字结构为:基字+元音+后加字。若字长为2,基字位置为1,其音节字结构为:基字+元音。 第十一步:判断音节字字长,若字长为1,该字符为基字。若字长为2,基字位置为1,其音节字结构为:基字+后加字。若字长为3,转入下一步。若字长为4,基字位置为2,其音节字结构为:前加字+基字+后加字+再后加字。
第十二步:获取该音节字的第1、2和3字符,判断第1个字符是否在前加字集合中,第2个字符是否为该前加字所对应的规则集中的元素,第3个字符是否在后加字集合中。满足以上3项条件的音节字结构为:前加字+基字+后加字,第2个字符为基字。不满足任意一项,转入下一步。
第十三步:获取该音节字中第2和3字符,判断第2个字符是否为后加字集合中的元素,第3个字符是否为该后加字所对应的再后加字集合中的元素。若是,第一个字符为基字,该音节字结构为:基字+后加字+再后加字。
通过以上藏文音节字基字及其他组合构件的识别算法,可获得所有现代藏文音节字的结构及具体组成构件。
3.藏文音节字检错算法
判断一个藏文音节字中的构件组合是否准确时,首先,要获取组成该音节字的所有构件及构件在音节字中所承担的角色。然后,根据音节字构件组合规则来判断构件组合是否符合规则。因此,在具体检错过程中,分别用Str类和Comp类来描述以上两方面的内容。
Str类的主要功能是根据以上音节字基字及其他组合构件的识别算法中获取的构件进行存储,并判断该音节字结构,返回相关参数。该类中包含了8个字符串变量,分别用来存储前加字、上加字、基字、下加字、元音、后加字和再后加字以及判别音节字构件准确与否的表示值,该变量名为Boolean,音节字结构不符合规则时值为false,符合规则时值为True。藏文音节字结构的不同,使得7个字符串变量中有的值为空,有的值不为空,经判断,返回值不为空的变量。
Comp类的主要功能是接受Str类返回的变量值,根据返回的音节字结构的不同将音节字分为4种类型,并在组合规则中匹配,若匹配成功,视该音节字为正确的藏文音节字,否则,视为非藏文音节字。藏文音节字的分类及匹配方法如下:
1)音节字中若既有前加字又有含主字的叠加部分(有上加字或下加字)时,把含主字的叠加部分(不含元音)与前加字进行规则匹配。
2)音节字中若无前加字,含有一个主字时,上加字与基字、基字与下加字的组合规则进行匹配。
3)音节字中若无前加字,含有两个主字时,上加字与基字的叠加部分作为一个整体与下加字之间的组合规则进行匹配。藏文音节字中含有2个主字的特殊形式有“grwa,rtswa,phywa”当遇到这种特殊形式时基字与第1个主字位置上的下加字的叠加部分作为一个整体与第2个主字位置上的下加字间的组合规则进行匹配。
4)音节字中若无垂直叠加部分时,前加字与基字、再后加字与后加字之间的组合规则进行匹配。
藏文音节字检错算法如下:
第一步:对待检错文本中的黏着虚词进行还原等处理,以音节字为单位进行切词。
第二步:在待检错文本中以音节分隔符为分隔点进行切分。
第三步:若音节字长度大于7,该音节字为非藏文音节字。否则,转入下一步
第四步:通过基字及其他组合构件的识别算法获取音节字结构。
第五步:Str类中的Boolean变量值是否为fals,若是,标注该音节字为非藏文音节字,返回第二步,继续检错。否则,将值不为空的变量返回给Comp类。
第六步:Comp类接受Str类返回的构件值不为空的变量。并按结构类型分类,然后根据类别进行匹配。若匹配成功,返回第二步,继续检错下一个音节字。否则,标注该音节字为非藏文音节字,返回第二部,继续检错。
第七步:检错的字符串长度是否等于待检错字符串长度,若是,检错完毕。否则,返回第二步,继续检错。
4.实验
实验文本是从藏文语法典籍《三十颂》中随机选取,并在文本中人为设置了7处错误。第1处至第7处分别检验后加字、前加字、再后加字、元音、上加字和下加字的检错功能,通过实验,本算法成功检查到7处错误,检错率为100%。图1
5.结束语
本文通过研究藏文音节字组合规则及语法规律,提出了基于基字识别的藏文音节字检错算法。实验证明,该算法检错效率较高,可解决出版印刷、信息检索、机器翻译、语音识别和语音合成等领域中困扰藏文字校对的难题。
参考文献
[1] 毛尔盖·桑木旦.藏文文法概论[M].成都:四川民族出版社,1986.
[2] 嘎玛司都.司都文法详解[M].西宁:青海民族出版社,2004.
[3] 山木旦,郑绍功,扎喜拉旦.新编藏文词典[M].西宁:青海民族出版社,2008.
[4] 江狄,龙从军.藏文字符研究[M].北京:社会科学文献出版社,2010.
[5] 扎西次仁.一个藏文拼写检查系统的设计[R].1998 中文信息处理国际会议,1998.
[6] 关白.自动校对中现代藏文音节字研究[J].西藏大学学报(自然科学版),2011(1).
[7] 陆玉清,洪宇,陆军,等.基于上下文的真词错误检查及校对方法[J].中文信息学报,2011,25(1):85-90.
[8] 高定国,龚育昌.现代藏字全集的属性统计研究[J].中文信息学报,2005(1).
[9] 才让叁智.藏汉英混合文档的字数统计研究.网络与信息[J],2011.07.
资助项目
CCF中文开放基金项目(CCF2013-02-01);国家自然科学基金重大项目”藏文词法分析系统与舆情监测知识库构建”(项目编号:61331013);2011年度国家自然科学基金项目“藏语依存树库的构建”(项目号:61163043);2013年度国家自然科学基金项目“现代藏文自动校对研究”( 项目号:61202189)。
作者简介
才让叁智,男,藏族,青海海南人,西藏大学藏文信息技术研究中心教师,主要研究方向为藏文自然语言处理。
[关键词]藏文音节字;基字;自动检错
中图分类号:TP391.1 文献标识码:A 文章编号:1009-914X(2014)42-0260-03
Research on an detection algorithm of error Tibetan syllable based on Jizi recognition
Cai Rang San Zhi,GAO Dingguo, Tashi igyal, Guan Bai
(Tibet University, Lhasa,Tibet 850000, China)
[Abstract]Jizi plays an important role in the Tibetan syllable component. So long as the position of Jizi is recognized correctly, we can get other components through the length of syllable and take Jizi as core to judge whether the collocation of other components, which forms syllable, conforms to rules can detcet error Tibetan syllable.This article proposes an error detection algorithm of Tibetan syllable based on Jizi recognition by researching the combination grammar of Tibetan syllable component. And this method doesn’t get any support of Tibetan syllable dictionaries and large-scale corpus. Through the experiments, this method’s accuracy to detect Tibetan syllable automatically is 97% .
[Key words]Tibetan syllable; Jizi; automatic error detecting
引言
随着互联网及藏文信息技术的发展,出现了海量的藏文电子文本。这些电子文本在藏语语料库、机器翻译、信息检索、语音识别和语音合成等领域的研究中有着重要的作用。但这些电子文本的质量参差不齐,不能直接使用于研究。因此,在使用这些电子文本前,进行校对是一项重要的工作环节。
国外在文本校对研究方面起步较早,大约始于上世纪六十年代左右,其中英文文本的校对成果最为突出,大部分成果实现了产品化[7]。英文校对主要采用最小编辑距离和相似键技术以及自然语言统计技术等来实现的。最为常见的英文校对研究成果有office字处理软件中嵌入的英文拼写检查功能。国内对汉文文本的校对研究始于二十世纪九十年代初期。汉文文本的校对主要采用基于混淆集的特征方法、基于模式匹配的校对方法和基于散串技术的校对方法等,与国内其他少数民族的文字校对技术相比,成绩最为突出,且部分校对技术成果已产品化。
藏文自动校对研究始于上世纪九十年代末,《一个藏文拼写检查系统的设计》是藏文自动校对方面的第一篇文章。藏文属拼音文字,但与同属拼音文字的西文有着很大的区别,藏文独特的语法体系、书写方式和文化背景等造就了与其他拼音文字之间的差异。因此,其他较为先进的拼音文字校对方法、策略和技术等不能直接用于藏文文本校对中。研究藏文文本校对需立足于藏文字本身的组合规则、语法特点、发展规律和使用习惯等方面进行研究。藏文自动校对技术在近十几年的发展中取得了一些成果,但主要是以词典匹配为主。基于词典匹配的校对有以下局限性:1)语言是个动态现象,每时每刻都发生着变化,尤其词汇方面的发展和变化最为突出。2)藏文音节字的组合是由特定的语法规则来完成的,但目前实际使用的符合语法规则的藏文音节字的数量小于依照藏语语法所能组合的音节字的总和。因此,在本文中采用藏文语法规则来检错藏文音节字,可弥补基于词典匹配的校对方面存在的一些不足。
1.藏文音节字组合规则
藏文字在上千年的发展和演变过程中形成了迄今使用的文字概貌。藏文语法典籍《三十颂》和《音势论》是目前最为权威的藏文语法典籍。本文就这两部语法典籍及主要注疏为依据,对组成藏文音节字的构件组合规则及unicode藏文编码在计算机中的处理方法进行深入分析和研究,提出一种基于基字识别的藏文音节字的检错方法。
目前,现代藏文音节字的数量没有一个统一的数据。据统计,青海民族出版社于1979年出版的《新编藏文词典》中共收录了4300个藏文音节字[3]。西藏大学高定国教授在其《现代藏字全集的属性统计研究》一文中表示,现代藏文音节字有19380个藏文音节字[8]。当代著名藏学专家毛尔盖·桑木旦在其著作《藏文文法概论》中详细阐述了藏文音节字的组合规则,根据该规则可生成的藏文音节字字数达18088[1]。本文以《藏文文法概论》中阐述的音节字组合规则所产生的音节字数量为准进行检错。
据《三十颂》,藏文字分为辅音和元音两大类,30个辅音中可分为20个纯基字(既不能做前加字,又不能做后加字和再后加字)和10个后加字,后加字中又可分为5个前加字和2个再后加字[1][2]。组成音节字的字符数有较大区别,多则七个字符组成一个藏文音节字,少则一个字符组成一个藏文音节字,在单字符构成的藏文音节字中该字符本身充当基字角色。在藏文音节字构成部分中分别用集合f={k,kh,g,ng,c,ch,j,ny,t,th,d,n,pa,pha,ba,ma,tsa,tsha,dza,wa,zha,za,`a,ya,r,l,sh,s ,h,a}表示辅音;集合y={I,u,e,o}表示元音;集合h={g,ng,d,n,ba,ma,`a,r,l,s }表示后加字;集合q={g,t,ba,ma,`a }表示前加字;集合s={r,l,s}表示上加字;集合x={ya,r,l,wa}表示下加字;集合z={d,s}表示再后加字。各集合在藏文音节字中的位置及顺序如表1-1。 在unicode藏文编码字符集中,藏文音节字中的垂直组合部分的藏文字符由主字来实现。藏文文字法和语法书中对上加字、基字和下加字组成的垂直叠加部分的字符与其他非垂直叠加的同字符被视为同一字符,但在计算机中表示时因藏文主字与非主字在字形的描述上有所区别,被视为不同的两个字符,赋有两个不同的机内码。如字母ga和主字ga的机内码分别为0F42和0F92。
根据藏文语法典籍《三十颂》及其注疏《藏文文法概论》,前加字、上加字和下加字与基字、含主字的叠加部分间的组合规则及再后加字与后加字间的组合规则如表1-2。
2.藏文音节字中基字及其他组合构件的识别算法
通过以上对藏文音节字结构、组合规则和unicode编码的藏文字在计算机中表示的方式进行分析和研究。设计出一种通过主字和元音获取基字位置及基字的算法。具体算法如下:
第一步:识别并还原粘着虚词。以音节字为单位进行切分。
第二步:判断该音节字中是否存在主字(主字编码范围为0F90-0FBE),若有,转入下一步,否则,转入第六步。
第三步:判断该音节字中有几个主字,有1个主字,转入下一步,否则,转入第七步。
第四步:判断主字是否为“ya,r,l,wa”之一,若是,转入下一步,否则,转入第六步。
第五步:获取该音节字中主字的位置i,i-1处的字符为基字。若字长为6,基字位置为2,其音节字结构为:前加字+基字+下加字+元音+后加字+再后加字。若字长为5,基字位置为1,且有元音,其音节字结构为:基字+下加字+元音+后加字+再后加字;基字位置为2,且有元音,其音节字结构为:前加字+基字+下加字+元音+后加字;基字位置为2,且无元音,其音节字结构为:前加字+基字+下加字+后加字+再后加字。若字长为4,基字位置为1,且有元音,其音节字结构为:基字+下加字+元音+后加字;基字位置为2,且有元音,其音节字结构为:前加字+基字+下加字+元音;基字位置为1,且无元音,其音节字结构为:基字+下加字+后加字+再后加字;基字位置为2,且无元音,其音节字结构为:前加字+基字+下加字+后加字。若字长为3,基字位置为1,且有元音,其音节字结构为:基字+下加字+元音;基字位置为1,且无元音,其音节字结构为:基字+下加字+后加字;基字位置为2,且无元音,其音节字结构为:前加字+基字+下加字。若字长为2,基字位置为1,其音节字结构为:基字+下加字。若音节字的字长不满足大于等于2,小于等于6,视该音节字为非藏文音节字。
第六步:获取该音节字中主字的位置i,i处的字符为基字。若字长为6,基字位置为3,其音节字结构为前加字+上加字+基字+元音+后加字+再后加字。若字长为5,基字位置为3,且无元音,其音节字结构为:前加字+上加字+基字+后加字+再后加字;基字位置为3,且有元音,其音节字结构为:前加字+上加字+基字+元音+后加字;基字位置为2,且有元音,其音节字结构为:上加字+基字+元音+后加字+再后加字。若字长为4,基字位置为3,且无元音,其音节字结构为:前加字+上加字+基字+后加字;基字位置为3,且有元音,其音节字结构为:前加字+上加字+基字+元音;基字位置为2,且无元音,其音节字结构为:上加字+基字+后加字+再后加字;基字位置为2,且有元音,其音节字结构为:上加字+基字+元音+后加字。若字长为3,基字位置为2,且无元音,其音节字结构为:上加字+基字+后加字;基字位置为2,且有元音,其音节字结构为:上加字+基字+元音;基字位置为3,且无元音,其音节字结构为:前加字+上加字+基字。若字长为2,基字位置为2,其音节字结构为:上加字+基字。若音节字的字长数不满足大于等于2,小于等于6,视该音节字为非藏文音节字。
第七步:获取该音节字中第2个主字的位置j,判断该字符是否为“wa”。若是,判断音节字长度是否为3,若是,j-2处的字符为该音节字的基字,此类音节字字长为3,基字位置为1,其音节字结构为:基字+下加字+下加字。否则,该音节字为非藏文音节字。转入下一步。
第八步:获取该音节字中第1个主字的位置i,i处的字符为基字。
若字长为7,基字位置为3,其音节字结构为:前加字+上加字+基字+下加字+元音+后加字+再后加字。若字长为6,基字位置为3,且无元音,其音节字结构为:前加字+上加字+基字+下加字+后加字+再后加字;基字位置为3,且有元音,其音节字结构为:前加字+上加字+基字+下加字+元音+后加字;基字位置为2,其音节字结构为:上加字+基字+元音+后加字+再后加字。若字长为5,基字位置为3,且无元音,其音节字结构为:前加字+上加字+基字+下加字+后加字;基字位置为3,且有元音,其音节字结构为:前加字+上加字+基字+下加字+元音;基字位置为2,且无元音,其音节字结构为:上加字+基字+下加字+后加字+再后加字;基字位置为2,且有元音,其音节字结构为:上加字+基字+下加字+元音+后加字。若字长为4,基字位置为3,其音节字结构为:前加字+上加字+基字+下加字;基字位置为2,且无元音,其音节字结构为:上加字+基字+下加字+后加字;基字位置为2,且有元音,其音节字结构为:上加字+基字+下加字+元音。若字长为3,基字位置为2,其音节字结构为:上加字+基字+下加字。若音节字的字长不满足大于等于2,小于等于7,视该音节字为非藏文音节字。
第九步:判断该音节字中是否存在元音,若存在,转入下一步,否则,转入第十一步。
第十步:判断字长,若大于5,该音节字为非藏文音节字。否则,获取该音节字中元音的位置i,i-1处的字符为基字。若字长为5,基字位置为2,其音节字结构为:前加字+基字+元音+后加字+再后加字。若字长为4,基字位置为2,其音节字结构为:前加字+基字+元音+后加字;基字位置为1,其音节字结构为:基字+元音+后加字+再后加字。若字长为3,基字位置为2,其音节字结构为:前加字+基字+元音+后加字;基字位置为1,其音节字结构为:基字+元音+后加字。若字长为2,基字位置为1,其音节字结构为:基字+元音。 第十一步:判断音节字字长,若字长为1,该字符为基字。若字长为2,基字位置为1,其音节字结构为:基字+后加字。若字长为3,转入下一步。若字长为4,基字位置为2,其音节字结构为:前加字+基字+后加字+再后加字。
第十二步:获取该音节字的第1、2和3字符,判断第1个字符是否在前加字集合中,第2个字符是否为该前加字所对应的规则集中的元素,第3个字符是否在后加字集合中。满足以上3项条件的音节字结构为:前加字+基字+后加字,第2个字符为基字。不满足任意一项,转入下一步。
第十三步:获取该音节字中第2和3字符,判断第2个字符是否为后加字集合中的元素,第3个字符是否为该后加字所对应的再后加字集合中的元素。若是,第一个字符为基字,该音节字结构为:基字+后加字+再后加字。
通过以上藏文音节字基字及其他组合构件的识别算法,可获得所有现代藏文音节字的结构及具体组成构件。
3.藏文音节字检错算法
判断一个藏文音节字中的构件组合是否准确时,首先,要获取组成该音节字的所有构件及构件在音节字中所承担的角色。然后,根据音节字构件组合规则来判断构件组合是否符合规则。因此,在具体检错过程中,分别用Str类和Comp类来描述以上两方面的内容。
Str类的主要功能是根据以上音节字基字及其他组合构件的识别算法中获取的构件进行存储,并判断该音节字结构,返回相关参数。该类中包含了8个字符串变量,分别用来存储前加字、上加字、基字、下加字、元音、后加字和再后加字以及判别音节字构件准确与否的表示值,该变量名为Boolean,音节字结构不符合规则时值为false,符合规则时值为True。藏文音节字结构的不同,使得7个字符串变量中有的值为空,有的值不为空,经判断,返回值不为空的变量。
Comp类的主要功能是接受Str类返回的变量值,根据返回的音节字结构的不同将音节字分为4种类型,并在组合规则中匹配,若匹配成功,视该音节字为正确的藏文音节字,否则,视为非藏文音节字。藏文音节字的分类及匹配方法如下:
1)音节字中若既有前加字又有含主字的叠加部分(有上加字或下加字)时,把含主字的叠加部分(不含元音)与前加字进行规则匹配。
2)音节字中若无前加字,含有一个主字时,上加字与基字、基字与下加字的组合规则进行匹配。
3)音节字中若无前加字,含有两个主字时,上加字与基字的叠加部分作为一个整体与下加字之间的组合规则进行匹配。藏文音节字中含有2个主字的特殊形式有“grwa,rtswa,phywa”当遇到这种特殊形式时基字与第1个主字位置上的下加字的叠加部分作为一个整体与第2个主字位置上的下加字间的组合规则进行匹配。
4)音节字中若无垂直叠加部分时,前加字与基字、再后加字与后加字之间的组合规则进行匹配。
藏文音节字检错算法如下:
第一步:对待检错文本中的黏着虚词进行还原等处理,以音节字为单位进行切词。
第二步:在待检错文本中以音节分隔符为分隔点进行切分。
第三步:若音节字长度大于7,该音节字为非藏文音节字。否则,转入下一步
第四步:通过基字及其他组合构件的识别算法获取音节字结构。
第五步:Str类中的Boolean变量值是否为fals,若是,标注该音节字为非藏文音节字,返回第二步,继续检错。否则,将值不为空的变量返回给Comp类。
第六步:Comp类接受Str类返回的构件值不为空的变量。并按结构类型分类,然后根据类别进行匹配。若匹配成功,返回第二步,继续检错下一个音节字。否则,标注该音节字为非藏文音节字,返回第二部,继续检错。
第七步:检错的字符串长度是否等于待检错字符串长度,若是,检错完毕。否则,返回第二步,继续检错。
4.实验
实验文本是从藏文语法典籍《三十颂》中随机选取,并在文本中人为设置了7处错误。第1处至第7处分别检验后加字、前加字、再后加字、元音、上加字和下加字的检错功能,通过实验,本算法成功检查到7处错误,检错率为100%。图1
5.结束语
本文通过研究藏文音节字组合规则及语法规律,提出了基于基字识别的藏文音节字检错算法。实验证明,该算法检错效率较高,可解决出版印刷、信息检索、机器翻译、语音识别和语音合成等领域中困扰藏文字校对的难题。
参考文献
[1] 毛尔盖·桑木旦.藏文文法概论[M].成都:四川民族出版社,1986.
[2] 嘎玛司都.司都文法详解[M].西宁:青海民族出版社,2004.
[3] 山木旦,郑绍功,扎喜拉旦.新编藏文词典[M].西宁:青海民族出版社,2008.
[4] 江狄,龙从军.藏文字符研究[M].北京:社会科学文献出版社,2010.
[5] 扎西次仁.一个藏文拼写检查系统的设计[R].1998 中文信息处理国际会议,1998.
[6] 关白.自动校对中现代藏文音节字研究[J].西藏大学学报(自然科学版),2011(1).
[7] 陆玉清,洪宇,陆军,等.基于上下文的真词错误检查及校对方法[J].中文信息学报,2011,25(1):85-90.
[8] 高定国,龚育昌.现代藏字全集的属性统计研究[J].中文信息学报,2005(1).
[9] 才让叁智.藏汉英混合文档的字数统计研究.网络与信息[J],2011.07.
资助项目
CCF中文开放基金项目(CCF2013-02-01);国家自然科学基金重大项目”藏文词法分析系统与舆情监测知识库构建”(项目编号:61331013);2011年度国家自然科学基金项目“藏语依存树库的构建”(项目号:61163043);2013年度国家自然科学基金项目“现代藏文自动校对研究”( 项目号:61202189)。
作者简介
才让叁智,男,藏族,青海海南人,西藏大学藏文信息技术研究中心教师,主要研究方向为藏文自然语言处理。