[파이썬] 어근 추출(Stemming)과 표제어 추출(Lemmatization)

자연어 처리(Natural Language Processing, NLP)에서 언어의 다양한 형태를 분석하고 이해하기 위해 어근 추출과 표제어 추출은 중요한 작업입니다. 이러한 작업은 텍스트 분석, 정보 검색, 기계 번역 등 다양한 NLP 응용 프로그램에서 사용됩니다. 이번 블로그 포스트에서는 Python을 사용하여 어근 추출과 표제어 추출을 적용하는 방법을 알아보겠습니다.

어근 추출(Stemming)

어근 추출은 단어에서 접사 등을 제거하여 기본 형태인 어근을 추출하는 작업입니다. 예를 들어, “running”, “runs”, “ran”의 어근은 모두 “run”입니다. Python에서는 NLTK(Natural Language Toolkit) 패키지를 사용하여 어근 추출을 수행할 수 있습니다.

from nltk.stem import PorterStemmer

# 어근 추출기 객체 생성
stemmer = PorterStemmer()

words = ["running", "runs", "ran"]

for word in words:
    stemmed_word = stemmer.stem(word)
    print(stemmed_word)

결과:

run
run
ran

표제어 추출(Lemmatization)

표제어 추출은 단어의 정규 형태인 표제어를 추출하는 작업입니다. 어근 추출과 달리, 표제어 추출은 단어의 실제 의미를 고려하여 추출됩니다. 예를 들어, “running”, “runs”, “ran”의 표제어는 모두 “run”입니다. Python에서는 NLTK 패키지의 WordNetLemmatizer 클래스를 사용하여 표제어 추출을 수행할 수 있습니다.

from nltk.stem import WordNetLemmatizer

# 표제어 추출기 객체 생성
lemmatizer = WordNetLemmatizer()

words = ["running", "runs", "ran"]

for word in words:
    lemmatized_word = lemmatizer.lemmatize(word)
    print(lemmatized_word)

결과:

running
run
ran

결론

어근 추출과 표제어 추출은 자연어 처리에서 중요한 전처리 작업입니다. Python의 NLTK 패키지를 사용하면 손쉽게 어근 추출과 표제어 추출을 수행할 수 있습니다. 그러나 특정 응용 프로그램이나 문제에 따라 어근 추출과 표제어 추출 중 어떤 기법을 선택해야 하는지 고려해야 합니다.