[논문 리뷰] SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing

fla1512·2022년 9월 5일
0

NLP Study

목록 보기
7/23

BPE 알고리즘 자체는 1994년에 제안
2015년 (다은님 논문) BPE 알고리즘을 통해 단어 분리(Subword Segmentation)를 사용할 것을 제안
2016년 구글 논문 - 구글 번역기에서 WPM이 어떻게 수행되는지
2018년 (제 논문) 분절방식에 wordpiece, BPE등이 있는데 그러면, 어떻게 사용할거야? google의 관련 패키지 배포: sentencepiece

들어가기에 앞서..

Vocab을 어떻게 만들것인가? 참고
1. character level
2. space level
3. subword level

OOV 문제를 어떻게 해결할 것인가?
Subword Model: 단어 사전 자체를 잘 구성하는 것
-> WordPiece Model, Byte pair Encoding(BPE) 등이 있다
-> 이를 어떻게 사용할까?? : google의 관련 패키지 배포 'SentencePiece'(실무에서 사용하기위한 패키지)

단어 분리(Subword Segmentation) 참고

  • 기계가 아직 배운 적이 없는 단어더라도 마치 배운 것처럼 대처할 수 있도록 도와주는 기법 중 하나로 기계 번역 등에서 주요 전처리로 사용된다.
    • 단어 집합(Vocabulary): 기계가 알고있는 단어들의 집합을
    • OOV(Out-Of-Vocabulary), UNK(Unkown Word): 기계가 미처 배우지 못하여 기계가 모르는 단어들
      -> 단어 분리를 통해 OOV 문제를 해결!
      -> BPE(Byte Pair Encoding) 알고리즘: 대표적인 단어 분리 방법

4.1 WordPiece Model

(Google’s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation 논문의 일부분 논문 링크)

등장 배경

  • Google speech recognition system에서 Japanese/Korean segmentation 문제 해결하고자 개발

작동 과정

  • For processing arbitrary words, we first break words into wordpieces given a trained wordpiece model. Special word boundary symbols are added before training of the model such that the original word sequence can be recovered from the wordpiece sequence without ambiguity. At decoding time, the model first produces a wordpiece sequence, which is then converted into the corresponding word sequence.

예시 참고

1. 모든 단어의 시작에는 underbar, ‘_’ 가 붙는다 예) ‘Jet’ 은 ‘_Jet’, makers 는 ‘_makers’

  • "Jet → "J et"처럼 기존에 없던 띄어쓰기가 추가되어 서브 워드(subword)들을 구분하는 구분자 역할을 수행
    -> 모든 단어의 맨 앞에 '
    '(언더바)를 붙이고, 단어는 서브워드(subword)로 통계에 기반하여 띄어쓰기로 분리

  • 언더바는 문장생성 혹은 subword로부터의 문장 복원을 위한 특수기호
    -> 기존의 띄어쓰기와 구분자 역할의 띄어쓰기를 구분하기 위한 방법(언더바 없이 subwords를 띄어두면, 본래 띄어쓰기와 구분이 되지 않는다! )
    : 단어들 앞에 붙은 언더바
    로 구분!

  1. wordpiece로의 분할
    2-1. 다음 두 단어는 두 wordpiece로 분할: "Jet"는 "_J"와 "et"로 분할, “feud”는 “_fe”와 “ud”로 분할
    2-2. 다른 단어들은 하나의 wordpiece로 분할
    -> 왜 방식이 다른가? makers, over 는 모두 자주 이용되기 때문에 그 자체를 units 으로 이용하는 반면, Jet는 자주 등장하지 않는 단어이기 때문에 subword units 인 ‘J’ 와 ‘et’ 으로 나눈다

