Patrick's 데이터 세상

Subword Tokenizer 본문

Deep Learning/NLP 이론

Subword Tokenizer

patrick610 2021. 4. 22. 20:50
반응형
SMALL

 

Subword Segmenation(서브워드 분리)은 하나의 단어를 여러 서브워드로 분리해서 단어를 인코딩 및 임베딩하는 전처리 작업입니다.

이를 통해서 OOV(Out-Of-Vocabulary), 희귀 단어, 신조어와 같은 문제를 해소할 수 있습니다.

 

 

 

BPE(Bite Pair Encoding)

자연어 처리에서의 BPE는 기존에 있던 단어를 분리한다는 의미입니다.

글자(character) 단위에서 점차적으로 단어 집합(vocabulary)을 만드는 bottom up 방식의 접근을 합니다.

훈련 데이터의 모든 단어들을 글자(character) 또는 유니코드(unicode) 단위로 단어 집합(vocabulary)를 만들고, 가장 많이 등장하는 유니그램을 하나의 유니그램으로 통합합니다.

 

 

BPE 알고리즘을 사용한 경우

딕셔너리의 모든 단어들을 글자(chracter) 단위로 분리합니다. 이 경우 딕셔너리는 아래와 같습니다. 이제부터 딕셔너리는 자신 또한 업데이트되며 앞으로 단어 집합을 업데이트하기 위해 지속적으로 참고되는 참고 자료의 역할을 합니다.

dictionary
l o w : 5,    l o w e r : 2,    n e w e s t : 6,    w i d e s t : 3

딕셔너리를 참고로 한 초기 단어 집합(vocabulary)을 아래와 같습니다. 간단히 말해 초기 구성은 글자 단위로 분리된 상태입니다.

vocabulary
l, o, w, e, r, n, w, s, t, i, d

BPE의 특징은 알고리즘의 동작을 몇 회 반복(iteration)할 것인지를 사용자가 정한다는 점입니다. 여기서는 총 10회를 수행한다고 가정합니다. 다시 말해 가장 빈도수가 높은 유니그램의 쌍을 하나의 유니그램으로 통합하는 과정을 총 10회 반복합니다. 위의 딕셔너리에 따르면 빈도수가 현재 가장 높은 유니그램의 쌍은 (e, s)입니다.

 

1회 - 딕셔너리를 참고로 하였을 때 빈도수가 9로 가장 높은 (e, s)의 쌍을 es로 통합합니다.

dictionary update!
l o w : 5,
l o w e r : 2,
n e w es t : 6,
w i d es t : 3
vocabulary update!
l, o, w, e, r, n, w, s, t, i, d, es

 

2회 - 빈도수가 9로 가장 높은 (es, t)의 쌍을 est로 통합합니다.

dictionary update!
l o w : 5,
l o w e r : 2,
n e w est : 6,
w i d est : 3
vocabulary update! 
l, o, w, e, r, n, w, s, t, i, d, es, est

 

3회 - 빈도수가 7로 가장 높은 (l, o)의 쌍을 lo로 통합합니다.

dictionary update!
lo w : 5,
lo w e r : 2,
n e w est : 6,
w i d est : 3
vocabulary update!
 l, o, w, e, r, n, w, s, t, i, d, es, est, lo

 

이와 같은 방식으로 총 10회 반복하였을 때 얻은 딕셔너리와 단어 집합은 아래와 같습니다.

dictionary update!
low : 5,
low e r : 2,
newest : 6,
widest : 3

 

이 경우 테스트 과정에서 'lowest'란 단어가 등장한다면, 기존에는 OOV에 해당되는 단어가 되었겠지만 BPE 알고리즘을 사용한 위의 단어 집합에서는 더 이상 'lowest'는 OOV가 아닙니다. 기계는 우선 'lowest'를 전부 글자 단위로 분할합니다. 즉, 'l, o, w, e, s, t'가 됩니다. 그리고 기계는 위의 단어 집합을 참고로 하여 'low'와 'est'를 찾아냅니다. 즉, 'lowest'를 기계는 'low'와 'est' 두 단어로 인코딩합니다. 그리고 이 두 단어는 둘 다 단어 집합에 있는 단어이므로 OOV가 아닙니다.

 

 

이 동작 과정을 그림으로 표현한다면 다음과 같습니다.

 

 

 

 

구글 센텐스피스

구글 센텐스피스는 비지도 기반의 서브 워드 텍스트 토크나이저(unsupervised text tokenizer)이면서 디토크나이저(detokenizer)입니다. 센텐스피스는 미등록 어휘(OOV:Out-of-Vocabulary)에 대응한 어휘 모델을 생성하기 위해 입력 문장(unicode 가정)을 받아 언어에 의존하지 않은 서브 워드 모델을 학습할 수 있습니다. 토크나이저이면서 디토크나이저인 이유는 인코딩과 디코딩 처리를 하기 때문입니다.

  • 인코딩 : 단어 목록을 입력으로 받으면, 각 단어의 서브 워드(sub-word)의 인덱스를 생성합니다.
  • 디코딩 : 서브 워드 인덱스를 토큰으로 만들고 텍스트로 만듭니다.

인코딩은 서브워드 단위 유닛(subword unites)을 만들기 위한 세그멘테이션을 수행하는 과정입니다. 센텐스피스는 세그멘테이션을 위해 두가지 방식을 이용합니다. 첫째는 BPE(byte-pair-encoding) 방식이며, 둘째는 유니그램 언어 모델(unigram language model)입니다. 디코딩은 서브 워드를 다시 텍스트로 합치는 과정입니다.

 

 

 

WordPiece

워드 피스(WordPiece)는 일본어와 한국어의 음성 문제를 해결 하기 위해 나온 모델입니다.(2012년) 워드 피스는 BPE와 유사하며 차이점은 새로운 서브 워드를 만들 수 있다는 점입니다.

 

Unigram 모델

쿠도 연구자가 소개한 모델입니다. 이 모델이 가정 하는 것은 모든 서브워드는 독립적인 이며 서브 워드 시퀀스이 나타날 확률은 서브 워드 확률에 결정된다는 점입니다. 워드 피스와 유니그램 언어 모델은 서브 워드 어휘를 구축할 수 있습니다.

 

 


출처 : wikidocs.net/22592

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

반응형
LIST

'Deep Learning > NLP 이론' 카테고리의 다른 글

LSTM(Long Short-Term Memory)  (0) 2022.08.22
RNN(Recurrent Neural Network)  (0) 2022.08.21
딥 러닝 학습 방법  (0) 2021.04.11
Loss 함수  (0) 2021.04.09
정보 검색 개념  (0) 2021.02.18
Comments