"부산대학교 한국어 맞춤법 검사기"의 두 판 사이의 차이
둘러보기로 가기
검색하러 가기
(새 문서: == 개요 == 현존하는 최고의 맞춤법 검사기. 카카오에서 맞춤법 API를 공개한 적이 있는데, 이는 결국 부산대학교의 검사기를 리버스엔지니...) |
|||
5번째 줄: | 5번째 줄: | ||
== 파이썬 코드 작성법 == | == 파이썬 코드 작성법 == | ||
− | [https://hleecaster.com/speller-cs-pusan-ac-kr/ 블로그 아무튼 워라벨의 '파이썬으로 부산대학교 한국어 맞춤법 검사기 사용하기']라는 포스팅을 참고하였다. | + | [https://hleecaster.com/speller-cs-pusan-ac-kr/ 블로그 아무튼 워라벨의 '파이썬으로 부산대학교 한국어 맞춤법 검사기 사용하기']라는 포스팅을 참고하였다.<syntaxhighlight lang="python"> |
− | + | def han_spell(text): | |
− | + | # 0. 수정 데이터 담기. | |
+ | cor_num = 0 # 수정한 횟수. | ||
+ | # 1. 텍스트 준비 & 개행문자 처리 | ||
+ | text = text.replace('\n', '\r\n') # 개행문자를 검사기에 맞게 변경. | ||
+ | # 2. 맞춤법 검사 요청 (requests) | ||
+ | response = requests.post('http://164.125.7.61/speller/results', data={'text1': text}) | ||
+ | # 3. 응답에서 필요한 내용 추출 (html 파싱) | ||
+ | data = response.text.split('data = [', 1)[-1].rsplit('];', 1)[0] # 단순 데이터 찾기.. | ||
+ | try: | ||
+ | # 4. 파이썬 딕셔너리 형식으로 변환 | ||
+ | data = json.loads(data) | ||
+ | except: | ||
+ | corrected_text = '없음.' | ||
+ | return cor_num, corrected_text # 에러가 생기면 바로 반환해버린다.(완벽하면 None이 반환됨.) | ||
+ | # 5. 교정 내용 출력 | ||
+ | correction_datas = data['errInfo'] | ||
+ | corrected_text = text # 흐흠, 어째서인지 이렇게 해도 복사가 된다. 편하네. | ||
+ | pointer = 0 # 기본 개념과는 다르지만... 문자열을 삭제하고 나면 이동해야 할 포인터. | ||
+ | # print(correction_datas) | ||
+ | for correction_data in correction_datas: | ||
+ | # 정보 받기. | ||
+ | start = pointer + correction_data['start'] # 원문의 어디에서 시작하는지. | ||
+ | end = pointer + correction_data['end'] # 원문의 어디에서 끝나는지. | ||
+ | target = correction_data['orgStr'] # 문제가 있는 부분. | ||
+ | help = correction_data['help'] # 무엇이 잘못된 것인지. | ||
+ | changed = correction_data['candWord'] # 고쳐진 말. | ||
+ | # 조작. | ||
+ | # print(correction_data['orgStr']) | ||
+ | corrected_text = corrected_text[:start] + changed + corrected_text[end:] # 잘못된 용어 제거 + 교정어 삽입 | ||
+ | erased_len = len(changed) - len(target) | ||
+ | pointer = pointer + erased_len # 지워진 문자 만큼 포인터를 옮겨준다. 다음 문자열 제거를 위해서. | ||
+ | # 문제정보 담기. | ||
+ | cor_num += 1 # 수정횟수 증가. | ||
+ | return cor_num, corrected_text | ||
+ | </syntaxhighlight> | ||
[[분류:텍스트 분석]] | [[분류:텍스트 분석]] |
2022년 11월 18일 (금) 12:50 기준 최신판
1 개요[편집 | 원본 편집]
현존하는 최고의 맞춤법 검사기.
카카오에서 맞춤법 API를 공개한 적이 있는데, 이는 결국 부산대학교의 검사기를 리버스엔지니어링 한 것으로 판명되어 큰 논란이 있었다.(그만큼 이 검사기가 강력하다는 뜻?!)
2 파이썬 코드 작성법[편집 | 원본 편집]
블로그 아무튼 워라벨의 '파이썬으로 부산대학교 한국어 맞춤법 검사기 사용하기'라는 포스팅을 참고하였다.
def han_spell(text):
# 0. 수정 데이터 담기.
cor_num = 0 # 수정한 횟수.
# 1. 텍스트 준비 & 개행문자 처리
text = text.replace('\n', '\r\n') # 개행문자를 검사기에 맞게 변경.
# 2. 맞춤법 검사 요청 (requests)
response = requests.post('http://164.125.7.61/speller/results', data={'text1': text})
# 3. 응답에서 필요한 내용 추출 (html 파싱)
data = response.text.split('data = [', 1)[-1].rsplit('];', 1)[0] # 단순 데이터 찾기..
try:
# 4. 파이썬 딕셔너리 형식으로 변환
data = json.loads(data)
except:
corrected_text = '없음.'
return cor_num, corrected_text # 에러가 생기면 바로 반환해버린다.(완벽하면 None이 반환됨.)
# 5. 교정 내용 출력
correction_datas = data['errInfo']
corrected_text = text # 흐흠, 어째서인지 이렇게 해도 복사가 된다. 편하네.
pointer = 0 # 기본 개념과는 다르지만... 문자열을 삭제하고 나면 이동해야 할 포인터.
# print(correction_datas)
for correction_data in correction_datas:
# 정보 받기.
start = pointer + correction_data['start'] # 원문의 어디에서 시작하는지.
end = pointer + correction_data['end'] # 원문의 어디에서 끝나는지.
target = correction_data['orgStr'] # 문제가 있는 부분.
help = correction_data['help'] # 무엇이 잘못된 것인지.
changed = correction_data['candWord'] # 고쳐진 말.
# 조작.
# print(correction_data['orgStr'])
corrected_text = corrected_text[:start] + changed + corrected_text[end:] # 잘못된 용어 제거 + 교정어 삽입
erased_len = len(changed) - len(target)
pointer = pointer + erased_len # 지워진 문자 만큼 포인터를 옮겨준다. 다음 문자열 제거를 위해서.
# 문제정보 담기.
cor_num += 1 # 수정횟수 증가.
return cor_num, corrected_text