由于项目的需求,在使用中文和汉语拼音的转化,自己写了一个版本,感觉很low,本质上就是读数据库,闲来查了一下,居然还真的有这样现成的库,就拿来使用一下吧,代码很简单,就是觉得挺有意思的,下面的样例代码,喜欢玩的可以拿去试试:
#!usr/bin/env python #encoding:utf-8 from __future__ import division ''' __Author__:沂水寒城 功能:汉字与拼音的转化 ''' import sys from xpinyin import Pinyin from Pinyin2Hanzi import DefaultDagParams from Pinyin2Hanzi import dag reload(sys) sys.setdefaultencoding("utf-8") def hanzi_to_pinyin(one_str,flag=''): ''' 将汉字转化为对应的拼音 ''' translator=Pinyin() one_kw_pinyin=translator.get_pinyin(unicode(one_str), flag).strip() print '{0} Pinyin is: {1}'.format(one_str.decode('utf-8'),one_kw_pinyin) return one_kw_pinyin def pinyin_to_hanzi(pinyin,Topk=5): ''' 拼音转化为汉字 汉字存在多意性,所以这里没有一一对应的关系,只能选出概率最高的topk ''' translator=DefaultDagParams() result=dag(translator,pinyin,path_num=Topk,log=True) for item in result: socre=item.score # 得分 res=item.path # 转换结果 print socre, ''.join([one.decode('utf-8') for one in res]) if __name__ == '__main__': one_str=u"今天我们从哈尔滨工业大学毕业了" one_pinyin=hanzi_to_pinyin(one_str,flag='') one_pinyin_list=['jin','tian','wo','men','bi','ye','le'] pinyin_to_hanzi(one_pinyin_list,Topk=5) one_pinyin_list=['jin','tian','wo','men','cong','ha','gong','da','bi','ye','le'] pinyin_to_hanzi(one_pinyin_list,Topk=5)
结果如下:
今天我们从哈尔滨工业大学毕业了 Pinyin is: jintianwomenconghaerbingongyedaxuebiyele -2.6794233796 今天我们毕业了 -4.5275475027 今天我们毕业了 -4.73691227283 今天我们毕业乐 -4.78472579465 今天我们毕业勒 -4.78840427787 今天我们毕业肋 -6.54485608597 今天我们从哈工大毕业了 -6.58379180427 今天我们聪哈工大毕业了 -6.58383547606 今天我们匆哈工大毕业了 -6.58493875469 今天我们丛哈工大毕业了 -6.58684225671 今天我们葱哈工大毕业了 [Finished in 1.6s]
———END———
限 时 特 惠: 本站每日持续更新海量各大最新【内部创业教程】,一年会员只需 98 元,全站资源免费下载 点击查看详情
站 长 微 信: webprojs_com
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。