将汉字转换为汉语拼音

时间:2010-12-05 23:27:55

标签: language-agnostic nlp cjk

如何将 中文字符 转换为 hanyu拼音?

E.g。

你 - > Nǐ

马 - > Mǎ


更多信息:

汉语拼音的重音或数字形式均可接受,数字形式为我的偏好。

首选Java库,但是,可以放在包装器中的另一种语言的库也可以。

我希望任何拥有 亲自使用 此类图书馆的人在质量/可靠性方面推荐或评论它。

4 个答案:

答案 0 :(得分:5)

将汉字转换为拼音的问题是一个相当困难的问题。根据上下文,有许多汉字字符具有多个拼音表示。比较长大(拼音:zhang da)和长城(拼音:chang cheng)。出于这个原因,单字符转换通常实际上是无用的,除非您有一个输出多种可能性的系统。还存在分词的问题,其也可以影响拼音表示。虽然也许你已经知道了这一点,但我认为这很重要。

尽管如此,Adso Package包含一个分段器和一个概率拼音注释器,基于优秀的Adso库。虽然需要一段时间才能适应,并且可能比你想要的要大得多(我在过去发现它对我的需求来说有点过于笨重)。此外,似乎没有任何公共API,它的C ++ ...

对于最近的一个项目,因为我正在使用地名,我只是使用谷歌翻译API(特别是非官方的Java端口,至少对于普通名词来说,它通常可以很好地翻译成拼音。问题是常用的替代音译系统,如“香港”应该是什么“香港”。鉴于这一切,谷歌翻译是相当有限的,但它提供了一个开始。我没有听说过之前的pinyin4j,但之后刚刚玩它,我发现它不是最优的 - 虽然它输出了一个潜在的候选拼音罗马化列表,它没有尝试统计确定它们的可能性。有一种方法可以返回单个表示,但它会很快就会被逐步淘汰,因为它目前只返回第一个罗马化,而不是最有可能。该程序似乎表现良好的是罗马化与一般可配置性之间的转换。

简而言之,答案可能是其中任何一个,具体取决于您的需求。特殊专有名词?谷歌翻译。需要统计吗? ADSO。是否愿意接受没有上下文信息的候选人名单? Pinyin4j。

答案 1 :(得分:2)

在Python中尝试

from cjklib.characterlookup import CharacterLookup
cjk = CharacterLookup('C')
cjk.getReadingForCharacter(u'北', 'Pinyin')

你会得到

['běi', 'bèi']

免责声明:我是该图书馆的作者。

答案 2 :(得分:1)

对于Java,我会尝试pinyin4j library

答案 3 :(得分:1)

Basis Technology销售一套语言技术,除其他外,可以为中文单词制作拼音。既然你已经表明你偏爱开源,并且因为如果你唯一需要的是拼音转换,我不能告诉你我们的东西有任何巨大的优势,如果有的话,我会留给你看看我们来自@mjv的开源替代方案不合适。