器→工具, 开源项目

自然语言分析之汉字转拼音

钱魏Way · · 454 次浏览

在自然语言的处理中语义分析中,除了需要拆解字形外,字音有时也能表示含义。另外,在搭建搜索引擎时在搜索词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

该包主要功能:

  • 支持多音字
  • 判断是否为多音字
  • 获取拼音的声母部分
  • 获取某汉字的所有拼音

项目地址:https://github.com/letiantian/ChineseTone

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注