본문 바로가기
딥러닝/이론 정리

BPE알고리즘 과 텍스트 전처리 과정

by 초보코딩러 2021. 8. 5.

1. 분절 길이에 따른 특성과 장단점

형태소 분석기로 분절된 토큰의 길이가 
짧을 수록 길 수록
1. Vocabulary 크기 감소
 - 대부분 토큰은 희소하지 않아 희소성 문제 감소

2.OoV(학습 시 없던 단어)가 줄어듬

3.Sequensce의 길이 (time step)가 길어짐

 - 잘개 쪼개므로 토큰 개수가 늘어남
-   RNN 모델에 대한 부담 증가 
(극단적 형태 : sentence 단위)

1. Vocabulary 크기 증가

  - 대부분 토큰이 희소해져 희소성 문제 증대
2.OoV가 늘어남

3. Sequence의 길이(time step)가 짧아짐 
 -잘개 쪼개므로 토큰 개수가 줄어듦
- RNN 모델에 대한 부담 감소

2. 정보량에 따른 이상적인 형태

  • 빈도가 높은 문장의 경우, 문장 단위의 token으로 나타내고,
  • 빈도가 낮은 문자의 경우, 단어 단위로 더 잘게 쪼개어, 각각 빈도가 높은 token으로 구성한다.

- > subword segmentation(분할) 개념과 연결됨

 

 

3. 서브워드 분절 (Subword segentation - BPE)

 

 

subword segentation Process

Subword : 단어보다 더 작은 의미 단위

  • 많은 언어들은 단어를 쪼개서 더 작은 의미 단위들로 표현이 가능함
  • 언어 단어 조합
    영어 Concentrate con(=together) +centr(=center) + ate(=make)
    한국어 집중 (모을집) + (가운데 중) 
  • 따라서 이러한 더 작은 의미 단위로 분절할 수 있다면 좋을 것
  • 이를 위해선 언어적 지식 기반으로 subword 사전이 필요해 보인다.
  • 한국어용, 영어용 다 각각 만들어야 하는것 아닌가?

- > BPE 알고리즘을 활용하면 언어적 지식 없이 subword segmentation이 가능하다.

 

4. BPE(Byte Pair Encoding) 알고리즘을 활용한 Subword Segmentation

  • BPE 압축 알고리즘을 활용하면 통계 기반(data-driven)의 subword segmentation을 할 수 있다.
  • 통계 기반이므로 언어적 지식 없이 작은 의미 단위로 분절할 수 있다.
  • 학습 코퍼스를 활용하여 BPE 모델을 학습 후, 학습/테스트 코퍼스에 적용
  • 장점:

        - 통계에 기반하여 희소성을 효과적으로 낮출 수 있다.

        - 언어별 특성에 대한 정보 없이, 더 작은 의미 단위로 분절할 수 있다.

        - OoV를 없앨 수 있다.(seen character로만 구성될 경우)

  • 단점:

      - 학습데이터 별로 BPE 모델이 생성되기 때문에, 딥러닝 학습 시 BPE 모델도 들고 있어야 한다.

 

5. BPE Training & Applying

1. Training(학습)

  • 단어사전 생성(단어 빈도)
  • Character 단위로 쪼갠 후, pair 별 빈도 카운트
  • 전체 코퍼스에서 최빈도 pair를 골라, merge수행
  • Pair 별 빈도 카운트 업데이트
  • 다시 3번부터 반복

2. Applying(적용)

  • 각 단어를 character 단위로 분절
  • 단어 내에서 merge 수행 (학습 과정에서 merge에 활용된 pair 순서대로)

3. BPE Training : 단어사전 생성 ->최빈도 pair 찾기 ->  merge -> 반복

 

6. 요약

  • BPE 압축 알고리즘을 통해 통계적으로 더 작은 의미 단위(subword)로 분절을 수행한다.
  • BPE를 통해 OoV를 없앨 수 있으며, 이는 성능상 매우 큰 이점으로 작용한다.
  • 영어의 경우는 바로 BPE 알고리즘을 적용해도 무방하다
  • 한국어의 경우 형태소 분석기(mecab등)를 통한 tokenization(->normalization) 후, Subword Segmentaion을 적용하는걸 권장한다.

댓글