基于小字符集藏文拉丁转写系统的设计与实现

陈小莹1,艾金勇2

(1.西藏民族大学 信息工程学院,陕西 咸阳 712082;2.西藏民族大学图书馆,陕西 咸阳 712082)

摘 要:随着藏语语言信息技术的迅速发展,藏文拉丁转写成为迫切需要解决的重要课题之一。该文在前人有关藏文拉丁转写研究的基础上,设计并实现了基于小字符集方案的藏文拉丁转写系统。文章通过对小字符集编码方案的特征分析,同时根据藏文正字法知识,提出了基于小字符集编码的藏文拉丁转写算法,并对具体算法策略进行了分析和说明,最后在Windows平台进行了程序的实现。藏文拉丁转写方案的设计与实现,可以解决藏文多编码系统之间的兼容性问题。

关键词:藏文;拉丁转写;小字符集;占位辅音

1 引言

在国内外藏学研究领域,藏文拉丁转写实现了现代藏文与拉丁转写之间的相互转换。近年来,由于藏语语言信息技术的迅速发展,拉丁转写形式不仅可以作为多文种少数民族文字处理平台上文字的识读和研究工具,还可以解决藏文多编码系统之间的兼容性问题,前期已经有不少学者进行了相关的研究。陈丽娜等在《藏文拉丁转写的研究与实现》一文中针对大字符集编码的字符特征在OpenOffice.org中实现了藏文的拉丁转写[1]。民族所的江荻研究员在《藏文的拉丁字母转写方法》一文中系统的阐述了藏文的拉丁转写原则和目前拉丁转写方案,并归纳出比较全面的藏文拉丁字符字母转写的规则[2]。祁坤钰等在2008年《基于国际标准编码系统地藏文拉丁文转写规则模型》一文中针对基本集编码体系,提出了藏文变长序列码到拉丁文转写的转换模型,文中并没有涉及具体的算法[3]。康才畯等在《基于Unicode编码的藏文转写拉丁文本的算法》中虽然提出了关于Unicode编码的藏文拉丁转写算法,但是关于藏文黏写字符等特殊现象并没有针对性的处理,而在现代藏文中这种现象还是普遍存在的[4]。综上所述,尽管在藏文拉丁转写方面前期已经有了相当多的成果,但是在小字符集编码的藏文拉丁转写的具体实现上还有待进一步的研究。基于此,本文基于小字符集编码体系,提出藏文拉丁转写算法,并在Windows 平台下设计实现了该算法。

2 现代藏文音节的结构和编码特点

2.1 现代藏文的结构特点

书面藏语的“字”是由藏文字符和梵音藏文等字符构成的,共有30个辅音字母,10个梵音藏文字母,5个元音符号和3个梵音藏文元音符号,其中[a]为零位元音[5]。藏文的基本单位是音节,音节与音节间用音节符“.”分隔,句子与句子之间用单垂符“|”分隔,段落与段落之间用双垂符“||”分隔。每个藏文音节结构上由“基字”、“上加字”、“下加字”、“前加字”、“后加字”、“重后加字”以及元音组成,它不仅具有横向拼写性,同时也具有纵向拼写性,其中前加字、基字、后加字与重后加字横向拼写。而在纵向上可能有上加字、基字、下加字和元音的纵向拼写。构成藏文字的前加字、基字、上加字、下加字、后加字、重后加字和元音统称为藏文字的部件。每个结构位置上的部件都有固定的构造规则,除开基字外所有结构位置上的部件都可以空缺。

2.2 藏文的编码特点

在藏文信息处理中存在两种不同的字符集编码和实现方案。一种是以藏文编码字符集基本集为基础,以垂直预组合的方法显示藏文,简称大字符集法。另一种是基于ISO/IEC 10646(Tibetan)的藏文编码方案,以动态组合的方法显示藏文,简称小字符集法。大字符集主要是在计算机中以上下叠加的字母作为一个整体进行编码的,这种方法将需要动态组合的上加字、基字、下加字和元音组合成为一个字丁,对每个字丁在藏文编码字符集中进行编码。但是这种方式的处理会导致大量的兼容字符,从而增加了系统处理的复杂性。而且这种方式需要对现有的藏文数据的所有组合方式进行预组合,难以实现所有系统的兼容。小字符集方法是将藏文完全按拼音文字处理,以其基本组成构件,包括元音字符、辅音字符、上下加字等为基本编码对象进行编码的方法,这是完全符合ISO的所有评估程序和批准原则的一个方案,是目前国际上较为流行的一种藏文编码方案。而且随着计算机技术的进一步发展,国际标准的小字符集可以胜任任何应用,目前大字符集实际已经被大多数系统放弃。

