器→工具, 开源项目

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

钱魏Way · · 675 次浏览
!文章内容如有错误或排版问题,请提交反馈,非常感谢!

在自然语言的处理中语义分析中,除了需要拆解字形外,字音有时也能表示含义。另外,在搭建搜索引擎时在搜索词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 #:普通风格,不带声调。如:中国->“zhongguo“
    • TONE=1 #:标准声调风格,拼音声调在韵母第一个字母上(默认风格)。如:中国->“zhōngguó“
    • TONE2=2 #:声调风格2,即拼音声调在各个韵母之后,用数字[1-4]进行表示。如:中国->“zho1ngguo2“
    • TONE3=8 #:声调风格3,即拼音声调在各个拼音之后,用数字[1-4]进行表示。如:中国->“zhong1guo2“
    • INITIALS=3 #:声母风格,只返回各个拼音的声母部分(注:有的拼音没有声母,详见`#27`_)。如:中国->“zhg“
    • FIRST_LETTER=4 #:首字母风格,只返回拼音的首字母部分。如:中国->“zg“
    • FINALS=5 #:韵母风格,只返回各个拼音的韵母部分,不带声调。如:中国->“onguo“
    • FINALS_TONE=6 #:标准韵母风格,带声调,声调在韵母第一个字母上。如:中国->“ōnguó“
    • FINALS_TONE2=7 #:韵母风格2,带声调,声调在各个韵母之后,用数字[1-4]进行表示。如:中国->“o1nguo2“
    • FINALS_TONE3=9 #:韵母风格3,带声调,声调在各个拼音之后,用数字[1-4]进行表示。如:中国->“ong1uo2“
    • 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

发表回复

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