Gensim을 활용하여 문서 간 관계 분석하기

Gensim은 자연어 처리 및 토픽 모델링을 위한 Python 라이브러리입니다. 이 라이브러리를 사용하여 문서 간의 관계를 분석하는 방법을 살펴보겠습니다. 관계 분석은 문서 간의 유사성을 측정하고, 유사한 문서를 그룹화하거나 연관성을 파악하는 등의 다양한 분석에 활용될 수 있습니다.

1. 문서 데이터 준비하기

먼저, 분석할 문서 데이터를 준비해야 합니다. 이 예시에서는 위키피디아에서 추출한 문서들을 사용할 것입니다. 문서들을 적절한 형식으로 가공한 후에 Gensim의 Corpus 형식으로 변환해야 합니다.

from gensim import corpora

# 문서 데이터를 불러온다
documents = ['위키피디아는 세계 최대의 다양한 언어로 된 온라인 백과사전이다.',
             '위키피디아 문서는 편집하고 개선할 수 있으며, 다른 사람들과 공유할 수도 있다.',
             '위키피디아는 중립적이고 신뢰할 수 있는 내용을 유지하기 위해 노력하고 있다.']

# 문서 데이터를 가공하여 Gensim의 Corpus 형식으로 변환한다
texts = [[word for word in document.lower().split()] for document in documents]
dictionary = corpora.Dictionary(texts)
corpus = [dictionary.doc2bow(text) for text in texts]

2. 문서 간 유사성 측정하기

Gensim을 사용하여 문서 간의 유사성을 측정할 수 있습니다. 유사성은 코사인 유사도(cosine similarity)를 통해 평가됩니다.

from gensim import similarities

# 유사성을 측정할 기준 문서를 설정한다
query = '위키피디아는 온라인 백과사전이다.'
query_bow = dictionary.doc2bow(query.lower().split())

# 문서 간의 유사성을 측정한다
index = similarities.MatrixSimilarity(corpus)
sims = index[query_bow]

# 유사도가 높은 순서대로 정렬하여 출력한다
sims_sorted = sorted(enumerate(sims), key=lambda item: -item[1])
for document_index, similarity in sims_sorted:
    print('문서 {}의 유사도: {:.2f}'.format(document_index, similarity))

3. 결과 분석 및 시각화하기

측정된 문서 간의 유사성을 바탕으로 결과를 분석하고 시각화할 수 있습니다. 유사한 문서들을 그룹화하거나 연관성이 높은 문서들을 파악하는 등의 분석을 수행할 수 있습니다.

# 유사한 문서들을 그룹화하여 출력한다
grouped_documents = [[] for _ in range(3)]
for document_index, similarity in sims_sorted:
    grouped_documents[document_index // 2].append(documents[document_index])

for group_index, documents in enumerate(grouped_documents):
    print('그룹 {}: {}'.format(group_index, ', '.join(documents)))

Gensim을 활용하여 문서 간의 관계를 분석하는 방법을 살펴보았습니다. 문서 간의 유사성을 측정하고, 유사한 문서를 그룹화하거나 연관성을 파악함으로써 관련된 정보를 발견할 수 있습니다. 추가적으로 Gensim의 다양한 기능을 활용하여 문서 분석을 더욱 확장할 수 있습니다.

참고문헌:

#NaturalLanguageProcessing #Gensim