Python實現中文轉化為對應的拼音以及拼音轉化為相應的中文
阿新 • • 發佈:2018-12-29
由於專案的需求,在使用中文和漢語拼音的轉化,自己寫了一個版本,感覺很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]