Ubah karakter Cina menjadi Pinyin. Ini dapat digunakan untuk notasi fonetik karakter Cina, pengurutan, dan pengambilan (terjemahan bahasa Rusia).
Versi awal kode mengacu pada implementasi hotoo/pinyin.
Isi
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' ]
Hal yang perlu diperhatikan :
neutral_tone_with_five=True
untuk menggunakan 5
guna mengidentifikasi nada lembut).v
untuk mewakili ü
(dapat diaktifkan dengan parameter v_to_u=True
untuk menggunakan ü
sebagai ganti v
).嗯
tidak en
seperti yang dipikirkan kebanyakan orang, dan ada pinyin yang tidak memiliki inisial maupun akhir. Silakan lihat penjelasan di FAQ di bawah untuk lebih jelasnya.Alat baris perintah:
$ pypinyin 音乐
yīn yuè
$ python -m pypinyin.tools.toneconvert to-tone ' zhong4 xin1 '
zhòng xīn
Untuk dokumentasi terperinci, silakan kunjungi: https://pypinyin.readthedocs.io/.
Untuk pertanyaan tentang pengembangan kode proyek, Anda dapat melihat dokumentasi pengembangan.
Akurasi pinyin dapat ditingkatkan dengan metode berikut:
>> 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' ]]
Karena menurut "Rencana Pinyin Cina", y, w, ü (yu) bukanlah konsonan awal.
Dalam gaya konsonan awal (INITIALS), karakter Cina seperti "Rain", "I", dan "Yuan" mengembalikan string kosong, karena menurut "Skema Pinyin Cina", y, w, ü (yu) bukan inisial konsonan, dan di beberapa akhir tertentu Ketika tidak ada konsonan awal, y atau w ditambahkan, dan ü juga memiliki aturan spesifiknya sendiri. ——@hotoo
Jika menurut Anda hal ini menimbulkan masalah, harap berhati-hati dengan beberapa karakter China tanpa konsonan awal (seperti "ah", "lapar", "tekan", "ang", dll.). Saat ini, yang mungkin Anda perlukan adalah gaya huruf pertama (FIRST_LETTER) . ——@hotoo
Referensi: hotoo/pinyin#57, #22, #27, #44
Jika Anda merasa bahwa perilaku ini bukan yang Anda inginkan, dan Anda hanya ingin memperlakukan y sebagai konsonan awal, Anda dapat menentukan strict=False
, yang mungkin memenuhi harapan Anda:
> >> from pypinyin import Style , pinyin
> >> pinyin ( '下雨天' , style = Style . INITIALS )
[[ 'x' ], [ '' ], [ 't' ]]
> >> pinyin ( '下雨天' , style = Style . INITIALS , strict = False )
[[ 'x' ], [ 'y' ], [ 't' ]]
Lihat efek parameter ketat untuk detailnya.
Ya, dalam mode strict=True
, hanya ada sedikit pinyin yang tidak memiliki konsonan awal maupun akhir. Misalnya, pinyin berikut (dari karakter Cina嗯
,呒
,呣
,唔
):
ń ńg ňg ǹg ň ǹ m̄ ḿ m̀
Penting untuk diperhatikan bahwa semua pinyin untuk嗯
tidak memiliki konsonan awal maupun akhir, dan pinyin default untuk呣
tidak memiliki konsonan awal maupun akhir. Lihat #109 #259 #284 untuk detailnya.
Anda dapat menggunakan fungsi tambahan yang disediakan oleh modul pypinyin.contrib.tone_convert
untuk mengonversi pinyin standar guna mendapatkan gaya pinyin yang berbeda. Misalnya, ubah zhōng
menjadi zhong
, atau dapatkan data konsonan awal atau konsonan akhir dalam 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'
Untuk fungsi tambahan lainnya untuk konversi pinyin, silakan lihat dokumentasi modul pypinyin.contrib.tone_convert
.
Jika Anda tidak terlalu peduli dengan keakuratan Pinyin, Anda dapat menghemat memori dengan mengatur variabel lingkungan PYPINYIN_NO_PHRASES
dan PYPINYIN_NO_DICT_COPY
. Lihat dokumentasi untuk detailnya
Untuk detail FAQ selengkapnya, lihat bagian FAQ di dokumentasi.