텍스트 데이터로부터 의미 있는 주제를 추출하는 토픽 모델링은 텍스트 마이닝 및 자연어 처리 분야에서 중요한 주제 중 하나입니다. 파이썬은 토픽 모델링을 수행하는 데 사용할 수 있는 다양한 라이브러리를 제공합니다. 이번 글에서는 그 중에서도 gensim 및 scikit-learn이라는 파이썬 라이브러리를 소개하겠습니다.
1. gensim
gensim은 토픽 모델링 및 자연어 처리를 위한 파이썬 라이브러리로, Latent Semantic Analysis (LSA) 및 Latent Dirichlet Allocation (LDA)와 같은 토픽 모델링 알고리즘을 제공합니다. gensim은 대용량의 텍스트 데이터에 대한 확장 가능한 토픽 모델링을 지원하며, 사용자 친화적인 API를 통해 간편하게 활용할 수 있습니다.
from gensim import corpora, models
# 코퍼스 생성
corpus = [
['사과', '바나나', '사과', '딸기', '바나나'],
['바나나', '딸기', '딸기', '자두'],
['사과', '딸기', '바나나']
]
# 토픽 모델링 수행
dictionary = corpora.Dictionary(corpus)
corpus_bow = [dictionary.doc2bow(text) for text in corpus]
lda_model = models.LdaModel(corpus_bow, num_topics=2, id2word=dictionary)
2. scikit-learn
scikit-learn은 머신 러닝 및 데이터 분석을 위한 다양한 기능을 제공하는 파이썬 라이브러리이며, 토픽 모델링 또한 그 중 하나입니다. scikit-learn은 Non-negative Matrix Factorization (NMF) 및 Latent Dirichlet Allocation (LDA)와 같은 토픽 모델링 알고리즘을 제공하며, 다른 머신 러닝 모델과의 통합을 통해 유연한 활용이 가능합니다.
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.decomposition import LatentDirichletAllocation
# 코퍼스 생성
corpus = [
'사과 바나나 사과 딸기 바나나',
'바나나 딸기 딸기 자두',
'사과 딸기 바나나'
]
# 토픽 모델링 수행
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)
lda_model = LatentDirichletAllocation(n_components=2, random_state=42)
lda_model.fit(X)
gensim과 scikit-learn은 각각의 장단점을 가지고 있으며, 특정한 상황이나 요구사항에 맞게 선택하여 활용할 수 있습니다. 이처럼 파이썬은 다양한 토픽 모델링 라이브러리를 제공하여, 데이터 과학 및 자연어 처리 분야에서의 토픽 모델링 작업을 보다 효과적으로 수행할 수 있습니다.