Python 识别中文生成带声调的拼音

2023-07-20 20:51:56 浏览数 (1)

本文记录使用 Python pypinyin 库获取中文声调拼音的方法。

pypinyin

将汉字转为拼音。可以用于汉字注音、排序、检索 。

特性
  • 根据词组智能匹配最正确的拼音。
  • 支持多音字。
  • 简单的繁体支持,注音支持,威妥玛拼音支持。
  • 支持多种不同拼音/注音风格。
相关地址
  • Pypi地址:https://pypi.org/project/pypinyin/
  • 开源地址:https://github.com/mozillazg/python-pinyin
  • 文档地址: https://pypinyin.readthedocs.io/

安装

1

pip install pypinyin

使用

引入库

12

import pypinyinfrom pypinyin import pinyin

基础用法

pinyin 方法输入中文字符,可以自动识别多音字音调。

1234

pinyin('他办事从不草率,效率一向很高')-->['tā', 'bàn', 'shì', 'cóng', 'bù', 'cǎo', 'shuài', ',', 'xiào', 'lǜ', 'yí', 'xiàng', 'hěn', 'gāo']

多音字

pinyin 方法中加入参数 heteronym=True 识别多音字

1234

pinyin('冯',heteronym=True)-->['féng', 'píng']

生成一维嵌套列表

lazy_pinyin 方法可以直接输出一维列表

1234

pypinyin.lazy_pinyin('我收集的材料散失了,散文没法写了')-->'wo', 'shou', 'ji', 'de', 'cai', 'liao', 'san', 'shi', 'le', ',', 'san', 'wen', 'mei', 'fa', 'xie', 'le'

音调风格

可以通过 style 参数控制输出拼音格式,常用的风格有下面这14种。

1234567891011121314151617181920212223242526272829303132333435363738394041

#: 普通风格,不带声调。如: 中国 -> zhong guoNORMAL = 0#: 标准声调风格,拼音声调在韵母第一个字母上(默认风格)。如: 中国 -> zhōng guóTONE = 1#: 声调风格2,即拼音声调在各个韵母之后,用数字 1-4 进行表示。如: 中国 -> zho1ng guo2TONE2 = 2#: 声调风格3,即拼音声调在各个拼音之后,用数字 1-4 进行表示。如: 中国 -> zhong1 guo2TONE3 = 8#: 声母风格,只返回各个拼音的声母部分(注:有的拼音没有声母,详见 #27_)。如: 中国 -> zh gINITIALS = 3#: 首字母风格,只返回拼音的首字母部分。如: 中国 -> z gFIRST_LETTER = 4#: 韵母风格,只返回各个拼音的韵母部分,不带声调。如: 中国 -> ong uoFINALS = 5#: 标准韵母风格,带声调,声调在韵母第一个字母上。如:中国 -> ōng uóFINALS_TONE = 6#: 韵母风格2,带声调,声调在各个韵母之后,用数字 1-4 进行表示。如: 中国 -> o1ng uo2FINALS_TONE2 = 7#: 韵母风格3,带声调,声调在各个拼音之后,用数字 1-4 进行表示。如: 中国 -> ong1 uo2FINALS_TONE3 = 9#: 注音风格,带声调,阴平(第一声)不标。如: 中国 -> ㄓㄨㄥ ㄍㄨㄛˊBOPOMOFO = 10#: 注音风格,仅首字母。如: 中国 -> ㄓ ㄍBOPOMOFO_FIRST = 11#: 汉语拼音与俄语字母对照风格,声调在各个拼音之后,用数字 1-4 进行表示。如: 中国 -> чжун1 го2CYRILLIC = 12#: 汉语拼音与俄语字母对照风格,仅首字母。如: 中国 -> ч гCYRILLIC_FIRST = 13

示例:

1234

pinyin('我收集的材料散失了,散文没法写了', style=pypinyin.STYLE_TONE3)-->['wo3', 'shou1', 'ji2', 'de', 'cai2', 'liao4', 'san4', 'shi1', 'le', ',', 'san3', 'wen2', 'mei2', 'fa3', 'xie3', 'le']

轻音

轻音默认不做声调标识,如果需要额外标注轻音为5,需要加入参数 neutral_tone_with_five=True

1234

lazy_pinyin('衣裳', style=Style.TONE3, neutral_tone_with_five=True)-->'yi1', 'shang5'

自定义拼音

如果对拼音返回的结果不满意可以自定义词语明确拼音内容,例如:

1234

print(pypinyin.pinyin('又见苍岚'))-->['yòu', 'jiàn', 'cāng', 'lán']

我想改 这个子的拼音,我就自定义一个字典,用 load_phrases_dict 方法加载进去:

12

personalized_dict = {'又见苍岚': ['yòu', 'xiàn', 'cāng', 'lán']}pypinyin.load_phrases_dict(personalized_dict)

再次输出该词语的拼音就改过来了:

1234

print(pypinyin.pinyin('又见苍岚'))-->['yòu', 'xiàn', 'cāng', 'lán']

中英混搭

可以自动处理标点符号和中英文编码:

1234

pypinyin.lazy_pinyin("我觉得OK!")) -->'wo', 'jue', 'de', 'OK!'

参考资料

  • https://pypi.org/project/pypinyin/
  • https://www.jianshu.com/p/483fc43bb662
  • http://www.zzvips.com/article/204538.html

文章链接: https://cloud.tencent.com/developer/article/2303816

0 人点赞