728x90
반응형

카운트 기반 단어 표현: 텍스트 데이터 수치화 기법의 핵심

텍스트 데이터를 기계가 이해할 수 있는 수치 형태로 변환하는 방법 중 가장 기본적이면서도 핵심적인 접근법이 바로 카운트 기반 단어 표현(Count-based Word Representation)이다. 이는 자연어 처리(NLP)의 기초를 형성하는 중요한 개념으로, 단어의 출현 빈도를 기반으로 텍스트를 벡터 공간에 매핑하는 기법이다.

단어 표현의 두 가지 패러다임: 국소표현과 분산표현

국소표현(Local Representation)

  • 개별 단어를 독립적인 개체로 취급
  • 단어 간 의미적 관계나 뉘앙스 표현 불가
  • 이산표현(Discrete Representation)이라고도 함
  • 예시: One-Hot 인코딩, Bag of Words, DTM, TF-IDF

분산표현(Distributed Representation)

  • 단어의 의미를 다차원 벡터 공간에 분산하여 표현
  • 단어 간 의미적 유사성과 뉘앙스 표현 가능
  • 연속표현(Continuous Representation)이라고도 함
  • 예시: Word2Vec, FastText, GloVe, LSA

카운트 기반 방법론의 이해

Bag of Words(BoW)

  • 텍스트에 등장하는 단어의 빈도를 카운트하여 수치화
  • 단어의 순서나 문법적 구조 무시
  • 직관적이고 구현이 간단한 장점
  • 예시:
    "나는 사과를 좋아한다. 나는 바나나도 좋아한다."
    → {"나는": 2, "사과를": 1, "좋아한다": 2, "바나나도": 1}

문서-단어 행렬(Document Term Matrix, DTM)

  • BoW의 확장된 형태
  • 문서 집합(코퍼스)에서 각 문서를 행, 전체 등장 단어를 열로 하는 행렬 구성
  • 각 셀은 해당 문서에서 단어의 등장 빈도 표시
  • 대규모 코퍼스에서는 희소 행렬(sparse matrix)이 됨
graph LR
    A[문서 집합] --> B[단어 추출]
    B --> C[DTM 구성]
    C --> D[문서1: 단어1=2, 단어2=0, 단어3=1]
    C --> E[문서2: 단어1=1, 단어2=3, 단어3=0]

TF-IDF(Term Frequency-Inverse Document Frequency)

  • 단순 빈도수 기반의 BoW/DTM의 한계 보완

  • 단어의 중요도에 따른 가중치 부여

  • 문서 내 단어 빈도(TF)와 문서 빈도의 역수(IDF)를 곱한 값

  • 계산 방법:

    • TF(t,d) = 문서 d에서 단어 t의 등장 횟수
    • IDF(t) = log(전체 문서 수 / 단어 t가 등장한 문서 수)
    • TF-IDF(t,d) = TF(t,d) × IDF(t)
  • 특징:

    • 모든 문서에 공통적으로 자주 등장하는 단어(예: '그리고', '또한')의 중요도 감소
    • 특정 문서에서만 자주 등장하는 단어의 중요도 증가
    • 검색 엔진, 문서 분류, 주제 모델링 등에 널리 활용

국소표현의 한계와 분산표현의 등장

국소표현의 한계

  • 단어 간 의미적 관계 파악 불가
  • 희소성(sparsity) 문제: 대규모 어휘에서 고차원 희소 벡터 생성
  • 동의어(synonyms) 처리 불가: 다른 단어로 표현된 동일 개념 인식 못함
  • 다의어(polysemy) 처리 불가: 같은 단어, 다른 문맥의 의미 구분 못함
  • 예시: "bank"(은행 vs 강둑), "apple"(과일 vs 기업)의 의미 구분 불가

분산표현으로의 발전

카운트 기반에서도 분산표현이 가능한 방법론이 개발됨:

LSA(Latent Semantic Analysis, 잠재 의미 분석)

  • DTM에 특이값 분해(SVD)를 적용하여 차원 축소
  • 단어-문서 간 잠재적 의미 관계 포착
  • 전체 문서 집합 활용 (Full Document 접근법)

GloVe(Global Vectors for Word Representation)

  • 카운트 기반과 예측 기반의 장점을 결합
  • 단어 동시 등장(co-occurrence) 통계와 지역적 문맥 정보 활용
  • 윈도우(window) 기반 접근법으로 단어 주변 문맥 고려
flowchart TD
    A[텍스트 데이터] --> B[단어 표현 방식 선택]
    B --> C[국소표현]
    B --> D[분산표현]
    C --> E[One-Hot Vector]
    C --> F[N-gram]
    C --> G[Count-Based]
    G --> H[Bag of Words]
    G --> I[DTM]
    G --> J[TF-IDF]
    D --> K[Prediction-Based]
    D --> L[Count-Based]
    K --> M[Word2Vec]
    K --> N[FastText]
    L --> O[Full Document: LSA]
    L --> P[Windows: GloVe]

