Gensim과 LDA를 활용하여 토픽 모델링의 성능 측정을 위한 어간 추출 방법 실습하기

소개

토픽 모델링은 텍스트 데이터에서 의미 있는 토픽들을 추출하는 방법입니다. Gensim은 Python에서 토픽 모델링을 구현할 수 있는 강력한 도구입니다. 이 글에서는 Gensim 라이브러리를 사용하여 LDA(Latent Dirichlet Allocation) 토픽 모델링 알고리즘을 적용하고, 성능 측정을 위해 어간 추출(stemming) 방법을 실습해보겠습니다.

Gensim 설치

먼저, Gensim을 설치해야 합니다. 아래 명령을 사용하여 Gensim을 설치할 수 있습니다.

pip install gensim

데이터 준비

실습을 위해 텍스트 데이터를 준비해야 합니다. 예를 들어, 영화 리뷰 데이터를 사용할 수 있습니다. 데이터를 불러온 후 전처리 작업을 수행하여 텍스트를 정제하고 토큰화합니다.

어간 추출

어간 추출은 단어의 기본 형태를 추출하는 작업입니다. 이를 통해 단어들을 통합하고 토픽 모델링의 성능을 높일 수 있습니다. 파이썬 NLTK(Natural Language Toolkit) 라이브러리의 porter 어간 추출기를 사용하여 어간 추출을 수행할 수 있습니다.

import nltk
from nltk.stem import PorterStemmer

nltk.download('punkt')

stemmer = PorterStemmer()

def stemming(text):
    tokens = nltk.word_tokenize(text)
    stemmed_tokens = [stemmer.stem(token) for token in tokens]
    stemmed_text = ' '.join(stemmed_tokens)
    return stemmed_text

위의 코드는 텍스트를 입력으로 받아 어간 추출을 수행하는 stemming 함수를 정의한 예시입니다.

토픽 모델링

이제 Gensim과 어간 추출을 활용하여 토픽 모델링을 수행해보겠습니다. 아래 코드는 Gensim을 사용하여 LDA 토픽 모델링을 수행하는 예시입니다.

from gensim import corpora
from gensim.models import LdaModel

def topic_modeling(texts, num_topics):
    stemmed_texts = [stemming(text) for text in texts]
    tokenized_texts = [text.split() for text in stemmed_texts]
    
    dictionary = corpora.Dictionary(tokenized_texts)
    corpus = [dictionary.doc2bow(tokens) for tokens in tokenized_texts]
    
    lda_model = LdaModel(corpus, num_topics=num_topics, id2word=dictionary, passes=10)
    
    return lda_model

# 데이터 준비
texts = ["영화는 정말 멋지다.", "스토리가 흥미롭다.", "배우의 연기가 훌륭하다.", "음악은 아주 아름답다.", "영상미가 아주 아름답다."]

# 토픽 모델링 수행
num_topics = 2
lda_model = topic_modeling(texts, num_topics)

# 결과 출력
for idx, topic in lda_model.print_topics(-1):
    print(f"Topic {idx}: {topic}")

위 코드에서는 입력으로 주어진 texts 리스트의 텍스트들을 어간 추출한 후, LDA 모델을 학습하고 토픽들을 출력합니다.

결과 및 평가

실행 결과, 토픽들과 그에 대한 단어들이 출력됩니다. 이를 통해 토픽 모델링의 결과를 평가할 수 있습니다. LDA 모델의 성능을 더 높이기 위해서는 다양한 전처리 방법과 매개 변수 조정 등을 고려해볼 수 있습니다.

이상으로 Gensim과 LDA를 활용하여 토픽 모델링의 성능 측정을 위한 어간 추출 방법을 실습해보았습니다. 보다 정확하고 의미 있는 토픽 모델링을 위해 다양한 전처리 기법과 모델 매개 변수를 조정해보면 좋습니다.

#TechBlog #Gensim #LDA #토픽모델링 #어간추출