Gensim을 사용하여 문서 요약의 성능 측정을 위한 빈도수 기반 필터링 방법 실습하기

이번 블로그 포스트에서는 Gensim을 사용하여 문서 요약의 성능을 측정하기 위한 빈도수 기반 필터링 방법에 대해 실습해보겠습니다.

1. Gensim 소개

Gensim은 자연어 처리를 위한 Python 라이브러리로, 주로 토픽 모델링과 문서 요약에 사용됩니다. Gensim의 핵심 기능은 Word2Vec 모델과 LSI (Latent Semantic Indexing) 모델을 비롯한 다양한 토픽 모델링 알고리즘을 제공하는 것입니다.

2. 빈도수 기반 필터링

빈도수 기반 필터링은 문서 내에서 단어의 등장 빈도수를 기준으로 중요한 단어를 선택하는 방법입니다. Gensim 라이브러리에서는 TfidfModel을 사용하여 빈도수 기반 필터링을 수행할 수 있습니다.

먼저, Gensim을 설치해줍니다.

pip install gensim

다음으로, 필요한 모듈을 임포트합니다.

from gensim import models
from gensim import corpora

이제 문서 집합을 로드하고 전처리를 수행합니다. 문서 집합은 리스트 형태로 구성되어야 하며, 각 문서는 단어로 토큰화되어야 합니다.

documents = [["apple", "banana", "fruit", "fruit"],
             ["orange", "fruit"],
             ["apple", "orange", "fruit"],
             ["banana", "fruit", "orange", "apple"]]

corpora.Dictionary를 사용하여 문서 집합의 단어들을 사전으로 만들어줍니다.

dictionary = corpora.Dictionary(documents)

이제 TfidfModel을 통해 빈도수 기반 필터링을 수행합니다.

tfidf_model = models.TfidfModel(dictionary=dictionary, normalize=True)
corpus = [dictionary.doc2bow(doc) for doc in documents]
tfidf_corpus = tfidf_model[corpus]

결과는 각 문서의 단어에 대한 가중치로 표현됩니다. 가중치가 높은 단어일수록 중요한 단어로 간주할 수 있습니다.

3. 성능 측정

빈도수 기반 필터링을 통해 선택된 단어들을 사용하여 문서 요약을 수행할 수 있습니다. 요약된 문서와 원본 문서 간의 유사도를 측정하여 성능을 평가할 수 있습니다.

이를 위해 유사도 측정 알고리즘인 코사인 유사도를 사용하겠습니다.

from gensim import similarities

index = similarities.MatrixSimilarity(tfidf_corpus)

# 요약된 문서
summary = "orange fruit"
summary_bow = dictionary.doc2bow(summary.split())

# 유사도 계산
sims = index[tfidf_model[summary_bow]]

# 가장 유사한 문서 선택
most_similar_doc = sims.argmax()
original_document = documents[most_similar_doc]

위의 코드에서는 “orange fruit”라는 요약된 문서를 가지고 유사도를 계산하고, 가장 유사한 원본 문서를 선택하는 과정을 보여주고 있습니다.

4. 마무리

이번 실습을 통해 Gensim을 사용하여 문서 요약의 성능 측정을 위한 빈도수 기반 필터링 방법을 실습해보았습니다. Gensim은 강력한 자연어 처리 도구로써 다양한 알고리즘과 기능을 제공하고 있으므로, 자연어 처리에 관심 있는 분들은 꼭 한 번 참고해보시기 바랍니다.

#gensim #자연어처리