Gensim을 사용하여 문서 요약의 정확도 향상 기법 실습하기

문서 요약은 긴 텍스트를 간결하고 핵심적인 정보로 압축하는 작업입니다. 이번 블로그 포스트에서는 Python의 Gensim 라이브러리를 사용하여 문서 요약의 정확도를 향상시키는 방법에 대해 알아보겠습니다.

1. 데이터 전처리

먼저, 문서 요약을 위해 데이터를 전처리해야 합니다.

import re
from gensim.parsing.preprocessing import remove_stopwords

def preprocess_text(text):
    # 특수문자 제거
    text = re.sub(r'\W+', ' ', text)

    # 불용어 제거
    text = remove_stopwords(text)

    # 소문자 변환
    text = text.lower()
    
    return text

위 코드는 주어진 텍스트를 전처리하는 함수입니다. re.sub() 함수를 사용하여 특수문자를 제거하고, remove_stopwords() 함수를 사용하여 불용어를 제거합니다. 마지막으로 lower() 메서드를 사용하여 모든 문자를 소문자로 변환합니다.

2. TF-IDF로 핵심 단어 추출

문서 요약에서는 문서의 핵심 단어를 추출하여 사용하는 것이 중요합니다. 이를 위해 Gensim의 TF-IDF 모델을 사용할 수 있습니다.

from gensim.models import TfidfModel
from gensim.corpora import Dictionary

def extract_keywords(docs):
    # 토큰화
    tokenized_docs = [doc.split() for doc in docs]

    # 단어 사전 생성
    dictionary = Dictionary(tokenized_docs)

    # 문서를 BoW(Bag of Words)로 변환
    corpus = [dictionary.doc2bow(doc) for doc in tokenized_docs]

    # TF-IDF 모델 학습
    tfidf = TfidfModel(corpus)

    # 핵심 단어 추출
    keywords = tfidf[corpus]

    return keywords

위 코드는 주어진 문서들을 TF-IDF 모델을 활용하여 핵심 단어를 추출하는 함수입니다. 문서들을 토큰화하여 단어 사전을 생성하고, 각 문서를 BoW로 변환한 뒤, TF-IDF 모델을 학습시켜 핵심 단어를 추출합니다.

3. 핵심 문장 추출

핵심 단어를 추출한 뒤에는 핵심 문장을 추출해야 합니다. Gensim의 TextRank 알고리즘을 활용하여 핵심 문장을 추출할 수 있습니다.

from gensim.summarization import summarize

def extract_summary(text, ratio=0.3):
    # 문서 전처리
    preprocessed_text = preprocess_text(text)
    
    # 핵심 문장 추출
    summary = summarize(preprocessed_text, ratio=ratio)

    return summary

위 코드는 주어진 텍스트에서 핵심 문장을 추출하는 함수입니다. 먼저, 텍스트를 전처리한 다음, Gensim의 summarize() 메서드를 사용하여 핵심 문장을 추출합니다. ratio 인자는 텍스트의 어느 정도의 비율만큼을 요약할지를 결정하는 파라미터입니다.

결론

이번 블로그 포스트에서는 Gensim을 사용하여 문서 요약의 정확도를 향상시키는 방법을 소개했습니다. 데이터 전처리, TF-IDF로 핵심 단어 추출, 핵심 문장 추출 등의 과정을 거쳐 문서 요약을 수행할 수 있습니다.

더 자세한 내용은 Gensim의 공식 문서 [^1^]를 확인해보시기 바랍니다.