3 系统结构

现代藏文拉丁转写系统的结构如图1所示。整个现代藏文拉丁转写系统从功能上可以分为知识库管理与维护、藏文文本预处理、藏文字丁部件分解和拉丁转写四个主要模块。下面分别介绍各个模块的功能和实现方式。

3.1 藏文文本预处理

藏文文本预处理模块主要有藏文特殊字符的规范化处理和藏文黏着词的分离和还原两个部分,针对现代藏文文本中出现的特殊现象进行处理,以得到规范化的藏文音节字。

3.1.1 特殊字符的规范化处理

藏文文本中除了包括正常的规范字符外,还可能会出现英文缩略词、简写词、数字、符号等一些不属于藏文字符的其他字符,这些不属于藏文字符的其他字符直接影响着文本信息处理的正确性,所以在拉丁转写之前应该要进行规范化处理。

处理方式主要是归纳现代藏文中出现的一些非规范字的类别,并给出它们在规范化藏文词表上的规范写法,提取出转换规则,建立相应的规则知识库。在遇到此类特殊字符时只需要按照相应的规则进行转换即可。

3.1.2 黏写字符的处理

古藏文中所有的字与字之间都用字分隔符分开,随着藏文字的发展,人们为了方便将有些字与它前面字之间的分隔符省略[6]。有些格助词和接续词、终结词是黏着在后加字或者基字上,形成一个音节字的[7]。在现代藏文的实际文本中也存在这些黏着性的格助词,使得一些藏文文字不符合藏文的正字法结构,但是又是正确的书写形式,因此在实际的处理过程中需要对其进行分解处理。藏文文本中常见的黏写字符主要有(1)属格助词“”;(2)接续词“”;(3)离合词“”;(4)终结词“”;(5)具格助词“”;(6)la 类格助词“”。这些黏写字符的处理参照文献[8]的处理方式,首先根据藏文音节字的构字特征进行分辨和识别,然后依据黏写字符形成的特点分别进行分离和还原操作。经过测试,该方法能较好地处理藏文音节字的黏写字符现象。处理的结果如表1所示。

图1 拉丁转写系统结构图

表1 黏写字符的分离与还原

其中表中字母s表示此音节字是分离后得到的,sr表示此音节字是分离后对前一音节字做还原后得到的。

3.2 知识库管理和维护

该模块的主要功能是维护和管理拉丁转写系统中所设计的三个知识库的规范和管理,即对系统中需要调用的藏文正字知识库、特殊符号特征规则库、拉丁转换规则知识库内容的完善和维护,以便数据的有效调用和管理。

3.3 藏文字丁部件分解3.3.1 小字符集编码特点

小字符集方案中虽然针对藏文的基本组成部件进行编码,在构字时由这些部件编码动态合成相应的横向和纵向组合字符[9]。但是在实际藏文字符显示时,每一个纵向组合字符只占据一个辅音的宽度,这个宽度由第一层辅音决定,这个辅音称为占位辅音,这个辅音的编码称为占位辅音编码。其他叠加在占位辅音下方的辅音字符不单独占宽度,称为不占位辅音,对应的辅音编码称之为不占位辅音编码。元音字符也叠加在占位辅音的上方或下方,其也不单独占宽度。例如,由于每个辅音可能占位也可能不占位,因此每个辅音有两个编码分别表示占位和不占位。例如,辅音中是占位字符,其占位编码是U+0F63,在中是不占位字符,而不占位编码是U+0FB3。一个藏文音节字中前加字、后加字和重后加字都是占位辅音,只有基字所在的组合字符中可能存在不占位辅音和元音。因此在实际藏文音节部件分解中可以利用这点从一个编码序列中定位其基字。

3.3.2 藏文字丁部件的识别

藏文字丁部件分解根据藏文音节构字规则及藏文小字符集编码的特点分解各个位置上的字符。其核心在于寻找藏文的基字丁。

