핵심 키워드: 토큰화, 바이트 페어 인코딩
토큰화(tokenization)란 문장을 토큰 시퀀스로 나누는 과정입니다.
수행 대상에 따라 문자, 단어, 서브워드 등 세 가지 방법이 있습니다.
토큰화를 수행하는 프로그램을 토크나이저(tokenizer)라고 합니다.
대표적인 한국어 토크나이저로는 은전한닢(mecab), 꼬꼬마(kkma) 등이 있습니다.
토큰화 뿐만아니라 품사부착까지 수행합니다.
토큰화 방식에는 3가지 방식이 있습니다.
1. 단어 단위 토큰화
- 단어(어절) 단위로 토큰화를 수행할 수 있습니다.
- 공백으로 분리하면 별도로 토크나이저를 쓰지 않아도 된다는 장점이 있지만, 어휘 집합(vocabulary)의 크기가 매우 커질 수 있습니다.
- 만약 은전한닢과 같은 학습된 토크나이저를 사용하면 어휘 집합의 크기가 커지는 것을 완화할 수 있습니다.
- 어휘 집합 크기가 커지면 그만큼 모델 학습이 어려워질 수 있습니다.
2. 문자 단위 토큰화
- 토큰화를 단어 대신 문자 단위로 고려해볼 수 있습니다.
- (장점) 언어의 모든 문자를 어휘 집합에 포함하므로 미등록 토큰 문제로부터 자유롭습니다.
- 미등록 토큰(unknown token)이란, 어휘 집합에 없는 토큰을 가리킵니다. 주로 신조어 등에서 발생합니다.
- (단점) 단어 단위와 비교할 때 분석 결과인 토큰 시퀀스의 길이가 상대적으로 길어지게 됩니다.
- 언어모델에 입력할 토큰 시퀀스가 길면 모델이 해당 문장을 학습하기가 어려워지고 결과적으로 성능이 떨어지게 됩니다.
3. 서브워드 단위 토큰화
- 서브워드(subword) 단위 토큰화는 단어와 문자 단위 토큰화의 중간에 있는 형태입니다.
- 1번, 2번의 장점만을 취한 형태 입니다.
- 어휘 집합 크기가 지나치게 커지지 않으면서, 미등록 토큰 문제를 피하고, 분석된 시퀀스가 너무 길어지지 않게 합니다.
- 대표적인 서브워드 단위 토큰화 기법이라면 바이트 페어 인코딩을 들 수 있습니다.
바이트 페어 인코딩
바이트 페어 인코딩(BPE, Byte Pair Encoding)이란,
- 원래 정보를 압축하는 알고리즘으로 제안되었는데 최근에는 자연어 처리 모델에 널리 쓰이는 토큰화 기법입니다.
- GPT 모델은 BPE 기법으로 토큰화를 수행하며, BERT 모델은 BPE와 유사한 워드피스(wordpiece)를 토크나이저로 사용합니다.
BPE 기법 특징
- BPE는 1994년 제안된 정보 압축 알고리즘으로, 데이터에서 가장 많이 등장한 문자열을 병합해서 데이터를 압축하는 기법입니다.
- BPE는 사전의 크기를 지나치게 늘리지 않으면서도 데이터 길이를 효율적으로 압축할 수 있도록 합니다.
- BPE 기반 토큰화 기법은 분석 대상 언어에 대한 지식이 필요 없습니다.
BPE를 활용한 토큰화 절차는 다음과 같습니다.
1. 어휘 집합 구축
- 자주 등장하는 문자열을 병합하고 이를 어휘 집합에 추가합니다. 이를 원하는 어휘집합 크기가 될 때까지 반복합니다.
2. 토큰화
- 토큰화 대상 문장의 각 어절에서 어휘 집합에 있는 서브워드가 포함되었을 때 해당 서브워드를 어절에서 분리합니다.
BPE 어휘 집합 구축하기
- 어휘 집합을 만들려면 우선 말뭉치를 준비해야합니다.
- 말뭉치의 모든 문장을 공백으로 나눠줍니다. 이를 프리토크나이즈 라고 합니다.
"BPE 어휘 집합은 고빈도 바이그램 쌍을 병합하는 방식으로 구축한다."
BPE 토큰화
어휘 집합(vocab.json)과 병합 우선순위(merge.txt)가 있으면 토큰화를 수행할 수 있습니다.
ex) pug 토큰화하기
1) 우선 pug를 문자 단위로 분리
2) merges.txt 파일을 참고해 병합 우선순위를 부여
3) 둘 중에 u와 g의 우선순위가 높으므로 이들을 먼저 합쳐줌 p, u, g -> p, ug
4) merges.txt 파일을 한번 더 참고해 병합 우선순위를 부여함 p, ug -> 우선순위 없음
[출처: 책 Do it! BERT와 GPT로 배우는 자연어 처리 트랜스포머 핵심 원리와 허깅페이스 패키지 활용법 ]
'Bert와 GPT' 카테고리의 다른 글
1장. 처음 만나는 자연어 처리 (0) | 2022.04.09 |
---|