Python 중국어 오류 정정 의 간단 한 실현
이 글 은 주로 Python 으로 간단 한 중국어 분사 의 동 음 자 오 류 를 고 쳤 다.현재 사례 에 서 는 한 글자 만 틀 릴 수 있 고 자신 이 관심 이 있 으 면 계속 최적화 할 수 있다.구체 적 인 절 차 는 다음 과 같다.
import re,pinyin
from Pinyin2Hanzi import DefaultDagParams
from Pinyin2Hanzi import dag
class corrector():
def __init__(self):
self.re_compile = re.compile(r'[\u4e00-\u9fff]')
self.DAG = DefaultDagParams()
#
def getData(self):
words = []
with open("/Users/wys/Desktop/token.txt") as f:
for line in f.readlines():
word = line.split(" ")[0]
if word and len(word) > 2:
res = self.re_compile.findall(word)
if len(res) == len(word): ##
words.append(word)
return words
# 10 ,
def pinyin_2_hanzi(self, pinyinList):
result = []
words = dag(self.DAG, pinyinList, path_num=10)
for item in words:
res = item.path #
result.append(res[0])
return result
#
def getCandidates(self, phrase):
chars = {}
for c in phrase:
chars[c] = self.pinyin_2_hanzi(pinyin.get(c, format='strip', delimiter=',').split(','))
replaces = []
for c in phrase:
for x in chars[c]:
replaces.append(phrase.replace(c, x))
return set(replaces)
#
def getCorrection(self, words):
result = []
for word in words:
for word in self.getCandidates(word):
if Tree.search(word):
result.append(word)
break
return result
class Node:
def __init__(self):
self.word = False
self.child = {}
class Trie(object):
def __init__(self):
self.root = Node()
def insert(self, words):
for word in words:
cur = self.root
for w in word:
if w not in cur.child:
cur.child[w] = Node()
cur = cur.child[w]
cur.word = True
def search(self, word):
cur = self.root
for w in word:
if w not in cur.child:
return False
cur = cur.child[w]
if cur.word == False:
return False
return True
if __name__ == '__main__':
#
c = corrector()
#
words = c.getData()
#
Tree = Trie()
#
Tree.insert(words)
#
print(c.getCorrection([' ',' ',' ']))
결실인쇄 결과:
['전당 거리','전당 거리','전당 거리']
모두 바로 잡 는 데 성 공 했 고 어느 정도 효과 가 있 으 며 그 후에 도 계속 최적화 할 것 임 을 알 수 있다.
파 이 썬 의 중국어 오류 정정 에 관 한 간단 한 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 의 중국어 오류 정정 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.