用字形错误来造错词;;把错词和正词进行比较,以“错词 正词 错字”的形式输出(假设“字形”这个词语是正确的词语,”宇形”就是错词。那么输出形式为“宇形 字形 宇”)。

需要的文本再文件的“错词demo.rar中”

#
coding = utf-8 dict1 = {} #字典来存储每个字的形近字 with open('词条.txt','r',encoding='utf-8') as f: zidian_1 = [] #列表来存储每行的词 for line in f.readlines(): line = line.strip() zidian_1.append(line) with open('过滤后的相似字列表.txt','r',encoding='utf-8') as f: for line in f.readlines(): if len(line.strip().split(' '))>1: list1 = list(line.strip().split(' ')[1]) list1.append(line[0]) dict1[line[0]] = list1 #字典来存储每个字的形近字 print(dict1) output = open('output.txt','a+',encoding='utf-8') for line in zidian_1: #遍历每个词 try: #长度为2的词 if len(line) == 2: if line[0] in dict1.keys(): #第一个字有形近字 for i in dict1[line[0]]: if line[1] in dict1.keys(): #第二个字有形近字 for j in dict1[line[1]]: ci = i+j if ci not in zidian_1: if ci[0] == line[0]: output.writelines(ci+' '+line+' '+ci[1]+'\n') #错别字是第二个 else: if ci[1] == line[1]: output.writelines(ci+' '+line+' '+ci[0]+'\n') #错别字是第一个 else: output.writelines(ci + ' ' + line + ' ' + ci[0] + ' ' + ci[1]+'\n') #所有都是错别字 else: #第二个字没有形近字 ci = i+line[1] if ci not in zidian_1: output.writelines(ci+' '+line+' '+ci[0]+'\n') #错别字肯定就是第一个了 else: #第一个字没有形近字 if line[1] in dict1.keys(): #第二个字有形近字 for j in dict1[line[1]]: ci = line[0] + j if ci not in zidian_1: output.writelines(ci+' '+line+' '+ci[1]+'\n') #错别字肯定就是第二个 else: #第二个字没有形近字 pass #长度为3的词 if len(line) == 3: if line[0] in dict1.keys(): #第一个字有形近字 for i in dict1[line[0]]: if line[1] in dict1.keys(): #第二个字有形近字 for j in dict1[line[1]]: if line[2] in dict1.keys(): #第三个字有形近字 for k in dict1[line[2]]: ci = i+j+k if ci not in zidian_1: if ci[0] == line[0]: if ci[1] == line [1]: output.writelines(ci + ' ' + line + ' ' + ci[2] + '\n') #错别字是第三个 else: if ci[2] == line [2]: output.writelines(ci + ' ' + line + ' ' + ci[2] + '\n') # 错别字是第二个 else: output.writelines(ci + ' ' + line + ' ' + ci[1] + ' ' + ci[2] + '\n') #错别字是第二个第三个 else: if ci[1] == line [1]: if ci [2] == line[2]: output.writelines(ci + ' ' + line + ' ' + ci[0] + '\n') #错别字是第一个 else: output.writelines(ci + ' ' + line + ' ' + ci[0] + ' ' + ci[2] + '\n') #错别字是第一个第三个 else: if ci[2] == line[2]: output.writelines(ci + ' ' + line + ' ' + ci[0] + ' ' + ci[1] + '\n') #错别字是第一个和第二个 else: output.writelines(ci + ' ' + line + ' ' + ci[0] + ' ' + ci[1] + ' ' + ci[2] +'\n') #都是错别字 else: # 第三个字没有形近字 ci = i+j+line[2] if ci not in zidian_1: if ci[0] == line[0]: output.writelines(ci + ' ' + line + ' ' + ci[1] + '\n') #错别字是第二个 else: if ci[1] == line[1]: output.writelines(ci + ' ' + line + ' ' + ci[0] + '\n') # 错别字是第一个 else: output.writelines(ci+' '+line+' '+ci[0]+' '+ci[1]+'\n') #错别字肯定是第一个和第二个 else: #第二个字没有形近字 if line[2] in dict1.keys(): #第三个字有形近字 for k in dict1[line[2]]: ci = i+line[1]+k if ci not in zidian_1: if ci[0] == line[0]: output.writelines(ci + ' ' + line + ' ' + ci[2] + '\n') #错别字是 第三个 else: if ci[2] == line[2]: output.writelines(ci + ' ' + line + ' ' + ci[0] + '\n') # 错别字是 第一个 else: output.writelines(ci+' '+line+' '+ci[0]+' '+ci[2]+'\n') #错别字是肯定是第一个和第三个 else: #第三个字没有形近字 ci = i + line[1] + line[2] if ci not in zidian_1: output.writelines(ci+' '+line+' '+ci[0]+'\n') #错别字肯定是第一个 else: #第一个字没有形近字 for i in dict1[line[0]]: if line[1] in dict1.keys(): # 第二个字有形近字 for j in dict1[line[1]]: if line[2] in dict1.keys(): # 第三个字有形近字 for k in dict1[line[2]]: ci = line[0] + j + k if ci not in zidian_1: if ci[1] == line[1]: output.writelines(ci + ' ' + line + ' ' + ci[2] + '\n') #错别字肯定是第三个 else: if ci[2] == line[2]: output.writelines(ci + ' ' + line + ' ' + ci[1] + '\n') # 错别字肯定是第二个 else: output.writelines(ci+' '+line+' '+ci[1]+' '+ci[2]+'\n') #错别字是第二个和第三个 else: # 第三个字没有形近字 ci = line[0] + j + line[2] if ci not in zidian_1: output.writelines(ci+' '+line+' '+ci[1]+'\n') #错别字是第二个 else: # 第二个字没有形近字 if line[2] in dict1.keys(): # 第三个字有形近字 for k in dict1[line[1]]: ci = line[0] + line[1] + k if ci not in zidian_1: output.writelines(ci+' '+line+' '+ci[2]+'\n') #错别字是第三个 else: # 第三个字没有形近字 pass except Exception: pass

猜你喜欢

转载自www.cnblogs.com/dhName/p/10487867.html