用字形錯誤來造錯詞;;把錯詞和正詞進行比較,以“錯詞 正詞 錯字”的形式輸出(假設“字形”這個詞語是正確的詞語,”宇形”就是錯詞。那麽輸出形式為“宇形 字形 宇”)。
阿新 • • 發佈:2019-03-07
append enc 存儲 lis 進行 readlines bsp nbsp 長度
需要的文本再文件的“錯詞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(): #第二個字有形近字 forj 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
用字形錯誤來造錯詞;;把錯詞和正詞進行比較,以“錯詞 正詞 錯字”的形式輸出(假設“字形”這個詞語是正確的詞語,”宇形”就是錯詞。那麽輸出形式為“宇形 字形 宇”)。