最近在做错别字识别的项目,数据集需要自己构造,于是写了一个小脚本。
import random
from pypinyin import lazy_pinyin
from Pinyin2Hanzi import DefaultDagParams
from Pinyin2Hanzi import dag
text_list = ['每到重要历史关头,我们党都会总结党的历史,从中吸取历史智慧,掌握历史主动', '四个历史时期各自承担前后相继的历史任务:救国、立国、富国、强国']
for text in text_list:
text_list = []
# 去掉文本中的特殊符号,因为特殊符号没有拼音
for num, char in enumerate(text):
if (char >= u'\u4e00') and (char <= u'\u9fa5'):
text_list.append(num)
# 将每个字的序号保存进行随机抽取
random_char = random.choice(text_list)
# 汉字转拼音
char_py = lazy_pinyin(text[random_char])
# 将拼音转换为字
dagParams = DefaultDagParams()
result = dag(dagParams, char_py, path_num=4, log=True)
result_list = []
for item in result:
if item.path[0] != text[random_char]:
result_list.append(item.path[0])
results = ''.join(result_list)
# 将五个相同拼音的随机取一个
error_char = random.choice(results)
print('{0}------->{1}'.format(text[random_char],error_char))
cal_text = text
print(cal_text)
cal_text_list = list(cal_text)
cal_text_list[random_char] = error_char
cal_text_results = ''.join(cal_text_list)
print(cal_text_results)
输出:
关------->官
每到重要历史关头,我们党都会总结党的历史,从中吸取历史智慧,掌握历史主动
每到重要历史官头,我们党都会总结党的历史,从中吸取历史智慧,掌握历史主动
自------->资
四个历史时期各自承担前后相继的历史任务:救国、立国、富国、强国
四个历史时期各资承担前后相继的历史任务:救国、立国、富国、强国