728x90
반응형
SMALL

 

단어 단위 토큰화(Word - based Tokenization) 이란 ?

단위 단위 토큰화는 문장을 공백(whitespace) 또는 구분자 기준으로 나누어 각각의 단어를 하나의 토큰으로 처리하는 방식이다. 

가장  직관적이고 이해하기 쉬운 토큰화 방법으로, 자연어 처리의 초기 단계에서 널리 사용되었다. 

 

 

예시 : 

I love an apple.

-> ["I", "love", "an", "apple', "."]

 

작동 방식 : 단어 사전 (Vocabulary) 만들기

우리가 가진 데이터셋에 등장하는 모든 고유한 단어들을 모아 단어 사전을 구축하게 된다.

  1. 수집 : 전체 텍스트에서 중복을 제거한 단어 리스트를 만든다. 
  2. 인덱싱 : 각 단어에 고유한 숫자(ID) 를 부여한다. 
  3. 변환 : 이제 모델에 문장을 넣을 때, 단어들을 사전의 인덱스 숫자로 전달한다. 

 

장점 : 직관성과 단순성

  • 이해하기 쉬움 : 사람이 글을 읽는 방식과 가장 유사하여 데이터 전처리 과정을 직관적으로 파악할 수 있다. 
  • 의미 보존 : 단어 자체가 하나의 토큰이 되므로, 토큰 하나하나가 독립적으로 명확한 의미를 가진다. 

 

한계점

  1. OOV ( out - of - Vocabulary) 문제
    사전에 등록되지 않은 단어가 나타나면 모델은 이를 "알수 없음 ()"으로 처리한다. 
  2. 단어수 폭발 (Vocabulary Explosion)
    모든 단어를 개별 토큰으로 관리해야 하기 때문에 어휘 수가 기하급수적으로 증가한다. 
  3. 형태 변화 대응 어려움 
    단어의 형태가 조금만 바뀌어도 다른 토큰으로 인식된다. 
    예 : 
    run / runs/ running -> 모두 다른 토큰

언제 사용하면 좋을 까 ?

  • 간단한 텍스트 처리
  • 전통적인 NLP 모델
  • 빠른 프로토타입 제작

파이썬 코드

# 아주 간단한 형태
text = "I love deep learning and learning is fun."
words = text.lower().replace(".", "").split()

# 중복 제거 후 사전(Vocabulary) 구축
vocab = {word: i for i, word in enumerate(set(words))}

print(f"생성된 단어 사전: {vocab}")

 

요약

단어 단위 토크화는  직관적이지만 유연성이 부족합니다. 이 문제를 해결하기 위해 등장한 것이 바로 글자 단위(Character-based)와 현재 가장 널리 쓰이는 서브워드(Subword) 방식입니다.

 

제미나이, 챗지피티 등을 이용 하여 작성 

728x90
반응형

+ Recent posts