在自然语言的处理中语义分析中,除了需要拆解字形外,字音有时也能表示含义。另外,在搭建搜索引擎时在搜索词query分析是也会的用到汉字转拼音或拼音转汉字的场景。
Python已经有很多包支持类似的功能,整理出来供后续使用。
pypinyin
主要有三个方法:
pinyin()
将汉字转换为拼音,返回汉字的拼音列表。
def pinyin(hans, style=Style.TONE, heteronym=False, errors='default', strict=True, v_to_u=False, neutral_tone_with_five=False)
参数说明:
- hans:汉字字符串或列表
- style:指定拼音风格
- NORMAL = 0 #: 普通风格,不带声调。如: 中国 -> “zhong guo“
- TONE = 1 #: 标准声调风格,拼音声调在韵母第一个字母上(默认风格)。如: 中国 -> “zhōng guó“
- TONE2 = 2 #: 声调风格2,即拼音声调在各个韵母之后,用数字 [1-4] 进行表示。如: 中国 -> “zho1ng guo2“
- TONE3 = 8 #: 声调风格3,即拼音声调在各个拼音之后,用数字 [1-4] 进行表示。如: 中国 -> “zhong1 guo2“
- INITIALS = 3 #: 声母风格,只返回各个拼音的声母部分(注:有的拼音没有声母,详见 `#27`_)。如: 中国 -> “zh g“
- FIRST_LETTER = 4 #: 首字母风格,只返回拼音的首字母部分。如: 中国 -> “z g“
- FINALS = 5 #: 韵母风格,只返回各个拼音的韵母部分,不带声调。如: 中国 -> “ong uo“
- FINALS_TONE = 6 #: 标准韵母风格,带声调,声调在韵母第一个字母上。如:中国 -> “ōng uó“
- FINALS_TONE2 = 7 #: 韵母风格2,带声调,声调在各个韵母之后,用数字 [1-4] 进行表示。如: 中国 -> “o1ng uo2“
- FINALS_TONE3 = 9 #: 韵母风格3,带声调,声调在各个拼音之后,用数字 [1-4] 进行表示。如: 中国 -> “ong1 uo2“
- BOPOMOFO = 10 #: 注音风格,带声调,阴平(第一声)不标。如: 中国 -> “ㄓㄨㄥ ㄍㄨㄛˊ“
- BOPOMOFO_FIRST = 11 #: 注音风格,仅首字母。如: 中国 -> “ㄓ ㄍ“
- CYRILLIC = 12 #: 汉语拼音与俄语字母对照风格,声调在各个拼音之后,用数字 [1-4] 进行表示。如: 中国 -> “чжун1 го2“
- CYRILLIC_FIRST = 13 #: 汉语拼音与俄语字母对照风格,仅首字母。如: 中国 -> “ч г“
- WADEGILES = 14 #: 威妥玛拼音/韦氏拼音/威式拼音风格,无声调
- heteronym:是否启用多音字
- strict:是否严格遵照《汉语拼音方案》来处理声母和韵母
- v_to_u:无声调相关拼音风格下的结果是否使用 “ü“ 代替原来的 “v“
- neutral_tone_with_five:声调使用数字表示的相关拼音风格下的结果是否使用 5 标识轻声
lazy_pinyin()
将汉字转换为拼音,返回不包含多音字结果的拼音列表
def lazy_pinyin(hans, style=Style.NORMAL, errors='default', strict=True, v_to_u=False, neutral_tone_with_five=False)
参数说明:
- errors:指定如何处理没有拼音的字符
slug()
将汉字转换为拼音,然后生成 slug 字符串。
def slug(hans, style=Style.NORMAL, heteronym=False, separator='-', errors='default', strict=True)
参数说明:
- separator:两个拼音间的分隔符/连接符
示例代码:
from pypinyin import pinyin, Style print(pinyin('重庆')) # [['chóng'], ['qìng']] print(pinyin('重庆', style=Style.NORMAL)) # [['chong'], ['qing']]
项目地址:https://github.com/mozillazg/python-pinyin
xpinyin
该Python不支持多音字,不推荐使用。示例:
from xpinyin import Pinyin p = Pinyin() print(p.get_pinyin("重庆")) # zhong-qing
项目地址:https://github.com/lxneng/xpinyin
ChineseTone
该包主要功能:
- 支持多音字
- 判断是否为多音字
- 获取拼音的声母部分
- 获取某汉字的所有拼音