ruby-pinyin 是一个能把汉字转换为拼音的 gem, 使用起来很简单:
PinYin.of_string('南京市长江大桥', :unicode) #return ["nán", "jīng", "shì", "cháng", "jiāng", "dà", "qiáo"]
0.3.0 版最大的改动是能够基本正确的识别多音字,比如上面例子里面的"长", 读"chang2"而不是"zhang3"。
ruby-pinyin 做到现在收到最多的反馈是希望能处理好多音字,希望这个元旦礼物大家能喜欢 :) ruby-pinyin 应该是目前唯一的能处理多音字的开源注音方案了吧。
更多说明请看项目地址:https://github.com/janx/ruby-pinyin
这个和分词有关吧,就例子里面的,如果在这个上下文: 南京市长江大桥在清明节视察了精神病院
那就是
南京 市长 江大桥
长就是 zhang 的音了...
所以还是不要带分词,让需要的人用分词好的结果再进入这个 gem 来获取拼音。
#15 楼 @quakewang 这个对我来说难度太高了..
如果更喜欢自定义字库或者有其他什么原因想要 fallback 到之前按字注音的,可以这样配置一下:
PinYin.backend = PinYin::Backend::Simple.new
ruby
-> "南京市长江大桥".to_word
-> [ "南京市", "长江", "大桥" ]
ruby
-> "南京市长江大桥在清明节视察了精神病院".to_word
-> [ "南京", "市长", "江大桥", "在", "清明节", "视察", "了", "精神病院" ]
ruby
-> "长".to_pinyin
-> [ "chang2", "zhang3" ]
-> "市长".to_pinyin
-> [ "shi4", "zhang3" ]
-> "👍".to_pinyin
-> [ "Are u kidding me ?" ]