3


我刚刚开始在 C++ 程序中使用 ICU4C 实现 ICU 转换。我特别关注中文的音译。

根据此文档,该软件包同时支持“Han-Latin”和“Latin-Han”转换。作为一名学习中文的学生,这让我感到惊讶,因为如果没有高度先进的统计技术,拉丁汉转换特别困难(我见过的最接近的是谷歌音译,即使没有用户输入,它实际上在这方面做得很好,但这对于目前的项目是不可行的),更不用说没有音标的转换了。我什至怀疑这是否可能,无需诉诸比尔·莫瑞等事实上的外国名字借用字符。这是谷歌地图在其国际领域所采用的方法,正如我们在本文中看到的(PDF)

无论如何,我愿意暂停怀疑,在查阅文档和教程之后,我能够构造两个 Transliterator 对象(to 和 from)并使用它们执行简单的音译。

虽然 Han-Latin 工作得相当好(简单数据的准确率约为 80%),但 Latin-Han 似乎根本不起作用,返回与输入相同的“latin”字符串,这与我使用在线转换得到的结果一致sample,和我对中文的了解一致。我设法找到了这张表,我认为这两个来源都使用了这张表,我们可以在这里看到:

{ "Latin-Han", "file", "t_Hani_Latn", "REVERSE" },
{ "Han-Latin", "file", "t_Hani_Latn", "FORWARD" },

我认为这意味着给定一个拼音字符串,它可能会复制原始字符串,但情况似乎并非如此。

我想我的一般问题是这样的:ICU 或除了谷歌音译之外的任何东西都可以实现这种转换吗?什么是预期的输出?相关地,如果这不是真的可能,是否有 ICU实际支持的脚本对的列表?

感谢您的时间

4

1 回答 1

3

请注意,数据来自 CLDR 项目http://cldr.unicode.org。ICU 支持的脚本对有很多,ICU 将尝试使用中枢脚本(例如 Han to Latin to Russian ),这就是为什么您可以创建诸如“Any-Latin”之类的音译。您可以尝试浏览 ICU 和 CLDR 数据集。汉拉丁文件顶部的注释说它不是往返。

于 2011-04-29T23:27:05.277 回答