본문 바로가기
NLP

03. Bag-of-words

by devmin67 2024. 10. 10.

Bag-of-Words(BoW) 방식은 텍스트 데이터를 수치적으로 표현하는 매우 간단한 방법 중 하나입니다. 이 방식은 주어진 문서나 텍스트에서 단어의 출현 여부 또는 출현 빈도를 바탕으로 텍스트를 벡터 형태로 변환합니다.

BoW의 주요 특징:

  1. 단어 순서 무시: 텍스트에서 단어의 순서는 고려되지 않습니다. 즉, 문서 내 단어들이 어떤 순서로 배치되어 있는지는 중요하지 않고, 단지 그 단어가 해당 문서에 존재하는지, 몇 번 등장했는지만 따집니다.
  2. 단어 빈도 사용: 각 문서에 등장하는 단어들의 빈도를 카운팅하여 벡터로 표현합니다. 예를 들어, 두 문서가 있을 때, 각 문서에서 등장하는 단어의 빈도를 세어 수치로 변환합니다.
  3. 고정 크기의 벡터: 문서가 아무리 길거나 짧더라도, 사전에 정의된 고정된 크기의 벡터로 변환됩니다. 이는 텍스트 데이터에 등장하는 모든 고유 단어들의 집합, 즉 "단어 사전"을 기준으로 문서가 벡터화되기 때문입니다.

예시:

두 문장이 있다고 가정해 봅시다.

  • 문장 1: "I love programming."
  • 문장 2: "I love AI and programming."

이 두 문장을 BoW 방식으로 벡터화하려면, 먼저 이 문서들이 사용하는 단어들의 집합을 만듭니다:

  • [I, love, programming, AI, and]

그러면 문장들을 다음과 같이 벡터로 표현할 수 있습니다:

  • 문장 1: [1, 1, 1, 0, 0] (문장 1에는 "I", "love", "programming"이 있으므로 각 단어 위치에 1을 넣고, 없으면 0을 넣습니다.)
  • 문장 2: [1, 1, 1, 1, 1] (문장 2에는 모든 단어가 등장하므로 각 단어 위치에 1을 넣습니다.)

이처럼, BoW는 단어의 빈도를 반영해 문장을 벡터로 바꿔 줍니다.

장점:

  • 구현이 간단하고 직관적입니다.
  • 자연어 처리를 위한 기초적인 방식으로 널리 사용됩니다.

단점:

  • 단어의 순서나 문맥을 전혀 고려하지 못합니다.
  • 희소 행렬(sparse matrix) 문제: 매우 많은 단어들로 구성된 큰 문서들이 있으면 대부분의 값이 0인 벡터가 될 수 있습니다.
  • 단어의 중요도를 단순히 빈도로만 평가하므로, 의미를 충분히 반영하지 못할 수 있습니다.

보완 방법으로는 TF-IDF(Term Frequency-Inverse Document Frequency)와 같은 방식이 사용될 수 있습니다.

'NLP' 카테고리의 다른 글

Langchain  (0) 2024.10.11
04. sequence-to-sequence  (0) 2024.10.10
02. END-TO-END Deep learning Model(종단 간 학습 모델)  (0) 2024.10.10
01. Classical vs Deep Learning Model  (0) 2024.10.10