본문 바로가기
컴퓨터이야기/프로젝트1

pyspellchecker를 사용하여 간단하게 영어 철자 오류를 검출하고 수정하는 코드

by Saltycrocodile 2025. 2. 19.

pyspellchecker

 

기본코드
from spellchecker import SpellChecker

# SpellChecker 객체 생성
spell = SpellChecker()

# 오타가 포함된 문장
sentence = "This is a simpl test for speling correction."

# 문장을 단어 단위로 분리
words = sentence.split()

# 철자 오류가 있는 단어 찾기
misspelled = spell.unknown(words)

# 수정된 문장 생성
corrected_words = [spell.correction(word) if word in misspelled else word for word in words]
corrected_sentence = " ".join(corrected_words)

print("Original Sentence:", sentence)
print("Corrected Sentence:", corrected_sentence)

 

 

 

 

이전 포스팅과 동일하게 python3 englsih_test1.py로 하면 에러메시지가 나올 것이다. 이때

python3 -m pip install pyspellchecker를 해주면 python3 명령문이 참고하는 영역에도 동일하게 pyspellchecker가 설치된다.

 

 

 

 

이번에는 내가 준 입력을 받아서 수정해주는 프로그램

 

코드2: 입력받은 영어 문장의 스펠링을 체크해서 교정
from spellchecker import SpellChecker

# SpellChecker 객체 생성
spell = SpellChecker()

# 사용자 입력 받기
sentence = input("Enter a sentence: ")

# 문장을 단어 단위로 분리
words = sentence.split()

# 철자 오류가 있는 단어 찾기
misspelled = spell.unknown(words)

# 수정된 문장 생성
corrected_words = [spell.correction(word) if word in misspelled else word for word in words]
corrected_sentence = " ".join(corrected_words)

# 결과 출력
print("\nOriginal Sentence:", sentence)
print("Corrected Sentence:", corrected_sentence)

 

 

cmd 명령 프롬프트에 실행 시 Enter a sentence:라고 나오면 원하는 수정하고 싶은 문장을 작성해주면 된다.

 

아래와 같이 I am lerning pythn prgraming. 이라는 오타가 포함된 문장을 입력해주면 아래 처럼 Corrected Sentence에 교정된 문장이 자동으로 출력된다.

 

 

 

 

pyspellchecker 모듈은 어떤 원리로 작동할까?

 

확률적인 언어 모델(빈도 기반 접근법)을 사용해서 동작한다. 네이버 맞춤법 기기 같은 사이트로부터 API를 실시간으로 받아오거나 PyKoSpacing처럼 tensorflow로 학습시킨 것과는 다르다.

 

 

  • 내장된 영어 단어 리스트 (corpus) 활용
    • pyspellchecker는 약 370,000개의 일반적인 영어 단어를 포함하는 사전을 내장하고 있다.
    • 이 사전은 실제 텍스트(예: 책, 뉴스 기사 등)에서 등장하는 단어 빈도를 기반으로 구축되었다.
  • 편집 거리(Edit Distance) 기반 오타 교정
    • 특정 단어가 사전에 없으면, 가장 가까운 단어를 찾아 제안한다.
    • 이를 위해 Levenshtein Distance(레벤슈타인 거리) 알고리즘을 사용한다.
    • 예를 들어, speling → spelling 으로 수정하는 과정:
      • 철자 하나 추가 (speling → spelling)
      • 철자 하나 수정 (speling → spelling)
    • 가장 적은 수정 횟수로 바꿀 수 있는 단어를 찾아 추천하게 된다.
  • 확률 기반 선택
    • 비슷한 단어가 여러 개 있으면, 출현 빈도가 높은 단어를 우선적으로 추천한다.
    • 예를 들어, recieve의 경우 receive와 recite가 후보일 수 있지만,
      receive가 더 자주 등장하는 단어이므로 이를 우선적으로 추천하게 된다.

 

 

한글 맞춤법 검사기와 비교

한국어 맞춤법 검사기들은 pyspellchecker와 다르게, 보통 딥러닝이나 규칙 기반 검사기를 사용하고 있다.

  • NAVER 맞춤법 검사기 → 사전 + 딥러닝 모델 활용
  • hanspell (네이버 API 기반) → 네이버 맞춤법 검사기를 API로 호출
  • KoNLPy → 한국어 형태소 분석 라이브러리 (맞춤법 검사용은 아님)

즉, pyspellchecker는 사전 기반 + 편집 거리 알고리즘을 사용하지만, 한글 맞춤법 검사기는 딥러닝 모델 + 규칙 검사를 함께 사용한다는 것을 알 수 있다.