본문 바로가기
Python/Data Engineering

py-hanspell을 이용한 네이버 맞춤법 검사기

by JONGSKY 2023. 1. 24.
728x90
SMALL

1. 글을 쓰게 된 계기

 

여러 한국어 형태소 분석기를 사용하면서

맞춤법이 맞지 않을 때 형태소 분석기가 잘 되지 않는 현상을 확인했다.

 

그래서 이번 프로젝트에서 사용하는 데이터 특성상

★그램 리뷰 데이터들은 오탈자가 많다는 문제가 있어서

맞춤법 검사기를 사용한 뒤에 형태소 분석을 진행하려고 한다.

 

2. 사용 방법

 

다음 명령어를 사용해 git 저장소를 clone 해서 저장받고 모듈을 설치해 보도록 하자. (py-hanspell git repo)

 

git clone https://github.com/ssut/py-hanspell
cd py-hanspell
python setup.py install

 

이제 다음 받은 모듈을 불러와서 테스트해보자.

 

spell.checker.check("검사할문장") 을 이용하면 맞춤법을 검사해서 객체를 반환할 수 있다.

 

from hanspell import spell_checker

text = "외않되"

spelled_text = spell_checker.check(text)
print(spelled_text)

# Checked(result=True, original='외않되', checked='왜 안돼', errors=1, 
# words=OrderedDict([('왜', 1), ('안돼', 1)]), time=0.047921180725097656)

코드 실행 결과

  • result : 맞춤법 검사 성공 여부 {True / Fasle}
  • original : 검사 전 문자
  • checked : 검사 후 문장
  • errors : 맞춤법 오류 수
  • words : 검사 후 문장을 공백으로 split하고 오류 종류를 매핑한 dict
  • time : 총 요청 시간

words 값 확인

  • key 값은 검사 후 문장, value 값은 검사 전 오류의 종류가 매핑된 int 이다.
  • CheckResult를 import 하여 상수값을 확인해 보면 value의 숫자가 어떤 오류를 나타내는지 알 수 있다.
CONST int error
PASSED 0 맞춤법 검사 결과 문제가 없는 단어 또는 구절
WRONG_SPELLING 1 맞춤법에 문제가 있는 단어 또는 구절
WRONG_SPACING 2 띄어쓰기에 문제가 있는 단어 또는 구절
AMBIGUOUS 3 표준어가 의심되는 단어 또는 구절
STATISTICAL_CORRECTION 4 통계적 교정에 따른 단어 또는 구절

 

from hanspell.constants import CheckResult

print(CheckResult.PASSED)
print(CheckResult.WRONG_SPELLING)
print(CheckResult.WRONG_SPACING)
print(CheckResult.AMBIGUOUS)
print(CheckResult.STATISTICAL_CORRECTION)

 

 

아래와 같이 checked를 뽑아내면 맞춤법검사기를 한 텍스트만 출력할 수 있다.

checked_text = spelled_text.checked
print(checked_text)

# 왜 안돼

코드 실행 결과

 

3. 모듈 테스트 결과 확인

 

네이버에서 제공하는 맞춤법검사기 와 코드를 통해 얻은 결과값이 동일한 것을 확인할 수 있다.

 

 

4. 한계점

 

네이버 맞춤법 검사기는 최대 500자까지 검사가 가능합니다.

모듈 또한 특정 글자수가 넘어가면 False로 응답하게 되는데 같은 이유라고 생각이 듭니다.

고려해서 전처리 코드를 작성해야하니 참고하면 좋을 것 같습니다.

728x90
LIST