تحويل الحروف الصينية إلى بينيين. يمكن استخدامه للتدوين الصوتي للأحرف الصينية وفرزها واسترجاعها (الترجمة الروسية).
يشير الإصدار الأولي من الكود إلى تنفيذ 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' ]
أشياء يجب ملاحظتها :
neutral_tone_with_five=True
to use 5
لتحديد النغمة الناعمة).v
لتمثيل ü
(يمكن تشغيلها بواسطة المعلمة v_to_u=True
to use ü
بدلاً من v
).嗯
ليس en
كما يعتقد معظم الناس، وهناك نظام Pinyin لا يحتوي على الأحرف الأولى أو النهائية، يرجى الاطلاع على الشرح في الأسئلة الشائعة أدناه للحصول على التفاصيل.أدوات سطر الأوامر:
$ pypinyin 音乐
yīn yuè
$ python -m pypinyin.tools.toneconvert to-tone ' zhong4 xin1 '
zhòng xīn
للحصول على وثائق مفصلة، يرجى زيارة: https://pypinyin.readthedocs.io/.
إذا كانت لديك أسئلة حول تطوير كود المشروع، يمكنك مراجعة وثائق التطوير.
يمكن تحسين دقة نظام Pinyin بالطرق التالية:
>> 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) ليست حروفًا ساكنة أولية.
في نمط الحروف الساكنة الأولية (الأحرف الأولى)، تُرجع الأحرف الصينية مثل "Rain" و"I" و"Yuan" سلاسل فارغة، لأنه وفقًا لـ "مخطط Pinyin الصيني"، فإن y وw وü (yu) ليست حروفًا أولية الحروف الساكنة، وفي بعض النهايات المحددة عندما لا يكون هناك حرف ساكن في البداية، يتم إضافة y أو w، ولها أيضًا قواعدها الخاصة. ——@hotoo
إذا كنت تعتقد أن هذا يسبب لك مشكلة، فيرجى أيضًا توخي الحذر مع بعض الأحرف الصينية التي لا تحتوي على الحروف الساكنة الأولية (مثل "ah" و"hungry" و"press" و"ang" وما إلى ذلك). في هذا الوقت، ما قد تحتاجه هو نمط الحرف الأول (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
لتحويل نظام pinyin القياسي للحصول على أنماط مختلفة من نظام pinyin. على سبيل المثال، قم بتحويل zhōng
إلى zhong
، أو احصل على بيانات الحروف الساكنة الأولية أو النهائية في نظام 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'
لمزيد من الوظائف المساعدة لتحويل بينيين، يرجى الاطلاع على وثائق وحدة pypinyin.contrib.tone_convert
.
إذا كنت لا تهتم بشكل خاص بدقة نظام Pinyin، فيمكنك حفظ الذاكرة عن طريق تعيين متغيرات البيئة PYPINYIN_NO_PHRASES
و PYPINYIN_NO_DICT_COPY
. انظر الوثائق للحصول على التفاصيل
لمزيد من تفاصيل الأسئلة الشائعة، راجع قسم الأسئلة الشائعة في الوثائق.