특징

  • Neural Machine Translation에서 rare words를 다루고자 쓴 방법과 유사
  • special character "_"가 추가되어서 단어의 시작을 알림!
  • data-driven approach으로 생성된다 -> training data에서 language-model likelihood를 최대화하고자
  • training corpus와 a number of desired tokens D가 주어졌을 때, optimization problem는 D wordpieces를 선정하는 것이다
    (다음 상황에서: the resulting corpus is minimal in the number of wordpieces when segmented according to the chosen wordpiece model)
  • special symbol을 단어의 시작에 쓴다
  • basic characters의 수를 잘라서, 데이터에 맞는 manageable한 number로 해준다
    (roughly 500 for Western languages, more for Asian languages)
  • 나머지를 special unknown character로 map한다
    -> 그 이유: 주어진 wordpiece vocabulary가 rare characters로 polluting되는 것을 막고자
  • 수행된 결과로부터 다시 수행 전의 결과로 돌리는 방법은 현재 있는 모든 띄어쓰기를 전부 제거하고, 언더바를 띄어쓰기로 바꾸는 것이다
  • BERT훈련에서도 사용(GPT2에서는 BPE)

WordPiece Model 참고1 참고2 WordPiece Tokenizer만들기

  • 특징

    • BPE의 변형
    • BPE는 빈도수에 기반하여 가장 많이 등장한 쌍을 병합, WPM은 병합되었을 때 코퍼스의 우도(Likelihood)를 가장 높이는 쌍을 병합
    • 보통 Maximum-likelihood training을 사용
  • 워드임베딩+캐릭터임베딩

    • 단어를 기준으로 하는 워드 임베딩+ 글자를 기준으로 하는 캐릭터 임베딩
    • 일반적으로, 워드 임베딩 성능이 더 좋다(임베딩의 의미가 압축되어있어서)
      • 예) 워드 임베딩인 Seq2Seq에서 '인공지능'은 하나의 출력
      • 예) 캐릭터 임베딩은 '인', '공', '지', '능' 4개로 연속
    • WodrPieceModel 작동 방식
      1. 캐릭터 단위로 분리한다.
      2. 자주 나오는 캐릭터들을 병합하여 하나의 토큰으로 만든다
        예 ) 공연은 끝났어 -> ['공연-' + '-은' + '끝-' + '-났어']
        공연을 끝냈어 -> ['공연-' + '-을' + '끝-' + '-냈어']
        개막을 해냈어 -> ['개막-' + '-을' + '해-' + '-냈어']
        -> ‘공연-‘, ‘개막-‘, ‘-냈어’, ‘-났어’은 유닛 -> 유닛이 아닌 subwords보다 등장 가능성이 높음
        (만일 ‘공연-‘의 빈도수와 ‘개막공연-‘의 빈도수가 같다면 ‘공연-‘이나 ‘개막-‘은 유닛으로 이용하지 않아도 될 것이다 )

SentencePiece 책 정리

  • 구글에서 공개한 비지도 학습 기반 형태소 분석 패키지
  • BPE(Byte Pair Encoding) 기법을 지원
  • BPE
    • 말뭉치에서 가장 많이 등장한 문자열을 병합해 문자열을 압축하는 것
    • 예) aaabdaaabac -> aa가 가장 많이 등장, Z로 치환해 압축 가능
      예1) ZabdZabac -> 다시 압축 가능(Y로 치환)
      예2) ZYdZYac
    • BPE로 토크나이즈하는 메커니즘
      • (학습 과정) 원하는 어휘 집합 크기가 될 때까지 반복적으로 고빈도 문자열들을 병합해 어휘 집합에 추가하기
      • (예측 과정) 문장 내 각 어절에 어휘 집합에 있는 서브워드가 포함돼 있을 경우 해당 서브워드를 어절에서 분리
      • 이후, 어절의 나머지에서 어휘 집합에 있는 서브워드를 다시 찾고 또 분리, 어절 끝까지 찾았는데 어휘 집합에 없으면 미등록 단어로 취급

SentencePiece는 빈도수를 기반으로 BPE를 수행하며, BPE를 포함하여 기타 서브워드 토크나이징 알고리즘들을 내장하고 있다.
Wordpiece의 경우 likelihood를 기반으로 BPE를 수행한 알고리즘이다.

