system: [SYSTEM]

user: 2. 傣语文本归一化流程与规则 傣文是一种拼音文字，正常形式为“声母+韵母+声调”的三音素音节模型。但是，文本中除了标准的音节外，还包括一些不规范的书写形式。比如：缩写词语，数学公式，数字，日期，特殊符号等。文本归一化就是对这些不规范的书写形式进行标准化转换，使傣语文本的书写形式与读音形式保持一致 [ 5 ] 。 文本归一化又称为文本正则化，是指对文本进行分析，将文本中的不规范文本识别出来，将其转换为规范文本的过程。这些不规范的文本我们称为非标准词 [ 6 ] 。非标准词在归一化时应进行标准化转换，否则合成语音将会出现语义不完整或者读音不正确的情况。文本中的非标准词，大部分只有一种读音，即不存在歧义。还有一部分文本，在不同的语境下会有不同的读法，即存在歧义。因此，文本归一化不仅仅只是简单的非标准词转换，还涉及到歧义判断与消歧处理。 傣语文本归一化主要包括两方面的任务，一是将非傣语字符转化为傣语字符并确定其读音，二是将傣文数字的字符形式转化为拼音形式，以使文本与录音保持一致性。处理步骤分为四步：非标准词识别、歧义判断、消歧处理、非标准词转换为标准词。其处理流程如图1所示。 2.1. 傣语非标准词分析 傣语的标准词必须由傣语声韵母构成，凡是不满足此条件的，都为非标准词。如：傣语数字字符“᧐，᧑，᧒，᧓，᧔，…”。虽然属于傣语字符，但它不是标准的声韵母形式，所以仍将其归为非标准词。傣语的非标准词主要由一些非标准字符组成。这些非标准字符可分为四类：  阿拉伯数字。比如：“0，1，2，3，4，…”。  傣语数字。比如：“᧐，᧑，᧒，᧓，᧔，…”。  特殊符号。比如：运算符(+，*，>，…)、网络符号(@，#，/，…)、单位(￥，$，…)。  英文字符。比如：“A，B，C，D，E，…”。 这些非标准字符，可以单独组成非标准词，也可以几种字符组合在一起。常见的形式包括：纯数字、数字与特殊符号组合、特殊符号、纯英文、英文与字符组合。 2.2. 非标准词识别 为了方便且准确识别出非标准词，我们建立了傣语标准字符表，包括42个声母，96个韵母以及2个显性调符 [ 7 ] 。对非标准词的识别，我们的思路是，将傣文音节逐个与标准字符比对，在声韵母表中能直接匹配的音节标记为标准词，否则标记为非标准词。识别具体过程如下： 1) 建立非标准字符数据库。使用Access数据库来存储非标准字符。 2) 连接并读取数据库。使用微软的OLEDB (Object Linking and Embedding Database)来访问数据库。整个过程包括： a) 连接数据库。使用OLEDB中的类OleDbConnection来完成。 b) 读取数据库。根据sql语句来读取数据。用OLEDB的类OleDbCommand来执行sql语句。 c) 关闭连接。读取数据后，调用OleDbConnection对象的close方法关闭数据库连接。 3) 非标准字符比对。将数据库中的数据读取出来后，需要将傣文与标准字符比对。先比对非歧义字符。通过循环，将非歧义字符从变量中逐个取出，并与傣文比对，看傣文中是否包含该歧义字符。接着再比对歧义字符，若包含歧义字符，则后续需进行歧义判断并消歧。 图1. 归一化流程 2.3. 歧义判断 歧义非标准词一般是阿拉伯数字与歧义字符的组合。通过非标准词识别，若傣文中包含歧义字符，则对其进行歧义判断，并结合规则与语境进行消歧处理。根据现有的语料及以往的经验，我们总结出了四种常见的歧义类型，包括：纯数字(123)、数字：数字(12：13)、数字–数字(12~13)、数字/数字(12/13)。对于每一种歧义类型，我们通过正则表达式(Regular Expression)与关键字相结合的方式来判断。正则表达式是对字符串操作的一种逻辑公式，指用事先定义好的特殊字符及普通字符组合成一个“规则字符串”，通过这个“规则字符串”来对文本内容进行匹配与筛选 [ 8 ] 。 2.3.1. 纯数字 纯数字的歧义判断主要是判断该数字是数值还是数码。大多数情况下，纯数字按数值来读。但有时数字需要读为数码，如：手机号码、邮编、QQ号码等。因此需要将数码读法的情况列举出来，并进行判断。常见数码数字的正则与关键字如表1所示。 2.3.2. 歧义字符 当数字与歧义字符组合时，数字都是按数值来发音的，我们主要判断歧义字符的读法。常见的组合有以下三种(n1，n2表示阿拉伯数字)：  n1：n2。这种形式既可读为时间，又可读为比分。如：12：15。由于其形式比较固定，在进行正则判断时是比较简单的。其正则可编写为：(^|[^0-9])\d+:\d+($|[^0-9])。  n1 − n2。这种形式既可以读为范围，又可以读为减法。如：12~15。依据其形式，可编写正则为：(^|[^0-9])\d+−\d+($|[^0-9])。根据正则匹配，即可判断傣文中是否包含该歧义类型。  n1/n2。这种形式既可以读为时间，又可以读为分数。如：12/15。依据其形式，可编写正则为：(^|[^0-9])\d+/\d+($|[^0-9])。根据正则匹配，即可判断傣文中是否包含该歧义类型。 2.4. 消歧处理 通过正则表达式及关键字，我们判断出傣文中哪些地方有歧义，然后对其进行消歧处理。对于纯数字，如果判断出该数字应该读为数码，那么就将其转写为数码读法的傣文；如果是其他歧义字符，则依据歧义判断结果，对其进行消歧。下面将重点阐述数字消歧处理和字符消岐处理。 2.4.1. 数字消歧处理 傣文数字包括阿拉伯数字、傣语数字、傣语读音三种形式。它们三者之间的对应关系如表2所示。 如果歧义判断为数码，只需根据表2所示的转换规则一一转换即可。如果歧义判断为数值，除了按规则将数字转换成傣语数字外，还需在相应位置添加权重。傣语中的数值权重标识符包括：“ᦉᦲᧇ(十)”、“ᦌᦱᧁ(二十)”、“ᦣᦾᧉ(百)”、“ᦗᧃ(千)”、“ᦖᦹᧃ(万)”。数值的读音形式分为一般形式和特殊形式。对于一般的数值，其读法为“数字+权重”的方式，主要包括以下三种形式： Table 1 Digital regular recognition and keyword 数码类型 实例 正则表达式 关键字 手机号码 13586894560 (^|[^0-9])1[3，4，5，7，8]\d{9}($|[^0-9]) 无 邮政编码 650000 (^|[^0-9]) [1-9]\d{5} ($|[^0-9]) ᦍᦲᧁᧉᦈᦵᦲᧃᧈ QQ号码 10000 (^|[^0-9]) [1-9]\d{4，} ($|[^0-9]) qq 表1. 数码的正则识别与关键字 Table 2 Three forms of Dai digita 阿拉伯数字 傣语数字 傣语读音 阿拉伯数字 傣语数字 傣语读音 0 ᧐ ᦉᦳᧃ 5 ᧕ ᦠᦱᧉ 1 ᧑ ᦓᦹᧂᧈ 6 ᧖ ᦠᦷᧅ 2 ᧒ ᦉᦸᧂ 7 ᧗ ᦈᦵᧆ 3 ᧓ ᦉᦱᧄ 8 ᧘ ᦔᦶᧆᧈ 4 ᧔ ᦉᦲᧈ 9 ᧙ ᦂᧁᧉ 表2. 傣语数字的三种形式  个位数 Ø 字符形式与读音形式一一对应，直接替换即可。  十位数 Ø 十位标志词是ᦉᦲᧇ (/sip55/)，读法为“十位标志词+个位数字”，如᧑᧒ (12)为ᦉᦲᧇᦉᦸᧂ。 Ø 30~99读法均为“十位数字+十位标志词+个位数字”，如᧔᧖(46)为ᦉᦲᧈᦉᦲᧇᦠᦷᧅ。  百千万 Ø 百位标志词为ᦣᦾᧉ(/hɔi11/)，千位标志词为ᦗᧃ(/pan41/)，万位标志词为ᦖᦹᧃ(/mɯn35/)，读法均为“数字 + 标志词”，如᧒᧙᧔᧙(2949)为ᦉᦸᧂᦗᧃᦂᧁᧉᦣᦾᧉᦉᦲᧈᦉᦲᧇᦂᧁᧉ。 而对于特殊读法，其转换规则分为以下四类：  数字1与任意数字组合，若为个位数，则需要变调读为ᦀᦵᧆ(/ʔet55/)。如᧑᧑(11)读音为ᦉᦲᧇ ᦀᦵᧆ，而不是ᦉᦲᧇ ᦓᦹᧂᧈ。  20为特殊读法，标志词为ᦌᦱᧁ(/sa:u41/)，读法为标志词+个位数字，如᧒᧓(23)为ᦌᦱᧁᦉᦸᧂ，而不是ᦉᦸᧂ ᦉᦲᧇ ᦉᦱᧄ。  当1出现在最高位时，必须省略不读，直接读标志词即可。如᧑᧖᧒(162)为ᦣᦾᧉ ᦠᦷᧅ ᦉᦲᧇ ᦉᦸᧂ。  当一个0或连续几个0出现在除个位以外的其他位上时，均用ᦔᦻ(/paːi55/)代替，意为“多”，如᧒᧐᧐᧖(2006)为ᦉᦸᧂ ᦗᧃ ᦔᦻ ᦠᦷᧅ。 根据上述规则，傣语数值的归一处理主要分为两阶段：阿拉伯数字转换成傣语数字及添加权重。 2.4.2. 字符消歧处理 对于歧义字符的消歧，我们先设置一个默认读法，将读法更普遍的视为默认读法。如：“12~20”作为范围的情况更多，因此将“-”的默认读法设为ᦏᦹᧂᧈ。这样确保了在没有明显的关键字进行判断的情况下，字符能转换为标准傣语。消歧的思想是利用正则表达式，根据上下文关键字来确定其歧义类型，根据转换规则将非标准词转写成标准词。部分字符消歧规则如表3所示。 这里以时间“12：30”为例说明，消歧过程如下： 1. 依据歧义字符“：”，将上述字符串拆分为“12”，“30”。 2. 将歧义字符消歧为“ᦎᦱ”，并合并出字符串“12 ᦎᦱ 30”。 3. 将傣文中的“12：30”作为整体替换为“12 ᦎᦱ 30”。 2.5. 非标准词转换为标准词 傣文的非标准词识别和消歧处理后，需要对傣文中的非标准词进行标准化转换。转换分为两类：数字转换和特殊字符转换。对于数字转换，难点在于对数值权重的添加，除了将数字归一化为标准傣语外，还要在相应位置添加权重。傣语的特殊字符主要包括英文字母、网络符号和数学符号等，部分字符转换 Table 3 Disambiguation rule of character 歧义类型 正则表达式 关键字 消岐后的傣语读音 n1：n2 (^|[^0-9])\d+:\d+($|[^0-9]) ᦜᦵᦲ(比)默认读法：时间 n1 ᦎᦸᧈ n2n1 ᦎᦱ n2(时间) n1/n2 (^|[^0-9])\d+/\d+($|[^0-9]) ᦑᦸᧈ(等于)默认读法：日期 n2 ᦔᦳᧃ n1ᦡᦵᦲᧃ n1 ᦟᦷᧅᦀᦸᧅᧈ n2 ᦃᧇᧈ(日期) n1-n2 (^|[^0-9])\d+-\d+($|[^0-9]) ᦜᦵᦲᧈ(比)默认读法：范围 n1 ᦟᦳᧇ n2n1 ᦏᦹᧂᧈ n2(范围) 表3. 字符消歧规则 规则如表4所示，经过消歧处理后，特殊字符都是不存在歧义的。所以，特殊字符的归一化只需按照转换规则一一替换即可。