Subword Tokenizer

hyeony·2025년 7월 4일

NLP

목록 보기
8/12

1. Introduction

가. 서브워드 분리(Subword segmentation)의 개념

① 정의

  • 하나의 단어를 더 작은 의미 단위인 ‘서브워드(subword)’로 나누는 전처리 기법

  • 예: birthplacebirth + place

② 배경

  • 자연어의 어휘는 매우 방대하여, 모든 단어를 개별 토큰으로 다루기 어려움

  • 희귀 단어, 복합어, 파생어 처리 시 OOV(Out-Of-Vocabulary) 문제 발생

③ 목적

  • 어휘 크기(vocabulary size) 감소

  • 희귀 단어를 구성하는 서브워드 단위로 표현함으로써 일반화 성능 향상

  • 메모리 및 계산 효율성 제고

④ 장점

  • OOV 단어 처리: 훈련 시 등장하지 않은 단어라도 기존 서브워드 조합으로 표현 가능

  • 어휘 테이블 축소: 전체 단어장이 아닌 자주 등장하는 의미 단위(서브워드)로 어휘 구성

  • 언어 모델 일반화: 드문 단어가 “새로운 조합”으로 등장해도 모델이 의미를 파악

⑤ 작동 방식
ⓐ 통계 기반 분리

  • Byte-Pair Encoding(BPE), Unigram LM 등

  • 자주 등장하는 서브워드 쌍을 병합하는 방식

ⓑ 규칙 기반 분리

  • 언어적 지식을 활용하여 접두사·어근·접미사 단위로 분리

ⓒ 혼합 방식

  • 규칙과 통계를 조합하여 분리 정확도와 유연성 확보

⑥ 예시

원본 단어분리 결과설명
birthplacebirth + place합성어를 의미 단위로 분리
internationalizationinternation + al + ization긴 단어를 서브워드별로 분할
unfriendlinessun + friend + li + ness접두사, 어근, 접미사 단위로 분리

2. 주요 서브워드 토크나이저 알고리즘

가. 바이트 페어 인코딩(Byte Pair Encoding, BPE)

① BPE 알고리즘의 동작 방식

  • 초기 단어 집합을 글자(unigram) 단위로 분리

  • 코퍼스에서 가장 빈도 높은 연속 글자 쌍(pair)을 찾아 하나의 유니그램으로 병합

  • 위 과정을 원하는 병합 횟수(예: 10회)만큼 반복

② BPE를 통한 OOV(Out-Of-Vocabulary) 문제 해결

  • 미등록 단어(예: “lowest”)를 자주 등장하는 서브워드(“low” + “est”)로 분리

  • 모델이 전체 단어 대신 서브워드 조합을 통해 의미 추론 가능

나. WordPiece Tokenizer

① BPE와의 차이점: 코퍼스 우도(Likelihood) 기반 병합

  • 병합 대상 쌍을 빈도수가 아닌, 병합 시 코퍼스 우도가 최대화되는 쌍으로 선택

② WordPiece Tokenizer의 주요 특징과 언더바(_)의 역할

  • 모든 단어 앞에 언더바(_)를 붙여 “단어 시작” 표시

  • 통계적 기준으로 언더바 위치에서 서브워드로 분리

  • 언더바는 토큰 합성 후 문장 복원을 돕는 장치

  • 예시:

    원문: Jet makers feud over seat width with big orders at stake
    분리: _Jet _makers _feud _over _seat _width _with _big _orders _at _stake

③ BERT 모델 훈련에 사용

  • 구글의 BERT 사전학습(pre-training)에 WordPiece Tokenizer 적용

다. Unigram Language Model Tokenizer

① 서브워드 손실(Loss) 계산 방식

  • 각 서브워드 후보를 제거했을 때 코퍼스 우도가 감소하는 정도(손실)를 계산

② 단어 집합 크기 조절 과정

  • 계산된 손실값 기준으로 영향이 작은 상위 토큰을 제거(예: 최악 10–20% 제거)
  • 원하는 어휘 크기에 도달할 때까지 손실 기반 제거 과정 반복

3. 주요 서브워드 토크나이저 구현체

가. 센텐스피스(SentencePiece)

① 구글의 공개와 특징

  • BPE 알고리즘과 Unigram LM Tokenizer를 모두 지원하는 라이브러리를 구글에서 공개

② 모든 언어에 적용 가능한 범용성

  • 사전 토큰화(pretokenization) 없이 raw 데이터에 바로 적용 가능
  • 언어별 전처리 없이도 일관된 토크나이징 제공

나. 서브워드텍스트인코더(SubwordTextEncoder)

① TensorFlow 기반 서브워드 토크나이저

  • TensorFlow Datasets 내장 기능으로 사용 가능

② WordPiece Model 채택

  • BPE와 유사한 WordPiece 알고리즘으로 서브워드 집합 구축
  • 간단한 API 호출로 학습 및 인코딩 수행

다. 허깅페이스 토크나이저(Huggingface Tokenizer)

tokenizers 패키지의 역할

  • Rust로 구현되어 빠르고 유연한 서브워드 토크나이징 제공

② 제공되는 주요 토크나이저 종류

  • BertWordPieceTokenizer: BERT에 사용된 WordPiece 구현

  • CharBPETokenizer: 오리지널 BPE 알고리즘 기반

  • ByteLevelBPETokenizer: 바이트 레벨 BPE 처리

  • SentencePieceBPETokenizer: SentencePiece 호환 BPE 구현

<참고 문헌>
유원준/안상준, 딥러닝을 이용한 자연어 처리 입문
https://wikidocs.net/21694
박호현 교수님, 인공지능, 중앙대학교 전자전기공학부, 2024

profile
Chung-Ang Univ. EEE.

0개의 댓글