Python汉字转拼音-拼音转汉字的效率测评

1、汉字转拼音

(1) 汉字转拼音使用的是pypinyin包,将包导入到python中,调用即可使用

import pypinyin
from pypinyin import pinyin, lazy_pinyin
s1=print(lazy_pinyin('需要转换成拼音的汉字'))

(2)读取一个以处理好的部分文本(一段话或者一篇文章以逗号隔开)文档如下:

Python汉字转拼音-拼音转汉字的效率测评_第1张图片

将这个文本循环读入并把汉字转换成拼音,整体如下:

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']

(3)将上述结果写到文档,并利用pinyin_2_hanzi包,将拼音转换成汉字。

注意:汉字-拼音的结果不能直接用于后面的输入,要对文档进行处理,因为拼音-汉字不能带有任何符号;
拼音-汉字整体代码:

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 ['正如', '伟大', '的', '希尔伯特', '曾说', '国']

(4)结果评价

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’转不了汉字,所以其它句子没被转出很可能是某个字不行的原因。

你可能感兴趣的:(拼音转汉字效率)