[TIL] 텍스트 전처리

오현우·2022년 3월 20일
0
post-thumbnail

subword Tokenization

학습데이터에서 보지 못했던 새로운 단어가 나타난다면?

example

  • train data: low, new, newer
  • test data: lower

이러한 케이스에서는 low, new, er로 train data를 잘 분리할 수 있었으면 lower라는 단어를 잘 추론할 수 있었을 것임.

subword tokeniztion algorithms

  • Byte-Pair Encoding
  • WordPiece
  • Unigram language modeling

subword tokenization의 두가지 구성 요소

  • token learner: 말뭉치에서 vocabulary를 만들어 냄.
  • token segmenter: 새로운 문장을 토큰화함

Byte Pair Encoding

  1. vocabulary를 단일 문자들의 집합으로 초기화

  2. 말뭉치에서 연속적으로 가장 많이 발생하는 두개의 기호들을 찾는다.

  3. 두 기호를 병합하고 새로운 기호로 vocabulary에 추가한다.

  4. 말뭉치에서 그 두 기호들을 병합된 기호로 모두 교체한다.

  5. 2, 3, 4 과정을 k번의 병합이 일어날 때까지 반복한다.

  6. 최종적으로 vocabulary를 리턴한다.

참고할 점

  • 기호 병합은 단어 안에서만 이루어 진다.
  • 이것을 위해 단어 끝을 나타내는 "_"를 단어 끝에 추가한다.
  • 그리고 각 단어를 문자단위로 쪼갠다.

Wordpiece

  • 기호들의 쌍을 찾을 때 빈도수 대신에 가능도를 최대화 시키는 쌍을 찾는다.

Unigram

  • 확률 모델을 사용함
  • 학습 데이터 내의 문장을 관측 확률 변수로 정의
  • Tokeniztion을 잠재 확률 변수로 정의한다.
  • 데이터의 주변 우도를 최대화시키는 tokenization을 구한다.(EM, viterbi알고리즘 사용) wordpiece는 greedy하게 가능도를 향상
profile
핵심은 같게, 생각은 다르게

0개의 댓글