자연어 처리(NLP)에서 텍스트 데이터를 컴퓨터가 이해하도록 처리하려면, 언어를 숫자로 변환해야 합니다. 컴퓨터는 숫자와 수학적 계산을 처리하는 데 뛰어난 능력을 가지고 있지만, 사람이 사용하는 언어인 문자나 단어는 바로 이해하지 못합니다. 그래서 텍스트 데이터를 **벡터(vector)**라는 숫자 배열로 변환하는 과정이 필요합니다. 이 장에서는 텍스트를 숫자로 변환하는 방법, 특히 단어 임베딩(Word Embedding)과 텍스트 벡터화(Text Vectorization)에 대해 배워보겠습니다.

5.1. 단어 임베딩이란?

텍스트를 컴퓨터가 처리하려면, 단어나 문장을 수학적으로 표현해야 합니다. 이때 벡터화는 단어를 일정한 길이의 숫자 배열로 변환하여, 컴퓨터가 이를 기반으로 연산을 수행할 수 있도록 하는 과정입니다. 텍스트 벡터화는 단순히 문자를 숫자로 변환하는 것을 넘어서, 단어들 사이의 의미적 관계와 문맥 정보를 수학적으로 표현합니다.

단순히 단어를 숫자로 변환하는 방식은 여러 가지 한계를 가질 수 있습니다. 예를 들어, 가장 기본적인 Bag-of-Words 모델은 단어의 등장 여부만을 확인하거나 단순 빈도를 계산합니다. 그러나 이는 단어의 순서나 의미를 반영하지 못합니다. 예를 들어 다음 두 문장을 생각해봅시다:

  1. "저는 책을 좋아합니다."
  2. "저는 책을 싫어합니다."

Bag-of-Words 방식으로 처리하면, 두 문장은 단어의 빈도가 비슷하기 때문에 의미의 차이를 반영하지 못합니다. 하지만 단어 임베딩을 사용하면, 단어 간의 의미적 유사성(좋아하다 vs 싫어하다)을 벡터 공간에서 수학적으로 나타낼 수 있습니다. 단어 임베딩은 단어를 고정된 크기의 벡터로 변환하여, 단어 간의 의미적 관계를 벡터 공간에서 표현할 수 있습니다. 예를 들어, '왕(king)'과 '여왕(queen)'은 서로 유사한 위치에 있지만, 성별 정보는 벡터 차이로 나타납니다. 이는 언어의 의미적 특성을 반영한 수학적 표현 방식입니다.

5.2. 텍스트 벡터화 방법

텍스트 데이터를 벡터로 변환하는 방법에는 여러 가지가 있습니다. 이 장에서는 대표적인 세 가지 방식인 Bag-of-Words (BoW), TF-IDF, 그리고 Word2Vec에 대해 자세히 알아보겠습니다. 각각의 방법은 텍스트를 처리하고 분석하는 데 목적과 장단점이 다르므로, 상황에 맞게 적절한 방식을 선택하는 것이 중요합니다.

  1. Bag-of-Words (BoW) 모델

    텍스트 벡터화의 가장 기본적인 방법으로, 문장을 구성하는 모든 단어의 빈도를 세어 숫자로 표현하는 방식입니다.

    이 방법에서는 단어가 텍스트에 나타나는 횟수만을 고려하며, 단어의 순서나 의미는 전혀 반영되지 않습니다. 예를 들어, "책이 재미있다"와 "책이 어렵다"라는 두 문장이 있을 때, '책이', '재미있다', '어렵다'라는 단어 목록을 기준으로 각 문장을 벡터로 표현할 수 있습니다. 첫 번째 문장은 [1, 1, 0], 두 번째 문장은 [1, 0, 1]로 나타낼 수 있습니다. 이 방법은 간단하고 빠르지만, 단어의 순서나 문맥적 정보를 고려하지 못해 의미를 반영하기 어렵다는 한계가 있습니다.

  2. TF-IDF (Term Frequency-Inverse Document Frequency)

    Bag-of-Words 모델의 단점을 보완하기 위해 고안된 방식입니다. TF-IDF는 특정 단어가 한 문서에서 얼마나 자주 등장하는지(Term Frequency, TF)와, 전체 문서에서 얼마나 드물게 등장하는지(Inverse Document Frequency, IDF)를 결합하여 가중치를 부여합니다.

    이 방식은 모든 문서에서 자주 등장하는 단어(예: 불용어)보다, 특정 문서에서만 주로 사용되는 단어에 더 높은 점수를 부여합니다. 예를 들어, "책이 재미있다"와 "책이 어렵다"라는 두 문장에서 '책이'는 두 문장 모두에 등장하지만, '재미있다'와 '어렵다'는 각각의 문서에서만 사용되므로 더 중요한 단어로 간주될 수 있습니다. TF-IDF는 불필요한 단어의 영향을 줄이고, 텍스트의 핵심 내용을 더 잘 반영할 수 있다는 장점이 있습니다. 하지만 단어의 순서나 문맥을 여전히 반영하지 못한다는 단점이 있습니다.

  3. Word2Vec

    단어의 의미적 관계를 벡터 공간에서 표현하는 단어 임베딩 기술입니다. 이 방법은 단어의 사용 문맥을 학습하여, 단어 간의 유사성을 반영하는 벡터를 생성합니다.

    Word2Vec에는 **Skip-Gram** 모델과 **CBOW** (Continuous Bag-of-Words) 모델이라는 두 가지 주요 학습 방식이 있습니다. Skip-Gram 모델은 주어진 단어를 중심으로 주변 단어를 예측하는 방식이고, CBOW 모델은 주변 단어를 바탕으로 중심 단어를 예측하는 방식입니다. 예를 들어, '책'이라는 단어가 벡터 [0.12, -0.34, 0.56, ...]로 표현된다면, '책'과 의미적으로 유사한 단어인 '소설'이나 '도서'도 비슷한 벡터를 가질 가능성이 높습니다. Word2Vec은 단어 간의 의미적 유사성을 벡터로 수학적으로 표현할 수 있다는 점에서 매우 강력한 도구입니다.

위의 세 가지 방식은 텍스트 데이터를 벡터로 변환할 때 유용하게 활용됩니다. Bag-of-Words와 TF-IDF는 주로 텍스트에서 단어의 빈도나 중요도를 반영하는 데 사용되고, Word2Vec은 단어 간의 의미적 관계와 문맥적 정보를 반영하는 데 적합합니다. 각 방법은 분석 목적에 따라 선택하여 사용됩니다.

5.3. 실습

이번 실습에서는 텍스트 데이터를 벡터로 변환하는 다양한 방법을 실제로 구현해 보겠습니다. 이 실습은 텍스트 데이터를 처리하고, 텍스트 벡터화를 통해 중요한 정보를 추출하거나 분석에 사용할 수 있는 벡터를 만드는 과정을 다룹니다. 특히, TF-IDF와 Word2Vec 방식을 사용하여 각각의 결과를 비교해 보겠습니다.