若令C表示藏文占位辅音编码集合,V表示藏文元音字符编码集合,NC表示藏文非占位辅音编码的集合,同时根据藏文本身特征,设定下加字集合U,则U属于NC,同时设定音节中编码字符串为l1l2……ln(1=

1) 输入音节字符串l1l2……ln,根据字符串匹配法找出其在集合C、V和NC中的字串C1C2……Cm、Vt和NC0NC2……NCk。k的值获取后可根据以下几种情况定位基字的位置并确定各部件字符。

2) 若k=2,则该音节中非占位辅音编码串为NC1NC2,此时由小字符集编码的特征判定此时组合字符中必定包含上加字和下加字,而按照藏文输出顺序,就可以确定出两个非占位辅音NC0NC2分别为基字丁Ba和下加字Up,从而确定出基字丁位置。

3) 若k=1,则该音节中非占位辅音编码串为NC1,此时NC1有可能是基字,也可能是下加字,因此需要依据藏文构字规则加以判别。首先判断NC1是否属于集合U。因为藏文显示时,下加字“”作为下加字字符存在时,与其在组合字符中作为基字的编码并不一致。而另外一个下加字“”,按照藏文正字法规则确定该字符不能接上加字。所以对于NC1只需要判定是否存在于对应的下加字编码集合中,若存在则NC1必为基字Ba。否则其前面的占位辅音为基字Ba[10]。最后对于不满足上面两种情况,则可以判定NC1为基字Ba。

4) 若k=0,则该音节中无非占位辅音编码串,表明该藏文音节没有上加字和下加字形式存在。此时判定基字位置需要依据元音字符进行判定。若t>0,则可以判定元音前面的辅音字符必定为基字。如果t=0,则需要根据音节宽度进行进一步判别,判别时利用藏文正字法进行分别讨论得出对应的基字Ba。

待基字编码串Ba确定后,再根据Ba是否属于集合NC进一步来判定其他部件的位置。如果Ba属于NC,则其后面的占位辅音依次为后加字和重后加字。前面紧挨着该辅音字符的必为上加字,若前面还有占位字符,则为前加字;否则该藏文音节中一定不存在上加字,其后的占位辅音依次为后加字和重后加字,其前面的占位辅音为前加字。最后根据得到的结果确定出各位置上的部件编码。

3.4 转写规则

藏文拉丁字母转写是指在不必理解词句语义的情况下,按照读音将藏文字母转换成拉丁字母的方法。对于藏语文字信息处理而言,拉丁转写更多的是作为现代藏语的识读和研究工具,因此本文以藏文的音节为基本单位,依据音节的组织结构,对音节的各个部分分别进行转写,实现了基于现代藏语语音的声韵母转化方案。

前面已经确立了藏文音节的各部分部件,但是由于组合型梵音藏文字符的存在,所以还需要进行特殊处理,首先判断藏文音节中不带音基字丁是否存在于文献[11]所列举的新创字符表中,若存在则将其作为一个整体进行拉丁转换。否则就根据藏文音节的声韵母组合方式进行组合就可以了。藏文单音节的声母=前加字+不带音基字丁,韵母=元音+后加字+重后加字。对照藏文拉丁转写规则知识库后,得到藏文声母和韵母各自对应的拉丁字母串。则藏文对应的拉丁转写=声母拉丁转写+韵母拉丁转写。转化过程中提出以下几个规则。

规则1 按照声韵母拼读方式对藏文音节中各部件依次读取,然后参照民族所江荻研究员文献[11]中提出的藏文拉丁转写系统实现转写。

规则2 藏文转写成拉丁字母时,转写后的符号一律使用小写字母。

规则3 不带元音符号的藏文音节字,则默认被转写成包含元音“a”,该元音被放在韵母前边。

规则4 不带元音符号的藏文音节字中,若基字为“”直接转写为a,则认为是零声母。

4 转写结果测试

在计算机Windows平台下,随机选取了部分藏文文本进行了拉丁转写测试,转写主要是藏文到拉丁文的转写。抽取的文本分别来自藏文主流网站的新闻和个人网页中的藏文文章。图2是测试样例中截取的一部分。

图2 藏文文本及转换结果

测试结果表明,在转换过程中会出现两种错误,一种是因为部分藏文文本不符合现代藏文的构字方法,所以在基字确定上出现错误从而造成转写不正确,这种情况系统会在可能错误的转写字符处高亮显示出来以便人工修改;还有一种情况是由于黏写字符以及文本规范化过程中的处理结果不准确而造成的转写错误,这种情况还需要人工针对新的文本情况进行问题分析并修正相应的规则。

