赞
踩
由于项目的需求,在使用中文和汉语拼音的转化,自己写了一个版本,感觉很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]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。