【Python】xpinyin/Pinyin+中文与拼音相互转换(含音调/声调)/生成中文谐音
from xpinyin import Pinyin if __name__ == '__main__': ''' 1 获取汉字对应的拼音(含声调) [tone_marks参数控制 marks-符号;numbers-数字] ''' # 1.1 声调为符号 print(Pinyin().get_pinyin("中华人民共和国,今天成立了,和蔼!", tone_marks='marks')) # zhōng-huá-rén-mín-gòng-hé-guó-,-jīn-tiān-chéng-lì-le-,-hé-ǎi-! # 1.2 声调为数字(1:一声,2:二声,3:三声,4:四声,5:轻声) print(Pinyin().get_pinyin("中华人民共和国,今天成立了,和蔼!", tone_marks='numbers')) # zhong1-hua2-ren2-min2-gong4-he2-guo2-,-jin1-tian1-cheng2-li4-le5-,-he2-ai3-! ''' 2 设置分隔符 [splitter参数控制 splitter默认为'-'] ''' print(Pinyin().get_pinyin("中华人民共和国,今天成立了,和蔼!", splitter='=')) # zhong=hua=ren=min=gong=he=guo=,=jin=tian=cheng=li=le=,=he=ai=!
#!/usr/bin/env python # -*- coding: utf-8 -*- """ @Time :2022/8/2 20:38 @Author : @File : @Version :1.0 @Function: """ from xpinyin import Pinyin from Pinyin2Hanzi import DefaultDagParams from Pinyin2Hanzi import dag def hanzi_to_pinyin(one_str): """ 将汉字转化为对应的拼音 :param one_str: :return: """ translator = Pinyin() one_kw_pinyin = translator.get_pinyin(one_str, '-').strip() listS = one_kw_pinyin.split('-') print(f'{one_str} 的拼音是 {listS}') return listS def pinyin_to_hanzi(pinyin, top=5): """ 拼音转化为汉字 汉字存在多意性,所以这里没有一一对应的关系,只能选出概率最高的top :param pinyin: :param top: :return: """ translator = DefaultDagParams() result = dag(translator, pinyin, path_num=top, log=True) count = 1 for item in result: score = item.score # 得分 res = item.path # 转换结果 print(f'[参考{str(count).zfill(len(str(top)))}]', score, ''.join([one for one in res])) count += 1 if len(result) > 0: return ''.join([one for one in result[0].path]) else: return '' def start(content, top): """ 根据指定文本 生成对应的谐音文本 :param content: 指定文本(只能是纯中文 不能包含英文、符号、数字等字符) :param top: 生成的谐音文本数 :return: """ one_pinyin = hanzi_to_pinyin(content) result = pinyin_to_hanzi(one_pinyin, top=top) print(f'\n{content}【AI解析结果为】{result}') if __name__ == '__main__': text = u"重话人民宫贺果" start(text, 50) # 重话人民宫贺果【AI解析结果为】中华人民共和国
如果忍耐算是坚强 我选择抵抗 如果妥协算是努力 我选择争取