Unigram Model

  • Sentencepiece의 기본 tokenize 방식은 unigram

Unigram Model 참고

  • 직전 1개의 토큰을 고려한 확률분포를 사용
  • 확률기반으로 subword의 발생확률을 최대화하는 방식으로 분할
  • 맥락을 신경쓰지 않음
  • 어떠한 문장이 등장할 확률은 전체 말뭉치(corpus)에서 각 토큰이 등장할 확률을 곱한 것에 불과하며, 토큰의 순서를 고려하지 않음
  • 예) 어절별로 토큰화한 경우, 다음 두 문장은 같은 등장 확률을 보임
    • 예1) 오늘 마라탕 먹어야 하는데 같이 갈 사람 구함
    • 예2) 오늘 사람 갈 먹어야 하는데 마라탕 같이 구함

Abstract

SentencePiece

  • language-independent subword tokenizer + detokenizer
  • Neural Machine Translation 같은 Neural-based text processing에서 쓰임
  • subword models를 raw sentences로부터 directly하게 train 가능
    -> purely end-to-end와 language independent system이 가능해짐

본 연구에서 실행한 바

  • validation experiment of NMT on English-Japanese machine translation
    -> comparable accuracy to direct subword training from raw sentences를 성취하는 것이 가능함을 발견
  • subword training과 segmentation을 various configurations으로 성능 비교

1. Introduction

Neural machine translation (NMT) approach

  • (Bahdanau et al.,2014; Luong et al., 2015; Wu et al., 2016; Vaswani et al., 2017): gained increasing popularity

    • neural networks가 directly하게 simple end-to nd architecture로 translations 수행하게 함
    • 여러 shared tasks (Denkowski and Neubig, 2017; Nakazawa et al., 2017)에서 엄청난 결과 보임
    • dialog generation (Vinyals and Le, 2015)과 automatic summarization (Rush et al., 2015) 같은 NLP 분야에 강한 영향력 보임
  • 잠재적으로 end-to-end translation을 할 수 있지만,
    많은 NMT는 여전히 traditional statistical machine translation (SMT) systems에서 사용되었던 language-dependent pre- and postprocessors에 의존한다

Moses

  • SMT의 de-facto standard toolkit
  • reasonably useful pre- and postprocessor를 시행
  • NMT에 대한 효율성이 입증되지 않은 hand-crafted하고 language dependent한 rules에 의해 built.
    • 주로 European languages를 위해 고안 -> words는 whitespaces로 segmented됨
    • NMT를 non-segmented languages(Chinese, Korean and Japanese)에도 훈련하기 위해, word segmenters를 independently하게 run해야 한다
  • 이러한 languagedependent processing은 multilingual NMT models (Johnson et al., 2016)을 train 하는 것이 어렵다
    • configurations of pre- and postprocessors per language를 manage해야 하고,
    • internal deep neural architectures를 language independent하게 해야 한다.

NMT approaches

  • are standardized and moving forward to more language-agnostic architectures
    -> NLP에서 점점 중요해지고 있다
    -> simple, efficient, reproducible이고 language independent pre- and postprocessor한 방식이어서
    -> NMT를 포함한 Neural Network-based NLP systems에 쉽게 통합될 수 있다

연구 방향

  • SentencePiece
    • a simple and language independent text tokenizer and detokenizer
    • mainly for Neural Networkbased text generation systems
      (where the size of vocabulary is predetermined prior to the Neural model training)
    • 두 가지 subword segmentation 알고리즘 시행
      • byte-pairencoding (BPE) (Sennrich et al., 2016)
      • unigram language model (Kudo, 2018)
    • purely end-to-end system을 가능하게 한다
      (does not depend on any languagespecific processing)

2. System Overview

