NLP自然語言處理-漢字拼音轉(zhuǎn)換

NLP自然語言處理-漢字拼音轉(zhuǎn)換

簡介

特性

  • https://github.com/mozillazg/python-pinyin#id1
  • 根據(jù)詞組智能匹配最正確的拼音声离。
  • 支持多音字。
  • 簡單的繁體支持, 注音支持胀屿。
  • 支持多種不同拼音/注音風(fēng)格抄罕。

安裝

$ pip install pypinyin
使用示例 Python 3(Python 2 下把 ‘中心’ 替換為 u’中心’ 即可):

>>> from pypinyin import pinyin, lazy_pinyin, Style >>> pinyin('中心') [['zhōng'], ['xīn']] >>> pinyin('中心', heteronym=True) # 啟用多音字模式 [['zhōng', 'zhòng'], ['xīn']] >>> pinyin('中心', style=Style.FIRST_LETTER) # 設(shè)置拼音風(fēng)格 [['z'], ['x']] >>> pinyin('中心', style=Style.TONE2, heteronym=True) [['zho1ng', 'zho4ng'], ['xi1n']] >>> pinyin('中心', style=Style.TONE3, heteronym=True) [['zhong1', 'zhong4'], ['xin1']] >>> pinyin('中心', style=Style.BOPOMOFO) # 注音風(fēng)格 [['ㄓㄨㄥ'], ['ㄒㄧㄣ']] >>> lazy_pinyin('中心') # 不考慮多音字的情況 ['zhong', 'xin'] >>> lazy_pinyin('戰(zhàn)略', v_to_u=True) # 不使用 v 表示 ü ['zhan', 'lüe'] # 使用 5 標(biāo)識輕聲 >>> lazy_pinyin('衣裳', style=Style.TONE3, neutral_tone_with_five=True) ['yi1', 'shang5']

注意事項 :
默認(rèn)情況下拼音結(jié)果不會標(biāo)明哪個韻母是輕聲,輕聲的韻母沒有聲調(diào)或數(shù)字標(biāo)識(可以通過參數(shù) neutral_tone_with_five=True 開啟使用 5 標(biāo)識輕聲 )。
默認(rèn)情況下無聲調(diào)相關(guān)拼音風(fēng)格下的結(jié)果會使用 v 表示 ü (可以通過參數(shù) v_to_u=True 開啟使用 ü 代替 v )逛拱。
默認(rèn)情況下會原樣輸出沒有拼音的字符(自定義處理沒有拼音的字符的方法見 文檔 )。

命令行工具:

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

文檔

  • 詳細(xì)文檔請訪問:http://pypinyin.rtfd.io/ 台猴。
  • 項目代碼開發(fā)方面的問題可以看看 開發(fā)文檔 https://pypinyin.readthedocs.io/zh_CN/develop/develop.html 朽合。

FAQ

詞語中的多音字拼音有誤?

目前是通過詞組拼音庫的方式來解決多音字問題的饱狂。如果出現(xiàn)拼音有誤的情況曹步, 可以自定義詞組拼音來調(diào)整詞語中的拼音:

>>> from pypinyin import Style, pinyin, load_phrases_dict >>> pinyin('步履蹣跚') [['bù'], ['lǚ'], ['mán'], ['shān']] >>> load_phrases_dict({'步履蹣跚': [['bù'], ['lǚ'], ['pán'], ['shān']]}) >>> pinyin('步履蹣跚') [['bù'], ['lǚ'], ['pán'], ['shān']]

為什么沒有 y, w, yu 幾個聲母?

>>> from pypinyin import Style, pinyin >>> pinyin('下雨天', style=Style.INITIALS) [['x'], [''], ['t']]

因為根據(jù) 《漢語拼音方案》 休讳, y讲婚,w,ü (yu) 都不是聲母俊柔。

聲母風(fēng)格(INITIALS)下筹麸,“雨”活合、“我”、“圓”等漢字返回空字符串物赶,因為根據(jù) 《漢語拼音方案》 白指, y,w酵紫,ü (yu) 都不是聲母侵续,在某些特定韻母無聲母時,才加上 y 或 w憨闰,而 ü 也有其特定規(guī)則状蜗。 —— @hotoo

如果你覺得這個給你帶來了麻煩,那么也請小心一些無聲母的漢字(如“啊”鹉动、“餓”轧坎、“按”、“昂”等)泽示。 這時候你也許需要的是首字母風(fēng)格(FIRST_LETTER)缸血。 —— @hotoo

參考: hotoo/pinyin#57, #22, #27, #44

