Bag-of-Words(BoW) 방식은 텍스트 데이터를 수치적으로 표현하는 매우 간단한 방법 중 하나입니다. 이 방식은 주어진 문서나 텍스트에서 단어의 출현 여부 또는 출현 빈도를 바탕으로 텍스트를 벡터 형태로 변환합니다.
BoW의 주요 특징:
- 단어 순서 무시: 텍스트에서 단어의 순서는 고려되지 않습니다. 즉, 문서 내 단어들이 어떤 순서로 배치되어 있는지는 중요하지 않고, 단지 그 단어가 해당 문서에 존재하는지, 몇 번 등장했는지만 따집니다.
- 단어 빈도 사용: 각 문서에 등장하는 단어들의 빈도를 카운팅하여 벡터로 표현합니다. 예를 들어, 두 문서가 있을 때, 각 문서에서 등장하는 단어의 빈도를 세어 수치로 변환합니다.
- 고정 크기의 벡터: 문서가 아무리 길거나 짧더라도, 사전에 정의된 고정된 크기의 벡터로 변환됩니다. 이는 텍스트 데이터에 등장하는 모든 고유 단어들의 집합, 즉 "단어 사전"을 기준으로 문서가 벡터화되기 때문입니다.
예시:
두 문장이 있다고 가정해 봅시다.
- 문장 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 |