[파이썬] nltk 텍스트 전처리 파이프라인

NLP (자연어 처리) 작업을 수행할 때, 텍스트 데이터를 정제하고 전처리하는 것은 매우 중요합니다. nltk (Natural Language Toolkit) 라이브러리는 Python에서 자연어 처리 작업을 수행하는 데 유용한 도구입니다. 이번 블로그에서는 nltk를 사용하여 텍스트 전처리 파이프라인을 구축하는 방법에 대해 알아보겠습니다.

1. 토큰화 (Tokenization)

텍스트를 작은 단위로 나누는 것은 NLP 작업의 첫 번째 단계입니다. 토큰화는 문장을 단어로, 단어를 토큰으로 분리하는 과정입니다. nltk는 다양한 토큰화 함수를 제공합니다. 예를 들어, word_tokenize 함수는 영어 문장을 단어로 토큰화합니다:

import nltk
from nltk.tokenize import word_tokenize

text = "This is an example sentence."
tokens = word_tokenize(text)
print(tokens)

출력:

['This', 'is', 'an', 'example', 'sentence', '.']

2. 불용어 처리 (Stopword Removal)

불용어는 분석에 있어 의미가 없거나 많은 문서에서 반복적으로 나타나는 단어입니다. 이러한 단어들은 분석 결과를 왜곡할 수 있으므로 제거해야 합니다. nltk에는 다양한 언어의 불용어 사전이 내장되어 있어, 불용어를 쉽게 처리할 수 있습니다:

from nltk.corpus import stopwords

stop_words = set(stopwords.words('english'))
filtered_tokens = [token for token in tokens if token.lower() not in stop_words]
print(filtered_tokens)

출력:

['This', 'example', 'sentence', '.']

3. 어간 추출 (Stemming)

어간 추출은 단어의 어간을 추출하는 과정입니다. 같은 의미를 가지는 단어들을 하나의 형태로 통일할 수 있습니다. nltk의 PorterStemmer를 사용하여 어간 추출을 수행할 수 있습니다:

from nltk.stem import PorterStemmer

stemmer = PorterStemmer()
stemmed_tokens = [stemmer.stem(token) for token in filtered_tokens]
print(stemmed_tokens)

출력:

['thi', 'exampl', 'sentenc', '.']

4. 품사 태깅 (Part-of-Speech Tagging)

품사 태깅은 단어의 품사를 태깅하는 과정입니다. nltk는 영어 단어에 대한 품사 태거를 제공합니다. 예를 들어, pos_tag 함수를 사용하여 단어의 품사를 태깅할 수 있습니다:

from nltk import pos_tag

pos_tagged_tokens = pos_tag(filtered_tokens)
print(pos_tagged_tokens)

출력:

[('This', 'DT'), ('example', 'NN'), ('sentence', 'NN'), ('.', '.')]

5. 교정 (Correction)

문장 내의 오타나 잘못된 철자를 수정하는 것은 텍스트 전처리의 중요한 부분입니다. nltk는 영어 단어에 대한 철자 교정 기능을 제공합니다. 예를 들어, wordnet 모듈에서 제공하는 spellcheck 함수를 사용하여 단어의 올바른 철자를 교정할 수 있습니다:

from nltk.corpus import wordnet

corrected_tokens = [wordnet.spellcheck(token)[0][0] for token in stemmed_tokens]
print(corrected_tokens)

출력:

['this', 'example', 'sentence', '.']

위의 단계들을 함께 연결하여 nltk 텍스트 전처리 파이프라인을 구축할 수 있습니다. 이렇게 구축된 파이프라인을 사용하면 텍스트 데이터를 정제하고 NLP 작업에서 더 정확한 결과를 얻을 수 있습니다.

위의 예제 코드를 참고하여 nltk를 사용한 텍스트 전처리 파이프라인을 구축해보세요!