[파이썬] py-hanspell로 네이버 맞춤법 검사기 사용하기

전 맞춤법을 검사할 때 [부산대 문법 검색기]를 자주 쓰는데 요즘 접속되지 않는 경우가 많아 다른 서비스를 찾고 있었습니다. 그러다 파이썬의 py-hanspell 모듈로 네이버 맞춤법 검사를 할 수 있다는 것을 알게 됐고 사용해본 결과 사용법이 간단하고 필요한 기능이 잘 갖춰져 있어 매우 편리했습니다. 본 포스팅에서는 py-hanspell의 기본적인 사용법과 에러 해결 방법을 정리했습니다.



py-hanspell 설치하기

1. 전 pip을 통해 설치 시 에러가 발생해 다른 방법을 사용했습니다. 아래는 pip으로 py-hanspell 설치하는 명령어 입니다.

pip install py-hanspell




2. 해당 모듈의 github에서 직접 .zip파일을 받은 후 압축을 해제합니다.

[파이썬] py-hanspell로 네이버 맞춤법 검사기 사용하기




3. cd 명령어로 압축 해제한 파일로 이동한 후 setup.py를 설치하면 모듈 설치가 완료됩니다.

cd C:\[압축해제한 폴더 경로]\py-hanspell-master   

python setup.py install




맞춤법 검사하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from hanspell import spell_checker
 
result = spell_checker.check(u‘안녕 하세요. 저는 한국인 입니다.’)
 
print(result.as_dict())
 
# {
# ‘result’: True, 
# ‘original’: ‘안녕 하세요. 저는 한국인 입니다.’, 
# ‘checked’: ‘안녕하세요. 저는 한국인입니다.’, 
# ‘errors’: 2, 
# ‘words’: OrderedDict([(‘안녕하세요.’, 2), (‘저는’, 0), (‘한국인입니다.’, 2)]), 
# ‘time’: 0.13903474807739258
# }
 
print(result.result)
 
# True
 
print(result.errors)
 
# 2
cs

1 – spell_checker 사용을 위한 모듈 포함.
3 – check() 함수에 비교하려는 문자열 입력.
5 – 받은 결과의 전문.
16 – 받은 결과에서 요청 성공 여부 출력.
20 – 받은 결과에서 에러 수만 출력.




단어별 맞춤법 검사하기

1
2
3
4
5
6
7
8
9
10
from hanspell import spell_checker
 
result = spell_checker.check(u‘안녕 하세요. 저는 한국인 입니다.’)
 
for key, value in result.words.items():
    print(key, value)
 
# 안녕하세요. 2
# 저는 0
# 한국인입니다. 2
cs

words.item의 key는 단어를, value는 오류 코드를 나타냅니다. 이것을 활용해 오류 종류에 따라 색을 넣어 구분하거나, 특정 오류 교정을 무시할 수 있습니다. [0 – 문제없음], [1 – 맞춤법 틀림], [2 – 띄어쓰기 틀림], [3 – 표준어 아님], [4 – 통계적 교정]

5 – 반복문을 통해 words.item의 값 출력




리스트로 맞춤법 검사하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from hanspell import spell_checker
 
input = u‘안녕 하세요. 저는 한국인 입니다.’
 
input_convert = input.replace(‘.’,‘.#’).split(‘#’)
 
input_list =  [“”]
 
for i in input_convert:
    print(i)
    if len(input_list[1]) + len(i) < 500:
        input_list[1+= i
    else:
        input_list.append(i)  
 
result = spell_checker.check(input_list)
 
print(result[0].result)
 
# true
cs

네이버 맞춤법 검사기는 한번에 최대 500자만 교정할 수 있기 때문에 장문의 글은 리스트로 나눠 요청해야 합니다.

3 – 맞춤법 검사 할 문자열 입력.
5 – replace로 #을 추가한 후, split로 #을 기준으로 나눔.
7 – 500자 미만으로 나뉜 문자열 저장.
9:14 – 기존의 문자열에 새로 추가 시 500자가 넘으면 새로운 리스트를 만듦.




맞춤법 검사 비교 상수

1
2
3
4
5
6
7
from hanspell.constants import CheckResult
 
print(CheckResult.PASSED) # 0 문제없음
print(CheckResult.WRONG_SPELLING) # 1 맞춤법이 틀림
print(CheckResult.WRONG_SPACING) # 2 띄어쓰기가 틀림
print(CheckResult.AMBIGUOUS) # 3 표준어가 아님
print(CheckResult.STATISTICAL_CORRECTION) # 4 통계적 교정
cs

words.item의 숫자 값으로 오류 코드를 구분할 수도 있지만 CheckResult 상수의 영문명은 더 정확한 구분이 가능합니다.

1 – checkResult를 사용하기 위해서 모듈을 포함.
3 – PASSED는 맞춤법에 문제없음을 뜻하며 숫자 0.




참고글

[py-hanspell 문서]
py-hanspell document – github




관련글

guest
0 Comments
Inline Feedbacks
모든 댓글 보기