import pypinyin
from pypinyin import pinyin, lazy_pinyin
s1=print(lazy_pinyin('需要转换成拼音的汉字'))
将这个文本循环读入并把汉字转换成拼音,整体如下:
import pypinyin
from pypinyin import pinyin, lazy_pinyin
for line in open('文件路径/j.txt','r'):
#print(line,end='')
s1=print(lazy_pinyin(line))
汉字转拼音部分结果如下:
['shu', 'xue', 'shi', 'li', 'xing', 'si', 'wei', 'he', 'xiang', 'xiang', 'de', 'jie', 'he', '\n']
['ta', 'de', 'fa', 'zhan', 'jian', 'li', 'yu', 'she', 'hui', 'de', 'xu', 'qiu', '\n']
['suo', 'yi', 'jiu', 'you', 'le', 'shu', 'xue', 'mei', '\n']
['shu', 'xue', 'li', 'lai', 'yi', 'qi', 'gao', 'du', 'de', 'chou', 'xiang', 'xing', '\n']
['yan', 'mi', 'de', 'luo', 'ji', 'xing', 'bei', 'ren', 'men', 'suo', 'shang', 'shi', '\n']
['que', 'hen', 'shao', 'you', 'ren', 'ba', 'ta', 'yu', 'mei', 'xue', 'lian', 'xi', 'qi', 'lai', '\n']
['shu', 'xue', 'qi', 'yuan', 'yu', 'jian', 'zhu', '\n']
['zheng', 'shi', 'dui', 'mei', 'de', 'zhui', 'qiu', '\n']
['cai', 'chan', 'sheng', 'le', 'shu', 'xue', '\n']
['si', 'hu', 'shu', 'xue', 'yu', 'mei', 'xue', 'hao', 'bu', 'xiang', 'gan', '\n']
注意:汉字-拼音的结果不能直接用于后面的输入,要对文档进行处理,因为拼音-汉字不能带有任何符号;
拼音-汉字整体代码:
def pinyin_2_hanzi(pinyinList):
from Pinyin2Hanzi import DefaultDagParams
from Pinyin2Hanzi import dag
dagParams = DefaultDagParams()
result = dag(dagParams, pinyinList, path_num=1, log=True)#10代表侯选值个数
for item in result:
socre = item.score
res = item.path # 转换结果
print(socre, res)
if __name__ == '__main__':
for line in open('F:/pycharm/123.txt', 'r').readlines():
line = line.strip('[')
line = line.rstrip()
line = line.strip(']')
line = line.replace("'", "")
entries = line.split(',')
# print((entries))
# print(type(entries))
entries = entries[:-1]
# print(entries)
pin = []
for i in range(len(entries)):
entries[i] = entries[i].replace(' ', '')
pin.append(entries[i])
#print(pin)
pinyin_2_hanzi((entries))
运行结果如下:
-9.243870001521096 ['他的', '发展', '建立', '于', '社会', '的', '需求']
-9.165461434309448 ['严密', '德罗', '机型', '被人', '门锁', '上市']
-6.395132558492 ['正式', '对美', '的', '追求']
-6.906445088429984 ['早在', '二千', '年', '多钱']
-9.000436559912332 ['缘何', '球体', '的', '堆成', '没']
-8.20037760463548 ['成', '禹州市', '倏地', '和谐', '体系']
-3.0215445916942083 ['那里', '鼬鼠']
-5.024990405731213 ['那里', '就有', '没']
-4.06192157445338 ['从', '内容', '来说']
-4.979297840727831 ['就行', '是', '而论']
-9.340483198693283 ['把', '内容', '核型', '是', '结合起来', '考察']
-3.0403007824996084 ['一个', '适合', '血性']
-3.006488257442949 ['一个', '时期', '一行']
-1.6034333100416083 ['综上所述']
-2.5800392500842815 ['他还', '认为']
-12.988008097719739 ['但他', '必然', '遵循', '一个', '简单', '的', '公', '适合', '订立']
-3.5346450239060805 ['如果', '理论', '不支持']
-5.797830388083831 ['随着', '历史', '德劲', '不']
-10.261542671418438 ['正如', '伟大', '的', '希尔伯特', '曾说', '国']
1、输入的句子总数为53个,最后能被转出来的(不计正确与否)仅有19个,对简单句能够较为准确的转换出来,对于长句的错误率高;
2、没有被转换的句子,经过检测可能的是句子中某个或某些拼音转不出来,导致这一句话没被输出;
例如:‘数学’这个词
if __name__ == '__main__':
lists2 = ['shu','xue']
pinyin_2_hanzi(lists2)
结果没有输出:F:\anaconda3\python.exe F:/pycharm/test/1.py
Process finished with exit code 0
输入‘shuz’‘zi’的结果:-1.357480732975818 [‘数字’]
经过测试‘xue’转不了汉字,所以其它句子没被转出很可能是某个字不行的原因。