[python] gensim을 활용한 문서 임베딩 방법

Gensim은 Python에서 자연어 처리를 위한 라이브러리로, 단어와 문서를 벡터로 표현하는 방법을 제공합니다. 이번 포스트에서는 Gensim을 사용하여 문서를 벡터로 임베딩하는 방법에 대해 알아보겠습니다.

1. Gensim이란?

Gensim은 Python을 위한 오픈 소스 라이브러리로, 토픽 모델링 및 자연어 처리를 위한 다양한 기능을 제공합니다. 이를 통해 단어와 문서를 수학적으로 표현하여 유사성 측정, 검색 및 분류 작업에 활용할 수 있습니다.

2. 문서 임베딩 방법

2.1 토픽 모델링을 통한 문서 임베딩

Gensim은 Latent Dirichlet Allocation(LDA)과 같은 토픽 모델링 알고리즘을 제공하여, 문서를 토픽 공간으로 임베딩할 수 있습니다. 이를 통해 각 문서를 토픽 벡터로 표현할 수 있으며, 이러한 토픽 벡터는 각각의 토픽을 나타내는 단어 분포와 결합하여 생성됩니다.

from gensim import corpora, models

# 문서 전처리 및 단어 사전 구성
dictionary = corpora.Dictionary(documents)
corpus = [dictionary.doc2bow(doc) for doc in documents]

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

# 각 문서를 토픽 벡터로 변환
document_topic_vector = lda_model[corpus]

2.2 단어 임베딩 및 평균을 통한 문서 임베딩

또 다른 방법은 단어 임베딩 기법을 사용하여 각 단어를 벡터로 표현하고, 이를 평균하여 문서를 벡터로 임베딩하는 것입니다. 이는 단어 임베딩 모델로 Word2Vec이나 GloVe를 이용할 수 있습니다.

from gensim.models import Word2Vec

# 단어 임베딩 모델 학습
word_embedding_model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4)

# 각 문서를 단어 벡터로 변환하여 평균 계산
document_vectors = []
for doc in documents:
    doc_vector = sum([word_embedding_model.wv[word] for word in doc]) / len(doc)
    document_vectors.append(doc_vector)

3. 결론

Gensim을 사용하여 문서를 벡터로 임베딩하는 방법에 대해 알아보았습니다. 이러한 임베딩을 통해 문서 간 유사성을 측정하거나 다양한 자연어 처리 작업에 활용할 수 있습니다.

참고문헌: