2011-04-29 86 views
3


我刚刚开始在C++程序中使用ICU4C实现ICU转换。我特别关注中国人和中国人的音译。拉丁文<->汉族ICU转换?

根据this document,该软件包支持“Han-Latin”和“Latin-Han”转换。作为中国学生,这似乎令我感到惊讶,因为如果没有高度先进的统计技术,拉丁文 - 汉字转换特别困难(最接近我看到的是Google Transliterate,即使没有用户输入,它实际上也做得很好,但是对于目前的项目来说这是不可行的),没有音调标记的转换少得多。我怀疑这甚至是可能的,而不诉诸事实上的外国借用人物,如比尔·莫瑞。这是谷歌地图在其国际领域采取的方法,正如我们在本白皮书中看到的那样,(PDF)

无论如何,我愿意暂停怀疑,并且在咨询了文档和教程后,我能够构建两个Transliterator对象来回)并使用它们执行简单的音译。

虽然Han-Latin的工作非常流畅(简单数据的准确率约为80%),但Latin-Han似乎根本不工作,返回输入的相同“拉丁”字符串,这与我得到的结果一致使用online transform sample,并符合我对中文的了解。我设法找到this表,我认为这是什么用于两个来源,我们可以看到here

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

我想这意味着,给定的拼音串它可能工作重现原作,但似乎并非如此。

我想我的一般问题是:这种转换甚至可能与ICU,或者Google Transliterate之外的任何其他类型?什么是预期的输出?相关的,是否有一个脚本对ICU 实际上支持,如果这不是真的可能?

谢谢您的时间

回答

3

注意,数据是从CLDR项目,http://cldr.unicode.org。 ICU支持的脚本对有很多,ICU将尝试使用枢轴脚本(例如汉语拉丁语到俄语),这就是为什么您可以创建音译器(如“任意拉丁语”)的原因。您可以尝试浏览ICU和CLDR数据集。汉拉丁文件顶部的注释说它不会往返。

+0

你好,感谢你的快速(和权威!)回应。了解数据的来源是很好的,我将会对CLDR进行更详细的调查。尽管如此,一个更普遍的问题仍然存在,那就是你或者某个人能否提供一个能从拉丁文或拉丁文输入中产生汉文的例子?我已经尝试了在线演示中的无数组合,但没有产生汉文本。我知道旋转,但似乎我没有发现任何枢轴线路来产生汉字,即使在往返环境之外。 – NatHillard 2011-04-29 23:35:11

+0

不客气。我认为你说这是一个困难的问题是正确的,它基本上是由输入方法所面对,最终为用户提供不同的选择。您可能会询问CLDR用户列表。 – 2011-04-29 23:48:07