four main components

  1. Normalizer
  • semantically equivalent Unicode characters를 canonical(표준이 되는, 고전으로 여겨지는) forms로 normalize하는 모듈

semantically(의미론): 형태소,단어,문장,담화 등의 단위가 주는 의미

  1. Trainer
  • subword segmentation model을 normalized corpus에서 train
    (연구에서는 subword model을 Trainer의 parameter로 명시화했다)
  1. Encoder
  • Normalizer를 시행한다
    -> input text를 normalize하고, 그것을 sub-word sequence(Trainer에 의해서 훈련된 subword model)로 토큰화하기 위해서
  1. Decoder
  • subword sequence를 normalized text로 변환한다

역할

  • 인코더: preprocessing (tokenization)
  • 디코더: postprocessing (detokenization)
    -> 그럼에도 encoding, decoding이라 부르는 것은 sentencepiece가 vocabulary를 id mapping으로 manages하고, text를 directly하게 id sequnece로 변환(그 반대도)할 수 있기 때문이다
  • Figure ??: SentencePiece training (spm_train), encoding (spm_encode), 그리고 decoding (spm_decode)의 end-to-end example
    (input text는 spm_encode와 spm_decode로 reversibly converted 될 수 있다)

3. Library Design

해당 부분에서는 SentencePieced의 디자인 및 시행과정 세부사항을 기술한다.

3.1 Lossless Tokenization

다음은 language-dependent preprocessing의 문장 예시다.

  • Raw text: Hello world.
  • Tokenized: [Hello][world] [.]

결과 해석
1. raw text와 tokenized sequence는 reversibly convertible이 아니다.
2. “world”와 “.” 사이에 space가 없는 것은, tokenized sequence에서는 유지되지 않는다.
3. Detokenization(=복원, original raw input를 tokenized sequence에 저장하는 방법)은 irreversible operation 때문에 language-dependent 해야 한다.

  • 예를 들어, detokenizer는 whitespaces를 대다수의 European languages에서 primitive tokens 사이에 넣는 반면, 일본/중국어에서는 space가 필요하지 않다.

  • Raw text: [こんにちは世界。] (Hello world.)

  • Tokenized: [こんにちは][世界] [。]

  • 이러한 language specific processing는 주로 manually crafted rules(expensive to write and maintain)에서 시행된다

Detokenization 참고
예) There's currently over a thousand TED Talks on the TED website.
[Preprocessing]
1. 각 언어 별 tokenizer를 통해 tokenization을 수행 + 공백 위치에 '' 삽입
(기존 띄어쓰기와 tokenization에 의해 수행된 공백과 구분하고자)
예1) ▁There 's ▁currently ▁over ▁a ▁thousand ▁TED ▁Talks ▁on ▁the ▁TED ▁website .
2. subword segmentation을 수행 + 공백 구분 위해 '
' 삽입
(이전 step까지의 공백과 subword segmentation으로 인한 공백을 구분)
예2) ▁▁There ▁'s ▁▁currently ▁▁over ▁▁a ▁▁thous and ▁▁TED ▁▁T al ks ▁▁on ▁▁the ▁▁TED ▁▁we b site ▁.
[Detokenization] : 문장을 복원해서 사람이 읽기 쉬운 형태로 만들기
1. whitespace 제거
예3) ▁▁There▁'s▁▁currently▁▁over▁▁a▁▁thousand▁▁TED▁▁Talks▁▁on▁▁the▁▁TED▁▁website▁.
2. ▁가 2개가 동시에 있는 문자열 ▁▁을 white space로 치환
예4) There▁'s currently over a thousand TED Talks on the TED website▁.
3. 마지막 남은 ▁를 제거, 문장 복원 완성
예5) There's currently over a thousand TED Talks on the TED website.

