[NLP] BERT & GPT 기반 자연어 처리_ 02 토큰화

JAsmine_log·2024년 5월 25일

NLP(Natural Language Processing)

02 문장 쪼개기

02-1 토큰화(Tokenization)

Tokenization은 문장을 토큰 시퀀스로 나누는 것이다. 분할 기준은 문자, 단어, 서브워드 등 세가지로 구분할 수 있다.

토큰화(Tokenization)

  • Tokenizer를 통해서 토큰 시퀀스를 만듦
  • 한국어 토크나이저는 은전한닢(mecab), 꼬꼬마(kkma) 등
  • 품사부착(part of Speech tagging)도 토큰화로 포함되기도함

단어 단위 토큰화

단어(어절)단위로 토큰화를 수행한다. 예를 들면, 공백(white space)를 기준으로 분리할 수 있다.

카패 카페 갔었어 =(토크나이저)=> 어제, 카페, 갔었어
카제 카페 갔었는데요 =(토크나이저)=> 어제, 카페, 갔었는데요

하지만, 여기서 "갔었어와 "갔었는데요"는 어휘만 조금 바뀌었지만, 같은 어휘 집합(vocabulary)로 포함되어, 모든 경우의 수를 포함하여 크기가 매우 커질 수 있다. 이런 문제를 완화하기 위해서는 의미 있는 단위로 토큰화해 어휘 집합을 만들 수 있다.

카패 카페 갔었어 =(토크나이저)=> 어제, 카페, 갔었, 어
카제 카페 갔었는데요 =(토크나이저)=> 어제, 카페, 갔었, 는데요

문자 단위 토크화

한글로 표현할 수 있는 글자는 11,172개이고 알파벳, 숫자, 기호 등을 조합해서 만들수 있는 어휘 집합은 150,000개가 안되어 수가 적다. 하지만, 문자 단위 토큰화는 각 문자 토큰이 의미있는 단위기 되기 어려울 수 있다. 또한, 문장 시퀀스가 너무 길어지고 해당 문장을 학습하기 어려워져 성능이 떨어지게 된다.

카패 카페 갔었어 =(토크나이저)=> 어, 제, 카, 페, 갔, 었, 어
카제 카페 갔었는데요 =(토크나이저)=> 어, 제, 카, 페, 갔, 었, 는, 데, 요

서브워드 단위 토큰화

서브워드(subword)는 단어와 문자 중간의 토큰화 단위이다. 어휘 집합의 크기가 너무 ㅋ커지지 않게 하면서, 등록되지 않은 토큰 문제를 해결하고 시퀀스의 길이가 너무 길어지지 않게 한다. 대표적으로는 바이크 페어 인코딩이 있다.

02-2 바이트페어 인코딩(Byte Pair Encoding, PBE)

원래ㅐ는 정보를 압축하는 알고리즘 이었으나, 최근에는 토큰화 기업을 위한 자연어 처리 모델로 사용하고 있다. GPT 모델은 BPE 토큰화를 수행하고, BERT는 BPE유사한 워드피스(wordpiece)를 사용한다.

BPE

정보압축 알고리즘으로, 데이터에서 가장 많은 빈도로 등장한 문자열을 병합하여 데이터를 압축한다. 반복되는 문자열 aa=Z, ab=Y, ZY=X로 병합여 표현한다. 병한 표현 이후에 원래 표현한 문자가 (a, b, c, d)에서 (a, b, c, d, Z, Y, X)로 많아졌지만, 문자 길이는 감소했다.

aaabdaaabac ==> ZabdZabac==> ZYdZYac ==>XdXac

  • 바이트페어코딩은 사전 크기 증가를 억제하고 정보를 효율적으로 압축한다

BPE 토큰화 절차
01 어휘집합 구축 : 자주 등장하는 문자열을 병합하고 어휘 집합게 추가하여, 원하는 크기가 될때까지 반복
02 토큰화 : 대상 문장에서 서브워드가 포함된 경우 어절에서 분리

BPE 어휘 집합 구축

  • 프리토크나이저를 통해 말뭉치의 모든 문장을 공백을 기준으로 나누어 준비한다.
  • BPE 어후집합은 고빈도 바이그램 쌍을 병합하는 방식으로 구축한다

BPE 토큰화

어휘집합은 병합우선순위를 통해 토큰화한다.

워드피스(wordpiece)

말뭉충에 자주 등장하는 문자열을 토큰으로 인식하지만, 어휘 집합을 구축할 때 문자열을 병합하는 기준이 말뭉치의 우도(likelihood)를 높이는 쌍으로 병합한다.

#ab/n/#a/n#b/n{{\#ab / n} / {\#a/n} * { \#b / n}}

where, #ab\#ab, #a\#a, #b\#b 문자열의 빈도수, nn=전체 글자수

이 수식의 값은 a,b가 서로 독립일 때 더 커진다. 병합 가능한 쌍의 가치를 미리 판단하여 가장 높은 값을 적용한다.

02-3 어휘 집합 구축

토크나이저 생성

  • BPE 기반 토크나이저 생성
  • GPT 기반 토크나이저 생성

02-4 토큰화

입력값 만들기

  • BPE 기반 입력 생성
  • GPT 기반 입력 생성
profile
Everyday Research & Development

0개의 댓글