한자를 병음으로 변환합니다. 한자 발음 표기, 정렬, 검색(러시아어 번역)에 사용할 수 있습니다.
코드의 초기 버전은 hotoo/pinyin의 구현을 나타냅니다.
내용물
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' ]
참고 사항 :
5
사용하여 부드러운 음을 식별하려면 neutral_tone_with_five=True
매개변수로 켤 수 있음).v
사용하여 ü
나타냅니다( v
대신 ü
사용하도록 매개변수 v_to_u=True
로 설정할 수 있음).嗯
의 병음은 대부분의 사람들이 생각하는 것처럼 en
아니며, 이니셜과 어미가 없는 병음도 있습니다. 자세한 내용은 아래 FAQ의 설명을 참조하세요.명령줄 도구:
$ pypinyin 音乐
yīn yuè
$ python -m pypinyin.tools.toneconvert to-tone ' zhong4 xin1 '
zhòng xīn
자세한 문서를 보려면 https://pypinyin.readthedocs.io/를 방문하세요.
프로젝트 코드 개발에 대한 질문이 있는 경우 개발 문서를 확인하세요.
병음 정확도는 다음 방법으로 향상될 수 있습니다.
>> 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' ]]
"중국어 병음 계획"에 따르면 y, w, ü(yu)는 첫 자음이 아니기 때문입니다.
초성 자음 스타일(INITIALS)에서 "Rain", "I", "Yuan"과 같은 중국어 문자는 "중국어 병음 체계"에 따라 y, w, ü(yu)가 초성이 아니기 때문에 빈 문자열을 반환합니다. 자음, 그리고 일부 특정 어미에서는 첫 자음이 없을 때 y 또는 w가 추가되고 ü에도 고유한 특정 규칙이 있습니다. ——@hotoo
이로 인해 문제가 발생한다고 생각되면 초성이 없는 일부 중국어 문자(예: "아", "배고프다", "누르다", "앙" 등)에 주의하시기 바랍니다. 이때 필요할 수 있는 것은 첫 글자 스타일(FIRST_LETTER) 입니다 . ——@hotoo
참조: hotoo/pinyin#57, #22, #27, #44
이 동작이 원하는 것이 아니라고 생각하고 단지 y를 첫 자음으로 처리하려는 경우 strict=False
지정하면 기대에 부응할 수 있습니다.
> >> from pypinyin import Style , pinyin
> >> pinyin ( '下雨天' , style = Style . INITIALS )
[[ 'x' ], [ '' ], [ 't' ]]
> >> pinyin ( '下雨天' , style = Style . INITIALS , strict = False )
[[ 'x' ], [ 'y' ], [ 't' ]]
자세한 내용은 엄격한 매개변수의 효과를 참조하세요.
네, strict=True
모드에서는 초성도 종성도 없는 병음이 거의 없습니다. 예를 들어, 다음 병음(한자嗯
,呒
,呣
,唔
에서 유래):
ń ńg ňg Ϲg ň Ϲ m̄ ḿ m̀
嗯
에 대한 모든 병음에는 초성과 종성이 없으며, 기본 병음인呣
에는 초성과 종성이 없다는 점에 유의하는 것이 특히 중요합니다. 자세한 내용은 #109 #259 #284를 참조하세요.
pypinyin.contrib.tone_convert
모듈에서 제공하는 보조 기능을 사용하여 표준 병음을 변환하여 다양한 스타일의 병음을 얻을 수 있습니다. 예를 들어, zhōng
zhong
으로 변환하거나 병음의 첫 자음 또는 마지막 자음 데이터를 얻습니다.
> >> 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'
병음 변환을 위한 추가 보조 기능을 보려면 pypinyin.contrib.tone_convert
모듈의 문서를 참조하세요.
병음의 정확성에 특별히 신경 쓰지 않는다면 환경 변수 PYPINYIN_NO_PHRASES
및 PYPINYIN_NO_DICT_COPY
설정하여 메모리를 절약할 수 있습니다. 자세한 내용은 설명서를 참조하세요.
자세한 FAQ 세부정보는 설명서의 FAQ 섹션을 참조하세요.