lossless tokenization

  • SentencePiece는 Decoder를 Encoder의 inverse operation으로서 시행한다
    • Decode(Encode(Normalize(text))) =Normalize(text).
  • text를 normalize하기 위한 모든 정보는 encoder의 output에 보존된다
  • input text를 Unicode characters의 sequnece로 treat하자
  • whitespace도 normal symbol로 handle된다
  • 명확하게 하고자, SentencePiece는
    • meta symbol _ (U+2581)로 whitespace를 escape했다
    • 그리고 input을 arbitrary subword sequence로 tokenizes
    • 예시
      • Raw text: Hello_world.
      • Tokenized: [Hello][_wor] [ld][.]
  • whitespace가 tokenized text에 보존되어있기에, 다음 python code로 tokens를 detokenize 가능하다
    • detok = ’’.join(tokens).replace(’_’, ’ ’)

subword-nmt

  • subword-nmt는 subword units를 위해 different represenation을 채택한다
    • 단어가 어떻게 subwords로 segmented되는가 + @@를 어떻게 intra-word boundary marker로 쓰는가
    • Tokenized: [Hello][wor] [@@ld][@@.]
  • 이는 언제나 lossless tokenization을 시행할 수는 없다
    -> whitespaces의 treatment에 ambiguity가 있기 때문이다
    -> 이 방법으로 consecutive whitespaces를 encode하는 것은 불가능하다

3.2 Efficient subword training and segmentation

과거의 방법과 그 한계

  • 이전의 subword segmentation tools는 sub-word models를 pre-tokenized sentences로부터 train한다
    • 효율적인 subword training을 위해 소개된 pre-tokenization: Sennrich et al.,2016
  • 하지만, 특히 non-segmented languages의 경우, pre-tokenization이 가능하다고 가정할 수 없다.
  • 게다가 pre-tokenization은 lossless tokenization 수행을 어렵게 한다.

SentencePiece에서의 적용

  • SentencePiece는 training과 segmentation 둘 다에 여러 speed-up techniques를 사용
    -> lossless tokenization를 큰 양의 raw data로 가능하게 하고자
    • 예) input sentence (or word) of length N
    • BPE segmentation: O(N^2) computational cost 필요(naively scan the pair of symbols in every iteration.)
    • Sentence-Piece: O(N log(N)) algorithm(merged symbols are managed by a binary heap(priority queue).)
      • the training and segmentation complexities of unigram language models are linear to the size of input data.

3.3 Vocabulary id management

  • SentecePiece는vocabulary를 id mapping으로 manages
    (input text를 id sequnece로 변환하고자, 그 반대도)

  • vocabulary의 size는 --vocab_size=<'size'> flag of spm_train.로 특정화.

  • subword-nmt가 the number of merge operations를 specifies 하는 반면에, SentecePiece는 final size of vocabulary를 specifies.
    (merge operations의 수가 BPE specific parameter이고, 다른 segmenation algorithms에 적용 불가능해서, e.g., unigram language model(Kudo, 2018).)

  • SentencePiece는 special meta symbols를 위해 vocabulary ids를 보존한다

    • e.g., unknown symbol(<'unk'>), BOS (<'s'>), EOS (<'/s'>) and padding(<'pad'>).
    • 그들의 실제 ids는 command line flags로 설정된다.
  • custom meta symbol을 정의해서, contextual information을 virtual tokens로 define 가능하다

    • e.g., the languageindicators, <2ja> and <2de>, for multilingual models (Johnson et al., 2016).

3.4 Customizable character normalization

Character normalization의 중요성

  • semantically-equivalent Unicode characters로 구성되어 있으며, handling real world text에서 중요한 전처리 단계다
    • 예) Japanese fullwidth Latin characters: ASCII Latin으로 normalize될 수 있다
    • Lowercasing은 normalization을 위한 effective 방법.

과거

  • Character normalization은 hand-crafted rules로 시행되어 왔다
    • 최근에 Uni-code standard Normalization Forms, e.g., NFC and NFKC는 많은 NLP에서 널리 쓰였다: better reproducibility와 strong support as Unicode standard를 위해서

