Convierte caracteres chinos a Pinyin. Se puede utilizar para la notación, clasificación y recuperación fonética de caracteres chinos (traducción al ruso).
La versión inicial del código se refiere a la implementación de hotoo/pinyin.
Contenido
pip install pypinyin
> >> from pypinyin import pinyin , lazy_pinyin , Style
> >> pinyin ( '中心' ) # or pinyin(['中心']),参数值为列表时表示输入的是已分词后的数据
[[ 'zhōng' ], [ 'xīn' ]]
> >> pinyin ( '中心' , heteronym = True ) # 启用多音字模式
[[ 'zhōng' , 'zhòng' ], [ 'xīn' ]]
> >> pinyin ( '中心' , style = Style . FIRST_LETTER ) # 设置拼音风格
[[ 'z' ], [ 'x' ]]
> >> pinyin ( '中心' , style = Style . TONE2 , heteronym = True )
[[ 'zho1ng' , 'zho4ng' ], [ 'xi1n' ]]
> >> pinyin ( '中心' , style = Style . TONE3 , heteronym = True )
[[ 'zhong1' , 'zhong4' ], [ 'xin1' ]]
> >> pinyin ( '中心' , style = Style . BOPOMOFO ) # 注音风格
[[ 'ㄓㄨㄥ' ], [ 'ㄒㄧㄣ' ]]
> >> lazy_pinyin ( '威妥玛拼音' , style = Style . WADEGILES )
[ 'wei' , "t'o" , 'ma' , "p'in" , 'yin' ]
> >> lazy_pinyin ( '中心' ) # 不考虑多音字的情况
[ 'zhong' , 'xin' ]
> >> lazy_pinyin ( '战略' , v_to_u = True ) # 不使用 v 表示 ü
[ 'zhan' , 'lüe' ]
# 使用 5 标识轻声
> >> lazy_pinyin ( '衣裳' , style = Style . TONE3 , neutral_tone_with_five = True )
[ 'yi1' , 'shang5' ]
# 变调 nǐ hǎo -> ní hǎo
> >> lazy_pinyin ( '你好' , style = Style . TONE2 , tone_sandhi = True )
[ 'ni2' , 'ha3o' ]
Cosas a tener en cuenta :
neutral_tone_with_five=True
para usar 5
para identificar el tono suave).v
para representar ü
(se puede activar con el parámetro v_to_u=True
para usar ü
en lugar de v
).嗯
no es en
como la mayoría de la gente piensa, y hay un pinyin que no tiene iniciales ni finales. Consulte la explicación en las preguntas frecuentes a continuación para obtener más detalles.Herramientas de línea de comando:
$ pypinyin 音乐
yīn yuè
$ python -m pypinyin.tools.toneconvert to-tone ' zhong4 xin1 '
zhòng xīn
Para obtener documentación detallada, visite: https://pypinyin.readthedocs.io/.
Si tiene preguntas sobre el desarrollo del código del proyecto, puede consultar la documentación de desarrollo.
La precisión de Pinyin se puede mejorar mediante los siguientes métodos:
>> from pypinyin import load_phrases_dict , load_single_dict
>> load_phrases_dict ({ '桔子' : [[ 'jú' ], [ 'zǐ' ]]}) # 增加 "桔子" 词组
>> load_single_dict ({ ord ( '还' ): 'hái,huán' }) # 调整 "还" 字的拼音顺序或覆盖默认拼音
# 使用 phrase-pinyin-data 项目中 cc_cedict.txt 文件中的拼音数据优化结果
> >> from pypinyin_dict . phrase_pinyin_data import cc_cedict
> >> cc_cedict . load ()
# 使用 pinyin-data 项目中 kXHC1983.txt 文件中的拼音数据优化结果
> >> from pypinyin_dict . pinyin_data import kxhc1983
> >> kxhc1983 . load ()
> >> # 使用其他分词模块分词,比如 jieba 之类,
>> > #或者基于 phrases_dict.py 里的词语数据使用其他分词算法分词
>> > words = list ( jieba . cut ( '每股24.67美元的确定性协议' ))
> >> pinyin ( words )
> >> from pypinyin import Style , pinyin
> >> pinyin ( '下雨天' , style = Style . INITIALS )
[[ 'x' ], [ '' ], [ 't' ]]
Porque según el "Plan Pinyin chino", y, w, ü (yu) no son consonantes iniciales.
En el estilo de consonante inicial (INICIALES), los caracteres chinos como "Lluvia", "I" y "Yuan" devuelven cadenas vacías, porque según el "Esquema Pinyin chino", y, w, ü (yu) no son iniciales. consonantes, y en algunas finales específicas Cuando no hay consonante inicial, se agrega y o w, y ü también tiene sus propias reglas específicas. ——@hotoo
Si cree que esto le causa problemas, tenga cuidado también con algunos caracteres chinos sin consonantes iniciales (como "ah", "hungry", "press", "ang", etc.). En este momento, lo que quizás necesites es el estilo de la primera letra (FIRST_LETTER) . ——@hotoo
Referencia: hotoo/pinyin#57, #22, #27, #44
Si cree que este comportamiento no es lo que desea y solo desea tratar y como la consonante inicial, puede especificar strict=False
, que puede cumplir con sus expectativas:
> >> from pypinyin import Style , pinyin
> >> pinyin ( '下雨天' , style = Style . INITIALS )
[[ 'x' ], [ '' ], [ 't' ]]
> >> pinyin ( '下雨天' , style = Style . INITIALS , strict = False )
[[ 'x' ], [ 'y' ], [ 't' ]]
Consulte los efectos del parámetro estricto para obtener más detalles.
Sí, en modo strict=True
, hay muy pocos pinyin que no tengan consonantes iniciales ni finales. Por ejemplo, el siguiente pinyin (de los caracteres chinos嗯
,呒
,呣
,唔
):
ń ńg ňg ǹg ň ǹ m̄ ḿ m̀
Es particularmente importante señalar que todo pinyin para嗯
no tiene consonantes iniciales ni finales, y el pinyin predeterminado para呣
no tiene consonantes iniciales ni finales. Consulte el n.º 109, el 259 y el 284 para obtener más detalles.
Puede utilizar la función auxiliar proporcionada por el módulo pypinyin.contrib.tone_convert
para convertir pinyin estándar y obtener diferentes estilos de pinyin. Por ejemplo, convierta zhōng
a zhong
u obtenga datos de consonante inicial o final en Pinyin:
> >> from pypinyin . contrib . tone_convert import to_normal , to_tone , to_initials , to_finals
> >> to_normal ( 'zhōng' )
'zhong'
> >> to_tone ( 'zhong1' )
'zhōng'
> >> to_initials ( 'zhōng' )
'zh'
> >> to_finals ( 'zhōng' )
'ong'
Para obtener más funciones auxiliares para la conversión de pinyin, consulte la documentación del módulo pypinyin.contrib.tone_convert
.
Si no le importa especialmente la precisión de Pinyin, puede ahorrar memoria configurando las variables de entorno PYPINYIN_NO_PHRASES
y PYPINYIN_NO_DICT_COPY
. Ver documentación para más detalles.
Para obtener más detalles sobre las preguntas frecuentes, consulte la sección Preguntas frecuentes de la documentación.