[파이썬] 문장 임베딩과 문서 임베딩

기계 학습에서 문장 임베딩과 문서 임베딩은 텍스트 데이터를 벡터로 표현하는 기술이다. 이 글에서는 Python을 사용하여 문장 임베딩과 문서 임베딩을 만드는 방법을 알아보겠다.

문장 임베딩

문장 임베딩은 텍스트 문장을 고정 크기의 벡터로 표현하는 기술이다.

가장 일반적인 방법 중 하나는 Word2Vec을 사용하는 것이다. Word2Vec은 단어들을 벡터로 표현하고, 이를 조합하여 문장을 표현한다. Python에서는 Gensim 패키지를 사용하여 Word2Vec 모델을 구축할 수 있다. 아래는 예시 코드이다:

import gensim

# 문장 데이터
sentences = [
    ['나는', '사과를', '좋아한다'],
    ['나는', '바나나를', '좋아한다'],
    ['나는', '사과를', '싫어한다'],
    ['나는', '바나나를', '싫어한다']
]

# Word2Vec 모델 구축
model = gensim.models.Word2Vec(sentences, min_count=1)

위의 코드에서는 ‘나는’, ‘사과를’, ‘좋아한다’, ‘바나나를’, ‘싫어한다’라는 단어들로 이루어진 문장 데이터가 있다. 이 데이터를 활용하여 Word2Vec 모델을 구축한다. 모델 생성 후에는 단어들의 벡터를 얻을 수 있다.

# 단어 벡터 확인
apple_vector = model.wv['사과를']

print(apple_vector)

위의 코드에서는 ‘사과를’와 관련된 단어 벡터를 얻는다. 이러한 단어 벡터는 문장 임베딩을 구성하는데 활용될 수 있다.

문서 임베딩

문서 임베딩은 텍스트 문서를 고정 크기의 벡터로 표현하는 기술이다.

한 가지 널리 사용되는 방법은 TF-IDF (Term Frequency-Inverse Document Frequency)를 활용하는 것이다. Python에서는 scikit-learn 패키지에서 제공하는 TfidfVectorizer를 사용하여 문서를 벡터로 변환할 수 있다. 아래는 예시 코드이다:

from sklearn.feature_extraction.text import TfidfVectorizer

# 문서 데이터
documents = [
    '나는 사과를 좋아한다',
    '나는 바나나를 좋아한다',
    '나는 사과를 싫어한다',
    '나는 바나나를 싫어한다'
]

# TfidfVectorizer를 사용하여 문서를 벡터로 변환
vectorizer = TfidfVectorizer()
document_vectors = vectorizer.fit_transform(documents)

print(document_vectors.toarray())

위의 코드에서는 ‘나는 사과를 좋아한다’, ‘나는 바나나를 좋아한다’, ‘나는 사과를 싫어한다’, ‘나는 바나나를 싫어한다’라는 문서 데이터가 있다. 이 데이터를 TfidfVectorizer를 사용하여 벡터로 변환한다. 변환된 벡터는 문서 임베딩을 표현하는데 사용될 수 있다.

결론

문장 임베딩과 문서 임베딩은 텍스트 데이터를 벡터로 표현하는 기술로서, 기계 학습에서 다양한 응용 분야에 활용된다. Python에서는 Word2Vec과 TF-IDF를 활용하여 문장과 문서를 임베딩하는 방법을 쉽게 구현할 수 있다. 이를 통해 텍스트 데이터의 특징을 추출하고 문장 또는 문서 간의 유사성을 측정할 수 있다.