3.3 텍스트의 통계적 압축: Bag-of-Words(BoW)와 DTM 구조
앞서 배운 원-핫 인코딩(One-hot Encoding)이 단어 1개를 고유한 차원의 벡터로 치환하는 기초적인 매핑 기법이었다면, 이제는 단어들의 집합인 하나의 긴 텍스트 ‘문서(Document)’ 전체를 거대한 숫자의 배열로 정량화하여 압축하는 통계적 언어 모델링의 시초를 학습합니다.
이것이 고전 자연어 처리(NLP)를 대표하는 Bag-of-Words(BoW)와 문서-단어 행렬(DTM) 기법입니다.
3.3.1 Bag-of-Words (BoW) 모델의 기본 개념
Bag-of-Words(단어 가방)는 이름 그대로 문장이나 문서를 단어들이 무작위로 섞여 있는 ‘가방’으로 취급하는 수학적 표현 모델입니다.
이 모델의 가장 핵심적인 전제는 텍스트에 내재된 문법 구조, 시계열적인 단어의 순서, 그리고 문맥적 뉘앙스를 기계적으로 완전히 배제한다는 점입니다. 오로지 해당 텍스트 내에 특정 단어가 ‘절대적으로 몇 번 등장하였는가(출현 빈도수, Frequency Count)’ 만을 계량화하여 수치적 벡터로 표기합니다.
언어학적 정교함은 일부 희생되지만 통계적 처리 절차가 매우 직관적이고 연산 효율성이 뛰어나다는 공학적 강점을 가집니다.
[!NOTE]
💡 BoW 모델의 분석 원리: 순서 독립성 (Permutation Invariance)
“나는 사과가 너무 달아서 싫다”라는 문장을 인간이 분석할 때는 주어와 서술어의 위치 등 문장 구조가 핵심적인 역할을 합니다.
하지만 BoW 모델은 모든 단어(‘나’, ‘는’, ‘사과’, ‘가’, ‘너무’, ‘달아서’, ‘싫다’)를 거대한 집합 공간(가방) 안에 해체해 넣고 섞어버립니다. 문법적 결합 관계는 소멸하지만, 시스템은 최종적으로 개별 단어의 절대적 빈도수라는 통계적 데이터만을 추출해 냅니다. 기계 입장에서는 “긍정어 2회 빈도, 부정어 1회 빈도” 등 횟수 수치만을 취합하여 해당 문서의 전반적인 성향과 주제를 대략적으로 유추할 수 있는 유효한 분류 지표를 얻게 됩니다.
3.3.2 BoW 체계를 이용한 문서 차원의 벡터 압축
원-핫 인코딩 시스템이 개별 단어를 매핑하는 데 국한되었다면, BoW 체계는 방대한 페이지 분량의 책이나 대규모 뉴스 기사 전체의 텍스트 내용을 단 하나의 1차원 빈도수 벡터(Term Frequency Vector) 로 매핑하여 압축할 수 있습니다.
\(\text{Document Vector} = [6, 3, 2, 0, 1, \dots, 5]\) (예: 전체 단어 사전을 기준으로 1번 인덱스 단어가 6회 출현, 2번 ‘사과’가 3회 출현, 4번 인덱스는 출현하지 않음을 의미하는 1차원 수열 공간 구조)
이렇게 문서 내 단어들의 빈도 분포(밀도)를 계량화한 벡터들을 확보하면, 서로 다른 두 문서 간의 내적이나 코사인 거리를 계산하여 주제가 유사한 텍스트를 분류할 수 있습니다. 이는 과거 추천 시스템이나 정보 검색(Information Retrieval) 분야에서 가장 기초적이고 널리 사용되었던 ‘콘텐츠 기반 유사도 분석 알고리즘’의 핵심 수리적 기반이었습니다.
3.3.3 문서-단어 행렬 (Document-Term Matrix, DTM)
1개의 단일 문서를 BoW 벡터로 변환하는 방식을 전방위적으로 확장하여, 수천에서 수십만 개의 방대한 문서 집합(Corpus)을 한 번에 동시에 분석하기 위해 구축하는 거대한 2차원 교차 테이블을 문서-단어 행렬(DTM) 이라고 정의합니다.
DTM 환경에서는 세로축 행(Row) 자리에 각각의 ‘문서(Document)’ 들이 도열하고, 가로축 열(Column) 자리에 시스템 단어 사전의 모든 ‘단어(Term)’ 들이 나열됩니다. 두 축이 교차하는 내부 좌표 공간의 특정 셀 $(i, j)$ 의 값은 문서 $i$ 내에서 단어 $j$ 가 출현한 빈도 횟수를 의미합니다.
수학적 기호로 표현된 DTM 2차원 대수 행렬은 다음과 같은 모습을 지닙니다.
\(D_{N \times V} = \begin{pmatrix} 1 & 0 & 2 & \cdots & 0 \\ 0 & 3 & 1 & \cdots & 1 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 5 & \cdots & 2 \end{pmatrix}\) (단, $N$은 수집된 문서의 총 개수, $V$는 단어 사전의 전체 차원 크기)
3.3.4 DTM의 구조적 한계: 메모리 비효율성과 차원의 저주
DTM은 대규모 문서 분류와 통계적 상관관계 파악을 일괄적으로 가능케 하는 강력한 데이터 매트릭스지만, 하부 구조가 원-핫 벡터 모델의 연장선상에 자리 잡고 있으므로 구조적 희소성(Sparsity) 으로 인한 치명적인 시스템적 한계를 회피할 수 없습니다.
테이블 설계 시 가로축(열)의 길이는 전 세계의 식별 가능한 모든 단어를 합친 Vocabulary 단어 사전 사이즈로 항상 거대하게 고정되어야만 합니다. 예를 들어 시스템의 전체 단어 공간이 10만 개의 차원으로 구성되어 있다고 가정해 보겠습니다.
[!CAUTION]
💡 메모리 소진과 희소 행렬 (Sparse Matrix)의 맹점
오늘 신규로 수집된 짧은 단어 50개짜리 짤막한 웹 뉴스 기사 1개를 이 시스템 데이터베이스에 저장하려면, 운영체제는 어쩔 수 없이 DTM 보드 상에 10만 칸짜리 거대 데이터 리스트를 강제로 1줄(Row) 추가로 풀 할당해야 합니다.실제 유의미한 카운트 정보(1 이상의 숫자)가 저장되는 활성 빈도는 고작 50칸에 불과하며, 나머지 99,950개의 막대한 잉여 공간에는 문서에 등장하지 않은 기타 단어들을 의미하는 소거성
0데이터 가 불필요하게 낭비되며 영구적으로 기록됩니다.이처럼 매트릭스의 내부 값 중 압도적 다수가 영(0)으로 이루어진 매트릭스를 희소 행렬(Sparse Matrix) 이라고 부릅니다. 이러한 희소 특성은 행렬 내적 연산 속도를 기하급수적으로 저하시키고 컴퓨팅의 메모리 공간 복잡도(Space Complexity)를 비효율적으로 팽창시키는 치명적 병목 현상을 유발합니다.
DTM 문제점
하드웨어 레벨의 이 극심한 메모리 낭비 이슈보다 더 근본적인 문제는 따로 있습니다.
단어가 존재해 버젓이 수치가 입력된 유의미한 칸($1, 2, 3 \dots$) 내부에서도, 통계학을 근간부터 뒤흔드는 심각한 수리적 오류(가중치 배분 왜곡 현상)가 잠재되어 있다는 사실입니다.
그 숨겨진 최악의 맹점이 무엇인지 다음 장인 지프의 법칙(Zipf’s Law) 챕터에서 계속해서 자세히 논의하도록 하겠습니다.