토큰화(tokenize)란?
글 작성자: _rian
토큰화
토큰화란?
- 문장을 토큰 시퀀스로 나누는 과정.
- 수행 대상에 따라 문자, 단어, 서브워드 등 세가지 방법 존재
단위별 토큰화
1. 단어 단위 토큰화
- 단어(어절) 단위 토큰화. 쉽게는 공백으로 구분
- 예시) 어제 카페 갔었다 -> 어제, 카페, 갔었, 다
- 어휘 집합의 크기는 10만개를 훌쩍 넘는 경우가 다반사.
2. 문자 단위 토큰화
- 단어 대신 문자 단위로 토큰화.
- 한글, 영어, 숫자 등을 다 포함해도 크기가 작음.
- 단점 : 의미 있는 단위가 되기 어렵다.
- 예시) 어제 카페 갔었다 -> 어, 제, 카, 페, 갔, 었, 다
3. 서브워드 단위 토큰화
- 단어와 문자 단위 토큰화의 중간에 있는 형태
- 어휘 집합 크기가 지나치게 크지 않으면서도 미등록 토큰 문제를 피하고 분석된 토큰 시퀀스가 너무 길어지지 않게 함.
- 대표적인 방법 : 바이트 페어 인코딩
바이트 페어 인코딩 (BPE, Byte Pair Encoding)
- 1994년 제안된 정보 압축 알고리즘.
- 데이터에서 가장 많이 등장한 문자열을 병합해 데이터를 압축하는 기법
- GPT모델의 토큰화 수행 방법. BERT는 밑에서 설명할 워드피스 방식.
- 예시) aaabdaaabac -> aa가 많이 등장, 이를 Z로 병합 -> ZabdZabac -> ab가 많이 등장, 이를 Y로 병합 -> ZYdZYac -> ZY가 많이 등장, 이를 X로 병합 -> XdXac
장점
- 사전의 크기를 지나치게 늘리지 않으면서도 데이터의 길이를 효율적으로 압축할 수 있도록 함.
- 말뭉치에서 자주 나타나는 문자열을 토큰으로 분석.
BPE를 활용한 토큰화 절차
- 어취 집합 구축 : 자주 등장하는 문자열을 병합, 이를 어휘 집합에 추가. 원하는 어휘 집합 크기가 될 때 까지 병합
- 토큰화 : 토큰화 대상 문장의 각 어절에서 어휘 집합에 있는 서브워드가 포함되었을 때 해당 서브워드를 어절에서 분리
워드피스 (wordpiece)
- 말뭉치에서 자주 등장하는 문자열을 토큰으로 인식한다는 점에서 BPE와 유사
- 단, BPE처럼 단순히 빈도를 기준으로 병합하는 것이 아니라 병합했을 때 말뭉치의 우도를 높이는 쌍을 병합
- BERT 모델의 토큰화 수행 방법.
- BPE : 어절별 병합 우선순위가 필요. 워드피스 : 어휘 집합만으로 토큰화 가능.
'머신러닝 꿈나무 > 기본 개념' 카테고리의 다른 글
[pyspark/빅데이터기초] Parquet(파케이) 파일 형식이란? (0) | 2021.11.17 |
---|---|
[빅데이터기초] 스파크란? (0) | 2021.11.13 |
켄달타우란? - 비모수적 상관계수에 대해서 (0) | 2021.05.24 |
주성분 분석(PCA)이란? (0) | 2021.03.03 |
맥북에서 딥러닝 개발환경 구축하기 - 아나콘다, oh-my-zsh, iterm2, jupyter lab 테마 설정하기 (0) | 2021.01.13 |
댓글
이 글 공유하기
다른 글
-
[pyspark/빅데이터기초] Parquet(파케이) 파일 형식이란?
[pyspark/빅데이터기초] Parquet(파케이) 파일 형식이란?
2021.11.17 -
[빅데이터기초] 스파크란?
[빅데이터기초] 스파크란?
2021.11.13 -
켄달타우란? - 비모수적 상관계수에 대해서
켄달타우란? - 비모수적 상관계수에 대해서
2021.05.24 -
주성분 분석(PCA)이란?
주성분 분석(PCA)이란?
2021.03.03