0

假设您要将一组字符转换为另一组字符。不是将集合 A 中的每个字符 1-1 映射到集合 B 中的相应字符,而是稍微复杂一些。想像一个从泰语韩语等脚本到拉丁语脚本的自然语言音译器。在韩语示例中,您会得到如下内容:

SKATS:  LUM CU LE  MEG KUGG BE.
Hangul: 김치가 맛있다.

SKATS 与韩文存在 1 对 1 的映射关系。LU是一个字母,M另一个,CU另一个等等。这些字母与韩文字符的发音没有对应关系,这些基本上只是从帽子里挑选出来的。

当您有多个字符代表一个字符时,问题就开始出现了。

比如说你有一个“送气t”的声音,IPA表示,你也有字母tand h,你有英语的th声音(θ在 IPA 中)。假设您决定将声音表示为th。好吧,你可以有这个实际的序列:

tʰ-tʰ-th-t-t-h-t-tʰ-h-th

如果你翻译它会是:

 th-th-th-t-t-h-t-th-h-th

结合它的实际外观是:

 thththtthtthhth

现在的问题是如何回到原来的字符序列。我们可以用多种方式解释这一点:

 th-th-th-t-th-t-th-h-th
 th-th-th-t-t-h-t-th-h-th
 th-th-th-t-t-h-t-t-h-h-th
 th-th-th-t-t-h-t-t-h-h-t-h
 th-th-th-t-t-h-t-t-h-h-tʰ
 th-th-th-t-t-h-t-tʰ-h-tʰ
 etc.

你如何编写一个算法来检查你的映射是否是 1:1 无损的以防止这个问题?我试图把我的头缠上几天,但我没有得到任何地方。

另一个例子是如果你有“单个字母”被转码成“ts”、“s”、“t”、“h”、“th”、“tsh”、“thsh”等。那么你有一个真正的问题.

4

0 回答 0