[python] gensim을 활용한 문서 유사도 계산 결과 시각화 방법

본 포스트에서는 Python의 gensim 라이브러리를 사용하여 문서 간 유사도를 계산하고, matplotlib 라이브러리를 활용하여 이를 시각화하는 방법을 다룹니다.

목차

  1. gensim을 이용한 문서 유사도 계산
  2. 문서 유사도 시각화
  3. 결론

gensim을 이용한 문서 유사도 계산

gensim은 Python에서 사용되는 자연어 처리를 위한 라이브러리로, LDA(Latent Dirichlet Allocation), TF-IDF(Term Frequency-Inverse Document Frequency)와 같은 기술을 지원합니다.

아래는 gensim을 사용하여 문서 간 유사도를 계산하는 간단한 예제 코드입니다.

from gensim import corpora, models, similarities
import numpy as np

# 문서 가져오기
documents = ["사과는 맛있다", "바나나는 노랗다", "사과와 바나나"]

# 텍스트 처리를 위한 전처리
texts = [[word for word in document.split()] for document in documents]

# 단어 사전 생성
dictionary = corpora.Dictionary(texts)

# 말뭉치 생성
corpus = [dictionary.doc2bow(text) for text in texts]

# TF-IDF 모델 생성
tfidf = models.TfidfModel(corpus)

# TF-IDF 변환
corpus_tfidf = tfidf[corpus]

# 유사도 지수 계산
index = similarities.MatrixSimilarity(corpus_tfidf)

# 유사도 결과 출력
sims = index[corpus_tfidf]
print(list(enumerate(sims)))

문서 유사도 시각화

이제 계산된 문서 간 유사도를 matplotlib 라이브러리를 활용하여 시각화해보겠습니다. 아래는 계산된 유사도를 막대 그래프로 시각화하는 예제 코드입니다.

import matplotlib.pyplot as plt

# 문서별 유사도 시각화
for i, sim in enumerate(sims):
    plt.bar(range(len(sim)), sim, align='center', alpha=0.5, label=f'Document {i+1}')

plt.xlabel('문서')
plt.ylabel('유사도')
plt.title('문서 간 유사도')
plt.legend()
plt.show()

위 코드를 실행하면, 각 문서 간의 유사도를 쉽게 비교할 수 있는 막대 그래프가 생성됩니다.

결론

이렇게 gensim을 사용하여 문서 간 유사도를 계산하고, matplotlib를 사용하여 유사도를 시각화할 수 있습니다. 이를 통해 자연어 처리 분야에서 문서 간의 유사도를 쉽게 이해하고 시각화할 수 있는 방법을 알아보았습니다.

위의 예제 코드를 통해 간단하게 문서 유사도 계산과 시각화를 실습해보시기를 권장합니다.

참고 자료