漢語拼音轉換工具 Python 版:Python-pinyin

jopen 9年前發布 | 43K 次閱讀 Python開發 Python-pinyin

將漢語轉為拼音。可以用于漢字注音、排序、檢索。

基于 hotoo/pinyin 開發。

特性

  • 根據詞組智能匹配最正確的拼音。
  • 支持多音字。
  • 簡單的繁體支持。
  • 支持多種不同拼音風格。

安裝

$ pip install pypinyin

為了更好的處理包含多音字及非中文字符的字符串,推薦同時安裝 jieba 分詞模塊。

使用示例
>>> from pypinyin import pinyin, lazy_pinyin
>>> import pypinyin
>>> pinyin(u'中心')
[[u'zh\u014dng'], [u'x\u012bn']]
>>> pinyin(u'中心', heteronym=True)  # 啟用多音字模式
[[u'zh\u014dng', u'zh\xf2ng'], [u'x\u012bn']]
>>> pinyin(u'中心', style=pypinyin.INITIALS)  # 設置拼音風格
[['zh'], ['x']]
>>> pinyin('中心', style=pypinyin.TONE2, heteronym=True)
[['zho1ng', 'zho4ng'], ['xi1n']]
>>> lazy_pinyin(u'中心')  # 不考慮多音字的情況
['zhong', 'xin']

命令行工具:

$ pypinyin 音樂
yīn yuè
$ pypinyin -h

分詞處理

如果安裝了 jieba 分詞模塊,程序會自動調用。

使用其他分詞模塊:

  1. 安裝分詞模塊,比如pip install snownlp;

  2. 使用經過分詞處理的字符串列表作參數:

    >> from pypinyin import lazy_pinyin, TONE2
    >> from snownlp import SnowNLP
    >> hans = u'音樂123'
    >> lazy_pinyin(hans, style=TONE2)
    [u'yi1n', u'le4', u'1', u'2', u'3']
    >> hans_seg = SnowNLP(hans).words  # 分詞處理
    >> hans_seg
    [u'\u97f3\u4e50', u'123']
    >> lazy_pinyin(hans_seg, style=TONE2)
    [u'yi1n', u'yue4', u'123']

自定義拼音庫

如果對結果不滿意,可以通過自定義拼音庫的方式修正結果:

安裝了 jieba 分詞模塊并且支持分詞的詞組

>> from pypinyin import lazy_pinyin, load_phrases_dict, TONE2
>> hans = u'桔子'
>> lazy_pinyin(hans, style=TONE2)
[u'jie2', u'zi3']
>> load_phrases_dict({u'桔子': [[u'jú'], [u'zǐ']]})
>> lazy_pinyin(hans, style=TONE2)
[u'ju2', u'zi3']

未安裝 jieba 分詞模塊 and/or 不支持分詞的詞組

>> from pypinyin import lazy_pinyin, load_phrases_dict, TONE2, load_single_dict
>> hans = u'還沒'
>> lazy_pinyin(hans, style=TONE2)
['hua2n', 'me2i']
>>>  # 第一種自定義詞組的方法
>> load_phrases_dict({u'還沒': [[u'hái'], [u'méi']]})
>>> lazy_pinyin(u'還沒', style=TONE2)})
['hua2n', 'me2i']
>>> lazy_pinyin([u'還沒'], style=TONE2)  # 手動指定 "還沒" 為一個詞組
['ha2i', 'me2i']
>>>  # 第二種自定義詞組的方法
>> load_single_dict({ord(u'還'): u'hái,huán'})  # 調整 "還" 字的拼音順序
>>> lazy_pinyin(u'還沒', style=TONE2)
['ha2i', 'me2i']

Related Projects

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!