ICU中的拉丁文<->汉字转换?

3
我刚开始在C++程序中使用ICU4C实现ICU转换。我特别关注汉语的音译和意译。根据这份文档,该软件包支持“汉-拉丁”和“拉丁-汉”转换。作为一名汉语学生,我觉得这很令人惊讶,因为没有高级统计技术,就很难进行拉丁-汉转换(最接近的是Google Transliterate,即使没有用户输入,也可以做得很好,但对于目前的项目来说不可行),更不用说没有声调符号的转换了。我怀疑这甚至是不可能的,除非借助类似于比尔·莫瑞这样的外来名字借用字符。这是Google Maps在其国际域中采取的方法,正如我们在(PDF)中看到的那样。
无论如何,在查阅文档和教程后,我能够构建两个Transliterator对象(转换前和转换后),并使用它们执行简单的音译和意译。

虽然汉-拉丁转换工作得相当不错(对于简单数据的准确度约为80%),但拉丁-汉似乎根本不起作用,返回与输入相同的“拉丁”字符串,这与我使用在线转换示例得到的结果一致,并且与我所知道的中文一致。我设法找到了表格,我认为这是两个源都使用的内容,因为我们可以在这里看到:

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

我认为这意味着,给定一个拼音字符串,可能有可能重现原始字符串,但事实并非如此。我的一般问题是:ICU或者除了Google Transliterate之外的任何东西都可以进行这种转换吗?预期的输出是什么?相关的是,如果这不是真正可能的话,是否有ICU实际支持的脚本对列表?谢谢您的时间。
1个回答

3
请注意,数据来自CLDR项目,网址为http://cldr.unicode.org。ICU支持的脚本对很多,ICU会尝试使用一个中间脚本(例如从汉字到拉丁字母再到俄语),这就是为什么您可以创建诸如“任意-拉丁”之类的转写器。您可以尝试浏览ICU和CLDR数据集。Han-Latin文件顶部的注释说它不能回转。

你好,感谢您快速(且权威!)的回复。了解数据来源很好,我会更深入地调查CLDR。然而,对我来说还有一个更一般的问题,那就是您或其他人能否提供一个例子,可以从拉丁文字或类似拉丁文字的输入产生汉字文本?我已经尝试在在线演示中使用无数组合,但没有任何一种能产生汉字文本。我知道有枢轴转换,但似乎我找不到通向生成汉字书写的枢轴路线,即使不考虑往返上下文。 - NatHillard
不用谢。我认为你对这是一个困难的问题是正确的,基本上这是输入法所面临的问题,最终会向用户呈现不同的选择。你可以在CLDR用户列表中询问。 - Steven R. Loomis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接