5 结语

论文中主要讨论了基于小字符集编码的藏文音节拉丁转写的实现方法。本文采用的拉丁转写规则依据藏语声韵母体系进行,规则中只需要完善藏文声母拉丁对照表和藏文韵母拉丁对照表,就可以转换所有的藏字,所需要的库很小,可移植性强。但是由于藏文本身存在一些梵文和外来的新造词,这些词语在基字判别上可能会出现错误,因此需要在以后的工作中进一步完善部件识别规则,最终实现一个完整的藏文转写拉丁字母系统。

参考文献:

[1] 陈丽娜.藏文拉丁转写的研究与实现[J].计算机工程与设计,2006,01: 15-17.

[2] 江荻.藏文的拉丁字母转写方法[J]. 民族语文,2006,01: 45-53.

[3] 祁坤钰.基于国际标准编码系统的藏文拉丁文转写规则模型[J]. 西北民族大学学报(自然科学版),2008,03: 15-18.

[4] 康才畯,江荻. 基于Unicode编码的藏文转写拉丁文本的算法[A].中国中文信息学会.中国计算语言学研究前沿进展(2009-2011).中国中文信息学会,2011: 5.

[5] 江荻,周季文. 论藏文的序性及排序方法[J]. 中文信息学报,2000,01: 56-64.

[6] 才旦夏茸.藏文文法详解[M].西宁:青海民族出版社,1988.

[7] 关白,才科扎西.现代藏文音节字自动校对研究[J]. 计算机工程与应用,2012,29: 151-156.

[8] 才智杰.藏文自动分词系统中紧缩词的识别[J]. 中文信息学报,2009,01: 35-37.

[9] 扎西次仁.国际标准藏文计算机编码字符集的研究[J]. 中国藏学,1995,02: 127-143.

[10] 周季文.藏文拼音教程[M],北京: 民族出版社,1983,10.

[11] 江荻,龙从军.藏文字符研究: 字母、读音、编码、字频、排序、图形、拉丁字母转写[M],北京: 社会科学文献出版社,2010,08.

Design and Implementation of the Tibetan Transcription SystemBased on Small Character Set

CHEN Xiaoying, AI Jinyong

(1. School of Information Engineering,Tibet University for Nationalities,Xianyang,Shanxi 712082,China;2. Library of Tibet University for Nationalities,Xianyang,Shanxi 712082,China)

Abstract:With the rapid development of information technology in Tibetan language,Tibetan transcription into Latin becomes an important issue. This article designs and realizes such a transcription system that based on a small character set. According to the Tibetan orthography knowledge,the paper proposes the transcription algorithm according the characteristics of a small Tibetan/Latin character set encoding. The implementation of the Tibetan Latin transcription system can solve compatibility issues between the different Tibetan codes.

Keywords:Tibetan; Latin transliteration; small character sets; placeholder consonant

