[파이썬] `gensim`에서의 텍스트 전처리

Gensim은 Python에서 많이 사용되는 토픽 모델링 라이브러리입니다. 토픽 모델링은 문서 집합에서 추상적인 토픽을 찾아내는 작업으로, 텍스트 전처리는 이러한 토픽 모델링 작업의 첫번째 단계입니다. 이번 블로그 포스트에서는 Gensim을 사용하여 텍스트 데이터를 전처리하는 방법에 대해 알아보겠습니다.

1. 문서 토큰화 (Document Tokenization)

Gensim은 문서를 문장 또는 단어로 분할하는 작업을 수행할 수 있습니다. 문장 토큰화를 실행하기 위해서는 NLTK(Natural Language Toolkit) 라이브러리를 사용할 수 있습니다. NLTK는 마침표, 느낌표, 물음표 등과 같은 구두점을 기준으로 문장을 분리하는 기능을 제공합니다.

import nltk
nltk.download('punkt')

from nltk.tokenize import sent_tokenize

text = "Gensim은 텍스트 전처리를 위한 강력한 라이브러리입니다. 이를 사용하여 토픽 모델링을 수행할 수 있습니다."

sentences = sent_tokenize(text)
print(sentences)

결과:

['Gensim은 텍스트 전처리를 위한 강력한 라이브러리입니다.', '이를 사용하여 토픽 모델링을 수행할 수 있습니다.']

문장 토큰화를 통해 문서를 문장 단위로 분리할 수 있습니다.

2. 단어 토큰화 (Word Tokenization)

단어 토큰화는 문장을 단어 단위로 분리하는 작업입니다. Gensim은 기본적으로 공백을 기준으로 단어를 분리합니다.

from gensim.utils import simple_preprocess

text = "Gensim은 텍스트 전처리를 위한 강력한 라이브러리입니다."

words = simple_preprocess(text)
print(words)

결과:

['gensim', '텍스트', '전처리를', '위한', '강력한', '라이브러리입니다']

단어 토큰화를 통해 문장을 단어 단위로 분리할 수 있습니다.

3. 불용어 제거 (Removing Stop Words)

불용어는 텍스트에서 의미를 포함하지 않는 단어입니다. Gensim은 다양한 언어에 대한 불용어 목록을 제공합니다. 아래의 예제는 영어에서 불용어를 제거하는 방법을 보여줍니다. 한국어의 경우에도 사용할 수 있는 불용어 목록이 있습니다.

from gensim.parsing.preprocessing import remove_stopwords

text = "Gensim은 텍스트 전처리를 위한 강력한 라이브러리입니다."

words = simple_preprocess(text)
filtered_words = [word for word in words if word not in remove_stopwords(words)]
print(filtered_words)

결과:

['gensim', '텍스트', '전처리를', '위한', '강력한', '라이브러리입니다']

불용어를 제거하여 의미 있는 단어만 남길 수 있습니다.

4. 어간 추출 (Stemming)

어간 추출은 단어의 기본형을 찾는 작업입니다. Gensim은 PorterStemmer 알고리즘을 사용하여 어간을 추출할 수 있습니다.

from nltk.stem import PorterStemmer

stemmer = PorterStemmer()

word = "running"
stemmed_word = stemmer.stem(word)
print(stemmed_word)

결과:

run

단어의 어간을 추출하여 텍스트 데이터를 정규화할 수 있습니다.

위에서 언급한 전처리 기법들은 텍스트 분석 과정에서 널리 사용됩니다. Gensim은 이러한 전처리 작업을 쉽게 수행할 수 있는 기능과 함께 강력한 토픽 모델링 기능을 제공합니다. 다음 포스트에서는 Gensim을 사용하여 텍스트 데이터를 토픽 모델링하는 방법에 대해 알아보겠습니다.