이번 졸작에서 사용한 기법!
: 구글에서 제공하는 비지도학습 기반의 토크나이저
/ 텍스트를 서브워드 또는 문자 수준으로 분해하는 것
/ 1. 작동방식(BPE, Unigram) 둘 모두 지원
-> 이부분에 뭘 썼느냐에 따라 옵션이 달라짐."사람들과"는 초기에 "사-", "람", "들", "과"와 같이 분리되지만자연어 처리에서의 BPE는 서브워드 분리(subword segmentation) 알고리즘
: 기존에 있던 단어를 분리한 후, 글자(charcter) 단위에서 점차적으로 단어 집합(vocabulary)을 만들고, 가장 많이 등장하는 유니그램을 하나의 유니그램으로 통합
1) 초기 단어 집합 생성
원본 훈련데이터로부터 각 단어들의 빈도수 카운트
| 단어 | 출현 빈도수 |
|---|---|
| low | 5 |
| lower | 2 |
| newest | 6 |
| widest | 3 |
2) 개별 문자단위로 분리
| 단어 | 출현 빈도수 |
|---|---|
| l o w | 5 |
| l o w e r | 2 |
| n e w e s t | 6 |
| w i d e s t | 3 |
(초기단어집합)
l o w e r n s t i d
3) 가장 빈도수가 높은 유니그램의 쌍을 하나의 유니그램으로 통합 1회)
| 단어 | 출현 빈도수 |
|---|---|
| l o w | 5 |
| l o w e r | 2 |
| n e w e s t | 6 |
| w i d e s t | 3 |
에서
lo = 7
ow = 7
es = 9
es가 9로 가장 빈도수가 높으므로
es부터 묶어줌
1회 - es = 9
| 단어 | 출현 빈도수 |
|---|---|
| l o w | 5 |
| l o w e r | 2 |
| n e w es t | 6 |
| w i d es t | 3 |
2회 - est = 9
| 단어 | 출현 빈도수 |
|---|---|
| l o w | 5 |
| l o w e r | 2 |
| n e w est | 6 |
| w i d est | 3 |
3회 - lo = 7
| 단어 | 출현 빈도수 |
|---|---|
| lo w | 5 |
| lo w e r | 2 |
| n e w est | 6 |
| w i d est | 3 |
4회 - low = 7
| 단어 | 출현 빈도수 |
|---|---|
| low | 5 |
| low e r | 2 |
| n e w est | 6 |
| w i d est | 3 |
4) 최종
| 단어 | 출현 빈도수 |
|---|---|
| low | 5 |
| low e r | 2 |
| newest | 6 |
| widest | 3 |
#vocabulary update!
l o w e r n s t i d |
es est lo low |
ne new newest |
wi wid widest |
동작 순서
초기 단어 집합 생성 (NSMC)
공백을 기준으로 기존에 있던 단어를 분리
글자(charcter) 단위로 분리
점차적으로 단어 집합(vocabulary)을 만들고
가장 많이 등장하는 유니그램을 하나의 유니그램으로 통합
'유니그램' : 병합 과정을 통해 생성된 각각의 토큰
토크나이징 VS 서브워드 분리
토크나이징(Tokenizing)은 일반적으로 텍스트를 더 작은 단위인 토큰으로 나누는 과정을 말합니다. 이 토큰은 단어, 구두점, 문자 등이 될 수 있으며, 이 과정은 주로 자연어 처리에서 데이터를 전처리하는 데 사용됩니다. 토크나이징은 대상 텍스트를 어떻게 나눌 것인가(예: 공백 기준으로 단어 분리, 구두점 분리 등)에 초점을 맞춥니다.
서브워드 분리(Subword segmentation)는 토큰을 더 작은 의미 단위로 나누는 과정을 특히 말합니다. 예를 들어, "unhappiness"라는 단어를 "un", "happy", "ness"와 같이 의미를 가진 더 작은 단위로 나눌 수 있습니다. 서브워드 분리는 특히 희귀 단어나, 새로운 단어에 대해 모델이 더 잘 일반화할 수 있도록 돕는데 유용합니다.