Gensim을 활용한 문서 군집화 및 시각화 실습하기

Gensim은 자연어 처리를 위한 파이썬 라이브러리로, 토픽 모델링과 문서 군집화 등 다양한 기능을 제공합니다. 이번 글에서는 Gensim을 사용하여 문서 군집화를 수행하고, 시각화하여 결과를 확인하는 실습을 진행해보겠습니다.

1. 데이터 전처리

Gensim을 사용하기 전에 문서 데이터를 적절하게 전처리해야 합니다. 주요 단계는 다음과 같습니다.

  1. 텍스트 데이터를 문장으로 분리합니다.
  2. 문장을 단어로 토큰화합니다.
  3. 불용어를 제거합니다.
  4. 단어를 소문자로 변환합니다.
  5. 단어를 표준 형태로 변환합니다. 예를 들어, “running”을 “run”으로 변환합니다.

이러한 전처리 과정은 데이터에 따라 다르기 때문에, 각각의 상황에 맞춰 적용해야 합니다.

2. 문서 군집화

Gensim을 사용하여 문서 군집화를 수행하는 방법은 다음과 같습니다.

  1. 문서의 단어를 벡터로 변환합니다. 대표적인 방법으로는 TF-IDF, Word2Vec 등이 있습니다.
  2. 벡터화된 문서를 데이터셋으로 사용하여 군집화 알고리즘을 적용합니다. 대표적인 알고리즘으로는 K-means, DBSCAN 등이 있습니다.
  3. 군집화 결과를 확인하고 해석합니다.

아래는 Gensim을 사용하여 TF-IDF로 문서를 벡터화하고, K-means 알고리즘을 이용하여 군집화를 수행하는 예시입니다.

from gensim import corpora
from gensim.models import TfidfModel
from gensim.models import KMeans

# 문서 데이터를 전처리한 후에 단어 사전을 생성합니다.
documents = ["문서1", "문서2", "문서3", ...]
processed_documents = preprocess(documents)
dictionary = corpora.Dictionary(processed_documents)

# TF-IDF 모델을 생성하고 문서를 벡터화합니다.
tfidf_model = TfidfModel(dictionary=dictionary)
corpus = [dictionary.doc2bow(document) for document in processed_documents]
tfidf_corpus = tfidf_model[corpus]

# K-means 알고리즘을 적용하여 군집화를 수행합니다.
k = 3  # 군집 개수
kmeans_model = KMeans(n_clusters=k)
kmeans_model.fit(list(tfidf_corpus))

# 군집화 결과를 확인합니다.
labels = kmeans_model.labels_
print(labels)

3. 군집화 결과 시각화

군집화 결과를 시각화하여 확인할 수 있습니다. 대표적인 방법으로는 차원 축소 기법인 t-SNE를 사용하는 것이 있습니다. 아래는 t-SNE를 사용하여 군집화 결과를 시각화하는 예시입니다.

from sklearn.manifold import TSNE
import seaborn as sns
import matplotlib.pyplot as plt

# t-SNE를 이용하여 군집화 결과를 시각화합니다.
tsne_model = TSNE(n_components=2)
tsne_values = tsne_model.fit_transform(tfidf_corpus)

# 군집별로 색상을 다르게 지정하여 시각화합니다.
sns.scatterplot(x=tsne_values[:, 0], y=tsne_values[:, 1], hue=labels, palette="Set2")
plt.show()

위의 예시 코드를 실행하면 군집화 결과를 시각화한 그래프를 확인할 수 있습니다.

4. 결론

이번 글에서는 Gensim을 사용하여 문서 군집화와 시각화를 수행하는 방법에 대해 알아보았습니다. Gensim은 간편한 인터페이스와 다양한 기능을 제공하여 자연어 처리 작업을 효과적으로 수행할 수 있습니다. 다양한 데이터셋에 대해 Gensim을 활용하여 군집화를 수행해보시기 바랍니다.

#Gensim #문서군집화