[파이썬] Gensim Doc2Vec 모델 생성 및 학습

Gensim은 Python에서 사용할 수 있는 자연어 처리 도구 중 하나입니다. 이 도구는 Word2Vec과 함께 벡터 공간 모델을 생성하고 텍스트 데이터를 처리하는 데 유용한 기능을 제공합니다.

이번 튜토리얼에서는 Gensim을 사용하여 Doc2Vec 모델을 생성하고 학습하는 방법에 대해 알아보겠습니다. Doc2Vec은 문서를 벡터로 변환하여 유사한 문서를 찾을 수 있게 해주는 모델입니다.

환경 설정

먼저, Gensim 모듈과 필요한 다른 라이브러리들을 설치해야 합니다. 아래의 명령어를 사용하여 필요한 패키지를 설치하세요.

pip install gensim
pip install numpy
pip install pandas

데이터 로딩

Doc2Vec 모델을 학습시키기 위해서는 먼저 학습 데이터를 로딩해야 합니다. 여기에서는 예시로 영화 리뷰 데이터셋을 사용하겠습니다.

import pandas as pd

# 데이터 로딩
data = pd.read_csv("reviews.csv")

# 필요한 컬럼만 선택
docs = data["review_text"].tolist()

텍스트 전처리

Doc2Vec 모델을 학습시키기 전에 텍스트 데이터를 전처리해야 합니다. 이 단계에서는 토큰화, 불용어 제거, 대소문자 변환 등을 수행할 수 있습니다. 아래의 예제는 Gensim의 simple_preprocess 함수를 사용하여 텍스트를 토큰화하는 예제입니다.

from gensim.utils import simple_preprocess

# 텍스트 토큰화
tokenized_docs = [simple_preprocess(doc) for doc in docs]

Doc2Vec 모델 생성 및 학습

이제 전처리된 텍스트 데이터를 사용하여 Doc2Vec 모델을 생성하고 학습할 수 있습니다.

from gensim.models import Doc2Vec
from gensim.models.doc2vec import TaggedDocument

# TaggedDocument 객체 생성
tagged_docs = [TaggedDocument(doc, [i]) for i, doc in enumerate(tokenized_docs)]

# Doc2Vec 모델 생성
model = Doc2Vec(vector_size=300, min_count=2, epochs=40)

# 모델 학습
model.build_vocab(tagged_docs)
model.train(tagged_docs, total_examples=model.corpus_count, epochs=model.epochs)

위의 예제에서는 vector_size를 300으로 설정하고, min_count를 2로 설정하여 등장 빈도가 낮은 단어들을 제거하였습니다. epochs는 모델 학습 횟수를 의미합니다. 이러한 설정은 사용자의 요구사항에 따라 변경할 수 있습니다.

유사한 문서 찾기

Doc2Vec 모델을 학습시킨 후에는 유사한 문서를 찾을 수 있습니다. 예를 들어, 특정 문서와 가장 비슷한 문서를 찾아보겠습니다.

# 가장 유사한 문서 찾기
similar_docs = model.docvecs.most_similar(0)

위의 예제는 첫 번째 문서와 가장 유사한 문서를 찾는 예제입니다.

결론

Gensim을 사용하여 Doc2Vec 모델을 생성하고 학습하는 방법에 대해 알아보았습니다. 이를 통해 텍스트 데이터를 벡터로 변환하여 유사한 문서를 찾을 수 있습니다. Gensim은 높은 수준의 추상화를 제공하기 때문에 사용자가 복잡한 자연어 처리 작업을 간단하게 수행할 수 있습니다.