Gensim을 활용하여 문서 분류 모델 개발하기

Gensim은 자연어 처리를 위한 파이썬 라이브러리로, 문서 분류와 토픽 모델링을 수행하는 데에 많이 사용됩니다. 이번 블로그 포스트에서는 Gensim을 활용하여 문서 분류 모델을 개발하는 방법에 대해 알아보겠습니다.

1. 데이터 전처리

문서 분류를 위해서는 먼저 데이터를 적절하게 전처리해야 합니다. 예를 들어, 텍스트 데이터에서 불필요한 문자를 제거하고 단어를 토큰화하는 등의 작업을 수행해야 합니다. 이를 위해 NLTK나 KoNLPy 등의 텍스트 처리 도구를 사용할 수 있습니다.

2. Word2Vec 모델 학습

Gensim의 Word2Vec 모델을 사용하여 문서를 벡터로 임베딩할 수 있습니다. Word2Vec은 단어 간의 의미적 관계를 이해하는 데에 용이하며, 문서의 의미를 잘 반영할 수 있는 임베딩 공간을 만들어줍니다. 학습에는 대량의 텍스트 데이터가 필요하므로, 적절한 말뭉치를 사용하여 모델을 학습시켜야 합니다.

from gensim.models import Word2Vec

# 텍스트 데이터를 준비한다.
sentences = [["I", "love", "natural", "language", "processing"],
             ["Gensim", "is", "a", "great", "library"],
             ["Document", "classification", "is", "important"],
             ["Text", "preprocessing", "is", "crucial"]]

# Word2Vec 모델을 학습한다.
model = Word2Vec(sentences, size=100, window=5, min_count=1, workers=4)

3. 문서 벡터 생성

학습된 Word2Vec 모델을 사용하여 문서를 벡터로 변환할 수 있습니다. 문서 내 단어 벡터의 평균을 구하거나, TF-IDF와 같은 가중치를 적용할 수도 있습니다.

from gensim import matutils

# 문서를 벡터로 변환한다.
document = ["Text", "processing", "is", "an", "important", "task"]
document_vector = matutils.unitvec(model.infer_vector(document))

print(document_vector)

4. 분류 모델 학습

문서 벡터를 생성한 후, 분류 모델을 학습할 수 있습니다. 분류 모델로는 SVM, Naive Bayes, Random Forest 등을 사용할 수 있습니다. sklearn의 분류 모델을 이용하면 편리하게 구현할 수 있습니다.

from sklearn import svm
from sklearn.model_selection import train_test_split

# 문서 벡터를 가져온다.
document_vectors = [matutils.unitvec(model.infer_vector(doc)) for doc in documents]

# 레이블을 준비한다.
labels = [0, 1, 0, 1, 0, 1]

# 학습용 데이터와 테스트용 데이터로 분리한다.
X_train, X_test, y_train, y_test = train_test_split(document_vectors, labels, test_size=0.2)

# SVM 모델을 학습한다.
clf = svm.SVC()
clf.fit(X_train, y_train)

# 테스트 데이터로 성능을 평가한다.
accuracy = clf.score(X_test, y_test)
print("Accuracy:", accuracy)

위의 코드는 문서 분류 모델을 학습하고 성능을 평가하는 간단한 예시입니다.

Gensim을 사용하여 문서 분류 모델을 개발하는 방법에 대해 알아보았습니다. Gensim은 다양한 자연어 처리 작업에서 유용하게 활용할 수 있는 라이브러리입니다. 관심있는 분야에서 Gensim을 활용하여 모델을 개발해 보세요!