蒙古文编码向拉丁转写转换和分音节算法实现
2011-06-28孟和吉雅
孟和吉雅,山 丹
(1.内蒙古大学 计算机学院,内蒙古 呼和浩特 010020;2. 内蒙古社会科学院,内蒙古 呼和浩特 010020)
1 前言
蒙古语是中国蒙古族自治地方的通用语言之一。在上世纪70、80年代开始研究蒙古文信息处理时,主要是从文字处理开始的,而且制定的蒙古文编码也是表现“字型”为主。经过几十年的发展,蒙古文信息处理研究已经不仅仅局限于文字处理方面,在语音合成、语音识别、文字识别等也有了一定成果。虽然蒙古文Unicode编码已经在2000年公布,定义了名义字符编码和变形显现字符最小集[1],但是以前的很多文字资料还是用旧的编码存储,而且大多数人还在使用字型为主的旧的输入法和编码。如: 蒙科立、智能、方正、明安图、赛音等编码。

2 问题提出

在《大纲》中要求的单词按照音节数量来分类,筛选和检索时,需要做对蒙古文单词分音节,并统计音节个数。所以在拉丁转写的基础上又做了分音节和统计音节个数的工作。
选择 “拉丁转写”和“分音节”方法的主要原因是考虑了我们的工作需要和程序里实现的简单和准确。原因如下:

我们根据《蒙古文编码键盘布局》,又考虑校对和编程的方便,自己制定了一种蒙古文单词拉丁转写规则,如表1所示。

表1 拉丁转写规则——蒙古文字母与拉丁转写对应表

续表
3 拉丁转写转换算法实现


表2 元音“”的各种字型拉丁转写表(蒙科立编码)
//转换编码
function TFormZhuan.Convert(temp_str:WideString):WideString;
var
mid_str:WideString; WS:WideString; i,j:integer; WC: WideChar; Code: Word;
begin
mid_str:=′′; i:=1;
while i<=length(temp_str) do
begin
for j:=1 to array_len do
begin
WS:=MidStr(temp_str,i,1);
WC:=WS[1]; Move(WC, Code, SizeOf(WC));
if latin[j,0]=IntToHex(Code,2) then
begin mid_str:=mid_str+latin[j,1]; break; end;
end;
i:=i+1;
end;
Convert:=mid_str;
end;
转换程序界面如图1所示。

图1 拉丁转写转换程序界面
4 分音节算法实现
分音节算法的基本思路是根据蒙古文的以“元音为中心”组成音节的规律,按照音节类型去分音节。……