SentencePiece에서의 적용 방법

  • SentencePiece는 input text를 Unicode NFKC normalization로 정규화한다(default)

    • normalization rules는 --normalization_rule_name=nfkc flag of spm_train로 명시된다
    • Sentencepiece에서의 normalization은 string-to-string mapping과 leftmost longest matching로 시행된다
    • noramalization rules는 finite state transducer(Aho-Corasick automaton) 로 compile된다
  • SentencePiece는 TSV file이라 정의되는 custom normalization rules를 support한다

    • Unicode sequence [U+41 U+302 U+300]는 U+1EA6로 변환
    • conversion에서 모호함이 있으면, longest rule이 적용
    • --normalization_rule_tsv=<'file'> flag of spm_train로 명시
    • Task-specific rules는 the default NFKC rules(SentencePiece package에서 TSV file로 제공)를 extending하면서 정의 가능

3.5 Self-contained models

  • 최근에 실험 결과의 재생산성을 높이고자 사전 훈련된 NMT models를 도입했다

    • 하지만 data가 어떻게 preprocessed되었는지 언제나 명시되어 있지 않다
      • (Post,2018): preprocessing에서의 subtle differences는 BLEU scores를 바꿀 수 있다
      • Moses toolkit를 써도, 같은 setting이 reproduce됨을 guarantee 불가
        (configurations of Moses (e.g., version and command line flags)가 명확하게 명시되지 않은 이상)
      • NFKC normalization은 Unicode version에 따라 다른 결과 야기 가능
  • 이상적으로, preprocessing을 위한 모든 rules와 parameters는 model file에 self-contained manner로 embedding되어야 한다 -> 그래야지, 우리가 같은 model file을 사용하는 경우, 같은 experimental setting을 reproduce 할 수 있기 때문이다

  • SentencePiece model은 purely self-contained를 위해 고안.

    • model file은 vocabulary and segmentation parameters 뿐만 아니라, character normalization을 위한 pre-compiled finite state transducer 도 포함
    • behavior of SentencePiece는 model file에 의해 결정되고, external dependencies가 없다
      -> 이러한 디자인은 perfect reproducibility 그리고 SentencePiece model file을 NMT model의 부분으로 분배하는 것을 가능하게 한다.
      -> 더 나아가, SentencePiece 개발자는 (default) normalization rules를 개선할 수 있다( breaking existing preprocessing behaviors에 대한 걱정 없이)
  • SentencePiece model은 binary wire format Protocol buffer에 저장된다.
    (a platform neutral and extensible mechanism for serializing structured data)

    • Protocol buffers는 structured data를 serialize하게 하고, backward compatibility를 extensibility로 유지하게 한다

3.6 Library API for on-the-fly processing

  • Text preprocessing는 주로 offline processing으로 고려된다

  • main NMT training에 앞서, raw input은 standalone preprocessor로 preprocessed되고 id sequence로 converted된다

  • off-line preprocessing은 두 문제가 있다

    1. standalone tools는 user-facing NMT applications(need to preprocess user input on-the-fly)으로 directly하게 integrated되지 않는다
    2. sub-sentence level data augmentation과 noise injection 시행을 어렵게 한다
      (둘은, NMT model의 정확도와 강건함을 향상하는 것을 목표로 한다)
    • input sentences에 noise를 삽입하는 여러 연구가 있다(랜덤하게 internal representation of sentences를 changing하면서)
    • (Kudo, 2018): a subword regularization 제안, that randomly changes the subword segmentation during NMT training.
    • (Lample et al.,2017; Artetxe et al., 2017) independently proposed a denoising autoencoder in the context of sequence-to-sequence learning, where they randomly alter the word order of the input sentence and the model is trained to reconstruct the original sentence.
      -> off-line processing만으로 dynamic sampling과 noise injection을 모방하는 것은 어렵다

