Gem 支持多音字的汉字转拼音 ruby-pinyin 0.3.0 发布了

jan · 2013年12月30日 · 最后由 jan 回复于 2014年01月10日 · 5444 次阅读

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

共收到 27 条回复

以前用过哦。。不过

让你一盘 MVP! :p

👍 好东西

是不是给那些多音字做了 Map 了?

分词是如何实现的?

顶,终于有支持多音字的了!

#7楼 @cisolarix 目前用的rmmseg-cpp, 看看效果先

#5楼 @huacnlee 是给“词”做了一个数据库,因为多音字在一个词里面的读音是确定的

多音字的词库哪里来的呢,不知道数据量如何

不该带上 mmseg 的,词库略大,另外,你带上实际上也不一定适合别人的项目,一般词库都需要自定义的

这个和分词有关吧,就例子里面的,如果在这个上下文: 南京市长江大桥在清明节视察了精神病院

那就是

南京 市长 江大桥

长就是zhang的音了...

所以还是不要带分词,让需要的人用分词好的结果再进入这个gem来获取拼音。

redis-search 换用这个啦

#13楼 @shiny 我自己整理的,保留版权,但是你可以随意使用,注明出处就好 :) 目前有17万词左右

#15楼 @quakewang 这个分词不能吧 ...

#14楼 @huacnlee 词库大小我也纠结了挺久,最后还是带上了,主要是觉得现在的主流配置还是能接受的,就是安装的时候可能会慢一点,不过用ruby.taobao.org的话也没啥感觉 :) 这样先解决correctness, 在考虑效率之类的问题

#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 ?" ]

#20楼 @jan OK,这个配置好

#19楼 @jan 不是说安装下载,而是跑起来会多占内存,而且没个进程多那么多,而分词可能不一定用得上,这个如果可以搞成可配置项或许会更好

#20楼 @jan 我明白了,这里是可以覆盖的

#23楼 @huacnlee 恩,下一步打算把内存占用优化一下

#21楼 @song940 是的, 打算在major version变动的时候改api

@huacnlee 发布了0.4.0, 体积减小了25%

另外根据使用频率调整了多音字的发音。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册