1. 程式人生 > >Python實現中文轉化為對應的拼音以及拼音轉化為相應的中文

Python實現中文轉化為對應的拼音以及拼音轉化為相應的中文

     由於專案的需求,在使用中文和漢語拼音的轉化,自己寫了一個版本,感覺很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]