Machine learning/NLP

[NLP]. 한국어 맞춤법 검사기 사용하기 (feat. hanspell )

Acdong 2021. 10. 27. 17:52
728x90

오픈 소스 링크 : https://github.com/ssut/py-hanspell

 

from hanspell import spell_checker

위 오픈소스는 네이버 맞춤법 검사기 API의 요청을 보내서 결과를 반환하는 오픈소스이다.

 

네이버 웹페이지에서 사용한 맞춤법검사기와 결과가 동일하다고 볼 수 잇다.


네이버 맞춤법 검사기의 오류로는 4가지가 있다. 

오류 없음 .PASSED 맞춤법 검사 결과 문제가 없는 단어 또는 구절
맞춤법 오류 .WRONG_SPELLING 맞춤법에 문제가 있는 단어 또는 구절
띄어쓰기 오류 .WRONG_SPACING 띄어쓰기에 문제가 있는 단어 또는 구절
표준어 의심 오류 .AMBIGUOUS 표준어가 의심되는 단어 또는 구절
통계적 교정 오류 .STATISTICAL_CORRECTION 통계적 교정에 따른 단어 또는 구절

 

어떤 오류가 발생했는지 확인하는 방법

result = spell_checker.check(input_text)
>>> for key, value in result.words.items():
...    print(key, value)
안녕하세요. 2
저는 0
한국인입니다. 2
이 2
문장은 2
한글로 0
작성됐습니다. 1

 

맞춤법 검사기의 결과를 오류별로 분류해주는 함수 구현

def spell_error_check(input_text):
    if len(input_text) >= 500:
        return ["max_length" , -1 , -1 ,-1,-1]
    
    spell_cnt = 0
    space_cnt = 0
    standard_cnt = 0
    statis_cnt = 0

    try:
        check = spell_checker.check(input_text)
        mod_result = check.checked
        for key , val in check.words.items():
            if val==1:
                spell_cnt = spell_cnt + 1
            elif val==2:
                space_cnt = space_cnt + 1
            elif val==3:
                standard_cnt = standard_cnt + 1
            elif val==4:
                statis_cnt = statis_cnt + 1
    
        return [mod_result , spell_cnt , space_cnt , standard_cnt ,statis_cnt]  
    except:
        return ["error",-1,-1,-1,-1]

*맞춤법 검사기는 500자 이하의 문장만 지원함. 

반응형