如果覺得這個行為不是你想要的,就是想把 y 當(dāng)成聲母的話械筛,可以指定 strict=False 捎泻, 這個可能會符合你的預(yù)期:

>>> from pypinyin import Style, pinyin >>> pinyin('下雨天', style=Style.INITIALS) [['x'], [''], ['t']] >>> pinyin('下雨天', style=Style.INITIALS, strict=False) [['x'], ['y'], ['t']]

詳見 strict 參數(shù)的影響 。

如何減少內(nèi)存占用

如果對拼音的準(zhǔn)確性不是特別在意的話埋哟,可以通過設(shè)置環(huán)境變量 PYPINYIN_NO_PHRASES 和 PYPINYIN_NO_DICT_COPY 來節(jié)省內(nèi)存笆豁。 詳見 文檔

更多 FAQ 詳見文檔中的 FAQ 部分。

拼音數(shù)據(jù)

  • 單個漢字的拼音使用 pinyin-data 的數(shù)據(jù)
  • 詞組的拼音使用 phrase-pinyin-data 的數(shù)據(jù)
  • 聲母和韻母使用 《漢語拼音方案》 的數(shù)據(jù)

Related Projects

hotoo/pinyin: 漢字拼音轉(zhuǎn)換工具 Node.js/JavaScript 版赤赊。
mozillazg/go-pinyin: 漢字拼音轉(zhuǎn)換工具 Go 版闯狱。 mozillazg/rust-pinyin: 漢字拼音轉(zhuǎn)換工具 Rust 版。

實現(xiàn)原理

主邏輯:

  1. 對輸入的字符串按是否是漢字進(jìn)行分詞(seg
  2. 對分詞結(jié)果的每個詞條進(jìn)行獲取詞條拼音的邏輯
    2.1 檢查詞條是否是漢字抛计,不是漢字則走處理沒有拼音數(shù)據(jù)的邏輯(handle_nopinyin)
    2.2 檢查詞條是否在 PHRASES_DICT 中哄孤,如果在直接取 PHRASES_DICT 中這個詞條的拼音數(shù)據(jù) 2.3 如果詞條不在 PHRASES_DICT 中,遍歷詞條包含的字符吹截,每個字符進(jìn)行 single_pinyin 邏輯處理
  3. single_pinyin 的邏輯:
    3.1 檢查字符是否在 PINYIN_DICT 中瘦陈,如果在的話,取 PINYIN_DICT 中這個字符的拼音數(shù)據(jù) 3.2 如果不在的話波俄,走 handle_nopinyin 邏輯
  4. handle_nopinyin 邏輯: 根據(jù) errors 參數(shù)的值返回不同的結(jié)果晨逝。
  5. 對上面的步驟獲得的拼音數(shù)據(jù)按指定的拼音風(fēng)格進(jìn)行轉(zhuǎn)換。
  • PHRASES_DICT:詞組拼音數(shù)據(jù)
  • PINYIN_DICT: 單個漢字的拼音數(shù)據(jù)

本文使用 文章同步助手 同步

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末弟断,一起剝皮案震驚了整個濱河市咏花,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖昏翰,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件苍匆,死亡現(xiàn)場離奇詭異,居然都是意外死亡棚菊,警方通過查閱死者的電腦和手機(jī)浸踩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來统求,“玉大人检碗,你說我怎么就攤上這事÷肓冢” “怎么了折剃?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長像屋。 經(jīng)常有香客問我怕犁,道長,這世上最難降的妖魔是什么己莺? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任奏甫,我火速辦了婚禮,結(jié)果婚禮上凌受,老公的妹妹穿的比我還像新娘阵子。我一直安慰自己,他們只是感情好胜蛉,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布挠进。 她就那樣靜靜地躺著,像睡著了一般腾么。 火紅的嫁衣襯著肌膚如雪奈梳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天解虱,我揣著相機(jī)與錄音,去河邊找鬼漆撞。 笑死殴泰,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的浮驳。 我是一名探鬼主播悍汛,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼至会!你這毒婦竟也來了离咐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎宵蛀,沒想到半個月后昆著,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡术陶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年凑懂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梧宫。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡接谨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出塘匣,到底是詐尸還是另有隱情脓豪,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布忌卤,位于F島的核電站跑揉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏埠巨。R本人自食惡果不足惜历谍,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辣垒。 院中可真熱鬧望侈,春花似錦、人聲如沸勋桶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽例驹。三九已至捐韩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鹃锈,已是汗流浹背荤胁。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留屎债,地道東北人仅政。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像盆驹,于是被迫代替她去往敵國和親圆丹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容