NLP 분류 문제의 최소 구조
텍스트 분류를 최소 구조로 환원해 표현·모델 선택 기준을 정리한 NLP 기준서
Posted
By okorion
NLP 분류 문제의 최소 구조
이 프로젝트는 NLP를 복잡한 모델링 영역이 아니라
분류 문제로 환원했을 때 남는 최소 구조를 고정하기 위한 기준점이다.
Naive Bayes 스팸 필터는 성능이 아니라
NLP 사고 흐름의 하한선을 보여준다.
텍스트 분류 문제 정의
텍스트 분류의 본질은 단순하다.
- 입력: 문자열
- 출력: 클래스
- 핵심 문제: 문자를 어떻게 숫자로 바꿀 것인가
이미지와 달리:
- 텍스트에는 공간 구조가 없다
- 순서 정보는 쉽게 깨진다
- 모델보다 표현 방식이 성패를 좌우한다
👉 NLP 분류는
“언어 문제”가 아니라 “표현 문제”다.
Count Vectorizer의 역할
왜 필요한가
- 모델은 문자열을 직접 처리하지 못한다
- 단어 출현을 고정 길이 벡터로 변환해야 한다
- 가장 단순한 방법이 빈도 기반 표현이다
역할 요약:
- 문서 → 단어 집합
- 단어 → 카운트
- 문서 → 숫자 벡터
👉 Count Vectorizer는
텍스트를 통계 문제로 바꾸는 장치다.
무엇을 잃는지
- 단어 순서
- 문맥
- 의미적 유사성
즉:
- “좋다”와 “아주 좋다”의 차이
- “싫지 않다”의 반어적 의미
이런 정보는 모두 사라진다.
👉 이 손실을 감수할 수 있을 때만 유효하다.
Naive Bayes를 선택한 이유
이 문제에서 충분한 이유
- 스팸 필터는 단어 존재 자체가 강한 신호
- 단어 간 복잡한 상호작용이 필요 없음
- 빠르고 해석 가능
핵심 판단:
- 복잡한 모델이 필요한 문제가 아니다
- 데이터 표현이 이미 대부분의 정보를 담고 있다
👉 Naive Bayes는
“이 정도면 충분하다”의 기준선이다.
이 구조의 한계
언제 깨지는가
- 문맥이 중요한 경우
- 단어 조합이 의미를 바꾸는 경우
- 표현이 중의적인 경우
대표 신호:
- 리뷰 감성 분석
- 풍자·반어
- 긴 문장 기반 판단
👉 이 한계를 넘는 순간,
문제는 더 이상 ‘단순 NLP 분류’가 아니다.
최소 흐름 템플릿
1
2
3
4
text_data
→ vectorize(count)
→ train(classifier)
→ evaluate()
이 흐름이 통하지 않는다면:
- 모델이 아니라
- 문제 정의나 표현 방식을 의심해야 한다.
This post is licensed under CC BY 4.0 by the author.