SentencePiece의 해결책

  • off-line preprocessing을 위한 standalone command line tool을 제공하고, on-the-fly processing을 위한 C++, Python and Tensorflow library API을 지원한다

    Figure6 해석

    • subword regularization 파이썬 코드
    • unigram language model에 따라서 하나의 subword sequence가 sampled 된다
    • text “New York”이 각 SampleEncodeAsPieces call에서 다르게 token화 되었다

4. Experiments

4.1 Comparison of different preprocessing

  • different preprocessing에서의 성능 입증

    • English-Japanese translation of Wikipedia articles
      • Kyoto Free Translation Task (KFTT)에 의해 specify
      • training(440k), development(1166 sentences), test data(1160 sentences)
  • GNMT (Wu et al., 2016) 사용

    • 우리 실험에서 NMT system을 시행하고자
    • Wu et al., 2016에 제시된 settings와 training procedure 따름
      • node와 LSTM의 layer size는 512, 6으로 바꿈
  • word model

    • baseline system으로서 사용
    • pre-tokenization이 있는 그리고 없는 SentencePiece (unigram language model) 와 비교
      • 있는 SentencePiece: 본질적으로 subword-nmt를 가진 common NMT configuration와 같다
      • 없는 SentecePiece: subword model을 raw sentences로부터 directly하게 train하고 external resources를 사용하지 않는다
    • Moses tokenizer(English)와 KyTea(Japanese pre-tokenization)를 사용
    • 같은 tokenizers가 word model에 적용
  • evaluation metric

    • case-sensitive BLEU score 사용
    • output sentences가 Japanese로 segmented되지 않아,
    • BLEU scores 계산 이전에 KyTea로 segmented하였음

experimental results

  1. SentencePiece를 이용한 subword segmentation은 BLEU scores가 지속 상승(word model 비교시)
  2. pre-tokenization이 BLEU scores를 boost하기 위해서 항상 필요한 것은 X
    • Japanese to English: 성능 향상이 작고 큰 차이가 없다
    • English to Japanese: BLEU score는 pre-tokenization로 degrade되었다
  3. 두 경우에는 BLEU가 크게 상승
    1) SentencePiece is applied to Japanese
    2) the target sentence is Japanese
    • Japanese가 non-segmented language이어서, pre-tokenization이 마지막 vocabulary 결정에 있어서 큰 제약으로 작동
    • raw input으로부터의 unsupervised segmentation의 긍정적인 효과가 Japanese에서 domain-specific vocabulary를 찾는데 잘 작동했다고 볼 수 있다.

4.2 Segmentation performance

다양한 설정에서 trainig과 segmentation 성능의 요약

  • SentencePiece와 subword-nmt 둘 다에서 training과 segmentation speed가 English data set에서 pre-tokenization 선택에 상관없이 비교 가능하다
    • English가 segmented language이고 vocabulary extraction을 위한 search space가 크게 제한되기 때문이다
  • 반면에 SentecePiece는 raw Japanese data (w/o pre-tok)에 적용했을 때 더 좋은 성능 향상을 보였다
    • 이 때, SentencePiece의 segmentation speed는 subword-nmt보다 380배 빠르다
      • 이 결과는, SentencePiece가 raw data에 적용되기에 충분히 빠르며, pre-tokenization이 항상 필요한 것이 아님을 지지한다.
    • 결론적으로 SentencePiece는 purely data-driven하고 language-independent system 구축을 가능하게 한다
    • SentencePiece의 segmenation speed는 around 21k(English), 74k(Japanese) sentences/sec로 on-the-fly에 적용하기에 충분히 빠르다.

5. Conclusions

SentencePiece

  • open-source subword tokenizer + detokenizer -> Neural-based text processing을 위해 고안
  • subword tokenization 시행하고 text를 id-sequence로 직접적으로 변환
    -> 이를 통해 language specific resources를 대응하지 않고 purely end-to end system을 개발하는 것을 도움
  • SentencePiece model file은 self-contained 위해 고안
    -> perfect reproducibility of the normalization + subword segmentation

0개의 댓글