토큰화
토큰 시퀀스로 나누는 과정
수행 대상에 따라 문자, 단어, 서브워드 등
데이터 -(토큰화)→ 토큰시퀀스 -(입력)→ 트랜스포머 모델
→ **토크나이저**: 토큰화 수행 프로그램 (ex.한국어 토크나이저: 은전한닢, 꼬꼬마→ 토큰화 + 품사부착)
단어 단위 토큰화 | 문자 단위 토큰화 | 서브워드 단위 토큰화 | |
---|---|---|---|
공백 기준 분리 | 문자 단위 | 단어와 문자 단위 토큰화 중간(둘의 장점) | |
장점 | 별도로 토크나이저를 쓰지 않아도 됨 | - 어휘 집합 크기 단순 - 미등록 토큰 문제에서 자유로움 | - 어휘 집합 크기가 지나치게 크지 않음 - 미등록 토큰 문제를 피할 수 있음 - 분석된 토큰 시퀀스가 너무 길어지지 않음 |
단점 | 어휘 집합의 크기가 매우 커질 수 있음(→ 학습된 토크나이저로 완화 가능하지만 한계) → 모델 학습 어려움 | - 각 문자 토큰이 의미 있는 단위가 되기 어려움 - 토큰 시퀀스의 길이가 길어짐→ 문장 학습 어려움, 성능 감소 |
BPE(Byte Pair Encoding)
자연어 처리 모델에 널리 쓰이는 토큰화 기법
GPT-BPE기법으로 토큰화 수행 / BERT-워드피스를 토크나이저로 사용
데이터에서 가장 많이 등장한 문자열을 병합하여 데이터를 압축하는 기법
ex) aaabdaabac → ZabdZabac → ZYdZYac → XdXac (사전크기 증가, 데이터 크기 감소)
사전 크기 증가를 억제하면서도 정보를 효율적으로 압축할 수 있는 알고리즘
서브워드(말뭉치에서 자주 나타나는 문자열)을 토큰으로 분석 → 분석 대상 언어 지식 불필요
토큰화 절차: 어휘 집합 구축 → 토큰화
어휘 집합을 만들기 전: 공백으로 말뭉치 준비(프리토크나이저)
고빈도 바이그램 쌍을 병합하는 방식(→ 어휘 집합에 추가됨)으로 구축
→ BPE 토큰화 과정에서 서브워드 병합 우선순위를 정하는 데 쓰임
→ 어휘 집합: vocab.json, 병합 우선순위: merges.txt에 저장됨
pug, bug, mug → p, ug, b, ug, <unk>, ug
(<unk>: 미등록 토큰)