Convertissez les caractères chinois en Pinyin. Il peut être utilisé pour la notation phonétique, le tri et la récupération des caractères chinois (traduction en russe).
La version initiale du code fait référence à l'implémentation de hotoo/pinyin.
Contenu
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' ]
Choses à noter :
neutral_tone_with_five=True
pour utiliser 5
pour identifier le ton doux).v
pour représenter ü
(peut être activé par le paramètre v_to_u=True
pour utiliser ü
au lieu de v
).嗯
n'est pas en
comme la plupart des gens le pensent, et il existe un pinyin qui n'a ni initiales ni finales. Veuillez consulter l'explication dans la FAQ ci-dessous pour plus de détails.Outils de ligne de commande :
$ pypinyin 音乐
yīn yuè
$ python -m pypinyin.tools.toneconvert to-tone ' zhong4 xin1 '
zhòng xīn
Pour une documentation détaillée, veuillez visiter : https://pypinyin.readthedocs.io/.
Pour toute question sur le développement du code du projet, vous pouvez consulter la documentation de développement.
La précision du pinyin peut être améliorée par les méthodes suivantes :
>> 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' ]]
Car selon le « Plan Pinyin chinois », y, w, ü (yu) ne sont pas des consonnes initiales.
Dans le style de consonne initiale (INITIALS), les caractères chinois tels que "Rain", "I" et "Yuan" renvoient des chaînes vides, car selon le "Schéma du Pinyin chinois", y, w, ü (yu) ne sont pas des initiales. consonnes, et dans certaines finales spécifiques Lorsqu'il n'y a pas de consonne initiale, y ou w est ajouté, et ü a également ses propres règles spécifiques. ——@hotoo
Si vous pensez que cela vous cause des problèmes, soyez également prudent avec certains caractères chinois sans consonne initiale (comme « ah », « faim », « presse », « ang », etc.). À l'heure actuelle, vous aurez peut-être besoin du style de première lettre (FIRST_LETTER) . ——@hotoo
Référence : hotoo/pinyin#57, #22, #27, #44
Si vous pensez que ce comportement n'est pas ce que vous souhaitez et que vous souhaitez simplement traiter y comme la consonne initiale, vous pouvez spécifier strict=False
, ce qui peut répondre à vos attentes :
> >> from pypinyin import Style , pinyin
> >> pinyin ( '下雨天' , style = Style . INITIALS )
[[ 'x' ], [ '' ], [ 't' ]]
> >> pinyin ( '下雨天' , style = Style . INITIALS , strict = False )
[[ 'x' ], [ 'y' ], [ 't' ]]
Voir les effets du paramètre strict pour plus de détails.
Oui, en mode strict=True
, il y a très peu de pinyin qui n'ont ni consonnes initiales ni finales. Par exemple, le pinyin suivant (des caractères chinois嗯
,呒
,呣
,唔
) :
ń ńg ňg ǹg ň ǹ m̄ ḿ m̀
Il est particulièrement important de noter que tout pinyin pour嗯
n'a ni consonnes initiales ni finales, et que le pinyin par défaut pour呣
n'a ni consonnes initiales ni finales. Voir #109 #259 #284 pour plus de détails.
Vous pouvez utiliser la fonction auxiliaire fournie par le module pypinyin.contrib.tone_convert
pour convertir le pinyin standard afin d'obtenir différents styles de pinyin. Par exemple, convertissez zhōng
en zhong
ou obtenez des données de consonne initiale ou finale 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'
Pour plus de fonctions auxiliaires pour la conversion pinyin, veuillez consulter la documentation du module pypinyin.contrib.tone_convert
.
Si vous ne vous souciez pas particulièrement de la précision du pinyin, vous pouvez économiser de la mémoire en définissant les variables d'environnement PYPINYIN_NO_PHRASES
et PYPINYIN_NO_DICT_COPY
. Voir la documentation pour plus de détails
Pour plus de détails sur la FAQ, consultez la section FAQ de la documentation.