[파이썬] 주요 주제 추출 기법

주요 주제 추출(토픽 모델링)은 문서 집합에서 주요 주제를 식별하는 자연어 처리 기법입니다. 이 기법은 다양한 분야에서 활용되며, 텍스트 마이닝, 정보 검색, 문서 분류 등에 사용됩니다. 이번 블로그 포스트에서는 Python을 사용하여 주요 주제 추출 기법을 구현하는 방법에 대해 살펴보겠습니다.

1. 자연어 처리 라이브러리 설치

주요 주제 추출을 위해 필요한 자연어 처리 라이브러리를 설치해야 합니다. Python에서는 gensim이라는 라이브러리를 주로 사용합니다. 다음 명령을 사용하여 gensim을 설치할 수 있습니다.

pip install gensim

2. 데이터 전처리

주요 주제 추출을 위해서는 문서 집합을 미리 전처리해야 합니다. 이 단계에서는 토큰화, 불용어 제거, 어근 추출 등의 과정을 거쳐 문서를 준비합니다. 다음은 예시 데이터에 대한 전처리를 수행하는 코드입니다.

import nltk
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer

nltk.download('stopwords')
nltk.download('wordnet')

# 토큰화
def tokenize(text):
    tokens = nltk.word_tokenize(text.lower())
    return tokens

# 불용어 제거
def remove_stopwords(tokens):
    stop_words = set(stopwords.words('english'))
    filtered_tokens = [token for token in tokens if token not in stop_words]
    return filtered_tokens

# 어근 추출
def lemmatize(tokens):
    lemmatizer = WordNetLemmatizer()
    lemmatized_tokens = [lemmatizer.lemmatize(token) for token in tokens]
    return lemmatized_tokens

# 예시 데이터
input_text = "This is an example sentence for topic extraction."
tokens = tokenize(input_text)
filtered_tokens = remove_stopwords(tokens)
lemmatized_tokens = lemmatize(filtered_tokens)

print(lemmatized_tokens)

3. 주요 주제 추출

전처리한 문서를 사용하여 주요 주제를 추출하는 단계입니다. 주요 주제 추출 알고리즘 중 가장 널리 사용되는 LDA(Latent Dirichlet Allocation) 알고리즘을 사용할 수 있습니다. 다음은 LDA를 사용하여 주요 주제를 추출하는 코드입니다.

from gensim import corpora, models

# 문서 집합
documents = [
    "This is an example sentence for topic extraction.",
    "Another example sentence to test topic extraction.",
    "Topic extraction is an interesting task in NLP."
]

# 토큰화된 문서
tokenized_documents = [tokenize(document) for document in documents]

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

# 문서-단어 행렬 생성
corpus = [dictionary.doc2bow(document) for document in tokenized_documents]

# LDA 모델 학습
lda_model = models.LdaModel(corpus, num_topics=2, id2word=dictionary, passes=10)

# 주요 주제 확인
topics = lda_model.show_topics(num_topics=2, num_words=5)
for topic in topics:
    print(topic)

위 코드에서 num_topics 파라미터는 추출할 주요 주제의 개수를 지정합니다. num_words 파라미터는 각 주제에서 표시할 단어의 개수를 지정합니다.

결론

이번 포스트에서는 Python을 사용하여 주요 주제 추출 기법을 구현하는 방법에 대해 살펴보았습니다. 주요 주제 추출은 다양한 분야에서 유용하게 활용되며, 자연어 처리 기법 중 하나입니다. 이를 통해 텍스트 데이터를 다른 차원에서 분석하고 유의미한 정보를 추출할 수 있습니다. 기본적인 방법은 소개하였지만, 해당 기법에는 다양한 변형과 확장이 존재하므로 추가적인 학습과 연구가 필요합니다.