카운트 기반 단어 표현의 실제 구현 예시

Python을 이용한 BoW 구현

from sklearn.feature_extraction.text import CountVectorizer

# 예시 문서
corpus = [
    "나는 사과를 좋아한다.",
    "나는 바나나도 좋아한다.",
    "그는 사과를 싫어한다."
]

# CountVectorizer 객체 생성 및 적용
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)

# 어휘 사전 확인
print("어휘 사전:", vectorizer.get_feature_names_out())

# BoW 행렬 확인
print("BoW 행렬:\n", X.toarray())

출력 결과:

어휘 사전: ['그는' '나는' '바나나도' '사과를' '좋아한다' '싫어한다']
BoW 행렬:
 [[0 1 0 1 1 0]
  [0 1 1 0 1 0]
  [1 0 0 1 0 1]]

TF-IDF 구현

from sklearn.feature_extraction.text import TfidfVectorizer

# 예시 문서
corpus = [
    "나는 사과를 좋아한다.",
    "나는 바나나도 좋아한다.",
    "그는 사과를 싫어한다."
]

# TfidfVectorizer 객체 생성 및 적용
tfidf_vectorizer = TfidfVectorizer()
X_tfidf = tfidf_vectorizer.fit_transform(corpus)

# 어휘 사전 확인
print("어휘 사전:", tfidf_vectorizer.get_feature_names_out())

# TF-IDF 행렬 확인
print("TF-IDF 행렬:\n", X_tfidf.toarray())

카운트 기반 단어 표현의 활용 사례

문서 분류(Document Classification)

  • 스팸 메일 필터링: 특정 단어 패턴의 빈도로 스팸 여부 판단
  • 감성 분석(Sentiment Analysis): 긍정/부정 단어의 분포로 감성 판단
  • 주제 분류: 문서의 단어 분포를 기반으로 주제 카테고리 분류

정보 검색(Information Retrieval)

  • 검색 엔진: 쿼리와 문서 간 유사도 계산에 TF-IDF 활용
  • 문서 랭킹: 검색 결과의 문서들을 연관성에 따라 순위화

추천 시스템(Recommendation Systems)

  • 콘텐츠 기반 필터링: 사용자가 선호한 문서와 유사한 단어 분포를 가진 새로운 문서 추천
  • 아이템 유사도 측정: 상품 설명글의 단어 분포 기반 유사 상품 추천

주제 모델링(Topic Modeling)

  • LDA(Latent Dirichlet Allocation): DTM을 기반으로 문서에 잠재된 주제 추출
  • 자동 요약(Automatic Summarization): 중요 단어와 문장을 추출하여 문서 요약

카운트 기반 방법의 장단점

장점

  • 직관적이고 구현이 간단함
  • 계산 효율성이 높음
  • 해석 가능성(interpretability)이 높음
  • 작은 데이터셋에서도 비교적 잘 작동
  • 특정 응용(예: 정보 검색)에서는 여전히 강력한 성능 발휘

단점

  • 단어의 의미와 문맥을 고려하지 못함
  • 단어 순서 정보 손실
  • 희소성 문제(고차원 벡터 공간)
  • OOV(Out-of-Vocabulary) 문제: 학습 시 보지 못한 단어 처리 불가
  • 최신 딥러닝 기반 NLP 모델에 비해 성능 제한적

최신 트렌드와의 관계

현대 NLP에서는 BERT, GPT와 같은 트랜스포머 기반 모델이 주류를 이루고 있지만, 카운트 기반 단어 표현은 여전히 중요한 위치를 차지한다:

  • 기초 전처리 단계에서 활용
  • 계산 효율성이 중요한 실시간 응용에서 사용
  • 딥러닝 모델 학습을 위한 초기 특성 추출에 활용
  • 해석 가능성이 중요한 분야(의료, 법률 등)에서 여전히 선호됨
  • 텍스트 마이닝의 기본 원리로서 교육적 가치

카운트 기반 단어 표현은 단순하면서도 강력한 텍스트 분석의 기초를 제공하며, 현대 NLP 발전의 초석이 되었다. 최신 딥러닝 기반 방법론과 병행하여 사용될 때 더욱 효과적인 결과를 얻을 수 있다.

Keywords

Count-based Word Representation, 카운트 기반 단어 표현, Bag of Words, TF-IDF, Document Term Matrix, 국소표현, 분산표현, 자연어처리, NLP, 텍스트 마이닝

728x90
반응형

+ Recent posts