输入的字与系统编码不符_基于小字符集藏文拉丁转写系统的设计与实现相关推荐

  1. 如何构建一个ERP系统(需求分析、系统架构、系统设计、系统编码、测试、交付程序及文文件)。

    如何构建一个ERP系统(需求分析.系统架构.系统设计.系统编码.测试.交付程序及相关文件).  ERP 系统 _ 需求分析: 一般 ERP 系统的功能是非常繁多的,既包括财务会计. OA .进销存等几 ...

  2. 联想小新潮7000黑苹果教程_联想小新 潮7000-13怎么装win10系统|联想小新 潮7000-13用u盘重装win10系统教程-系统城...

    联想小新 潮7000-13装win10系统步骤是怎样的?联想小新 潮7000-13是一款13.3英寸,预装Windows 10 Home Basic 64bit(64位家庭普通版),重1.2Kg,长度 ...

  3. 联想小新air13pro重装系统_联想小新Air 13怎么装win10系统|联想小新Air 13用u盘重装win10系统教程-系统城...

    联想小新Air 13装win10系统步骤是怎样的?联想小新Air 13是一款13.3英寸,预装Windows 10,重1.25Kg,长度308.3mm,宽度211mm的轻薄笔记本.处理器采用英特尔 酷 ...

  4. 亲测无限坐席在线客服系统源码,基于ThinkPHP的一款在线客服系统源码

    源码简介 东西没问题,和别人换的本来说是多语言带机器人翻译之类的,给了个这... 直接一键安装的,启动两个端口就行了,安装倒是简单 编号:ym270 品牌:无 语言:PHP 大小:34.5MB 类型: ...

  5. 基于qt和mysql点菜系统的优点_基于QT的电子点餐订餐系统的设计与实现(SQLite)

    基于QT的电子点餐订餐系统的设计与实现(SQLite)(任务书,外文翻译,毕业论文20000字,程序代码,SQLite数据库,答辩PPT) 摘  要 在深入研究中小餐饮企业工作流程的基础上,分析制约餐 ...

  6. 登录系统 提示框_实物资产管理软件操作手册(职员和系统用户)

    一.职员和系统用户 "职员和系统用户"菜单提供了对公司人员信息进行维护的功能,可以自定义职员编码. 姓名.用户名等相关职员信息. 注意:职员编码.用户名需唯一,且用户名一旦保存则不 ...

  7. 姿态检测 树莓派_基于深度学习的树莓派老人摔倒检测系统的制作方法

    本发明属于电子器件技术领域,涉及基于深度学习的树莓派老人摔倒检测系统. 背景技术: 日益庞大的老年群体已成为人们关注的焦点.由于老年人身体活动不便等特点,摔倒已成为我国人员伤亡的第四位原因,而意外摔倒 ...

  8. c语言编写订货系统,学位论文_基于c语言的仓库订货系统的仿真.doc

    学位论文_基于c语言的仓库订货系统的仿真 本科毕业论文(设计.创作) 题目: 基于C语言的仓库订货系统的仿真 学生姓名: 学号: 所在系院: 信息与通信技术系 专业: 电子信息工程 入学时间: 201 ...

  9. virtuoso从电路图导入版图_基于Virtuoso 平台的单片射频收发系统电路仿真与版图设计...

    引言 在当前通信市场的带动下,通信技术飞速向前发展,手持无线通信终端成为其中的热门应用之一.因此,单片集成的射频收发系统正受到越来越广泛的关注.典型的射频收发系统包括低噪声放大器(LNA).混频器(M ...

最新文章

  1. 老李分享:shell 监控cpu,memory,load average 1
  2. Hadoop Hive概念学习系列之hive里的HiveQL——查询语言(十五)
  3. containerd安装及常用命令
  4. Flink SQL 在网易云音乐的产品化实践
  5. 文献学习(part17)--Correlation Adaptive Subspace Segmentation by Trace Lasso
  6. 桔梗网导航怎么取消_货车从业资格证考试正式取消?交通部最新回复!
  7. Fragment的生命周期和activity如何的一个关系
  8. 【TypeScript系列教程09】条件语句的使用
  9. 2020年墨天轮数据报告发布!
  10. ilm 和dlm差异_Oracle 的信息生命周期管理工具(ILM assistant)
  11. ruby rake学习
  12. 最常用的Windows快捷键大全【高手都是如何玩电脑的】(不断更新中……)
  13. 小程序 tabBar菜单
  14. 我最喜欢的10个顶级数据科学资源,kaggle、TDS、arXiv......
  15. 树莓派小车————全部代码
  16. python日期间隔天数_Python编程题5--计算两个日期之间相隔的天数
  17. 光速入门MyBatis-Plus
  18. his使用-重置密码
  19. 如何记住OSI七层协议模型,脑洞大开有木有?
  20. Python实现AI图像识别-身份证识别

热门文章

  1. coalesce---一个很有用的函数
  2. 秦羽接引的鸿蒙第四人,星辰变:仙界最强的五人,秦羽第二,敖无虚垫底,小黑难进前三...
  3. Spring源码解析十五
  4. 通过 A/B 测试持续优化广告投放,提高APP广告收益!
  5. Win10 年度最重大更新:代码、理想与爱
  6. TAQ服务器npc多久自动交物资,魔兽世界怀旧服:奥罗服务器物资捐献完成,已成国服第一个开门...
  7. jquery显示隐藏元素
  8. 详解Python-Numpy库的函数diagonal()【并附函数diagonal()与函数diag()的区别】
  9. syn flood攻击防范
  10. barrier linux,Linux Barrier I/O 实现分析笔记