언어 전공자의 NLP 로그
SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing. 본문
논문 읽기
SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing.
JohnnyNLP 2023. 11. 1. 02:46논문 출처 : https://arxiv.org/abs/1808.06226
SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing
This paper describes SentencePiece, a language-independent subword tokenizer and detokenizer designed for Neural-based text processing, including Neural Machine Translation. It provides open-source C++ and Python implementations for subword units. While ex
arxiv.org
1. Introduction
- SentencePiece는 언어에 독립적인 subword 기반 tokenizer/detokenizer로, NMT 등 다양한 딥 러닝 기반 텍스트 전처리를 위해 고안되었다.
- 논문에 쓰일 당시, NMT 시스템에는 여전히 언어 의존적인 SMT 기반 전/후처리 툴킷 (Moses 등)을 사용하고 있었다. 또한 이들은 띄어쓰기로 분절이 가능한 유럽어를 바탕으로 고안되어, 교착어 특성을 지니는 한/중/일어에는 사용할 수가 없다.
- 따라서 SentencePiece는 간단하고 언어 독립적인, 딥 러닝 기반 NLP 작업에 특화된 모델이다. 이는 학습 전에 고정된 크기의 단어 사전이 있음을 전제로 한다.
- SentencePiece는 BPE 방식과 Unigram 방식으로 subword 분절 알고리즘을 구현한다.
2. System Overview
- SentencePiece는 Normalizer, Trainer, Encoder, Decoder 4개 부분으로 구성된다.
- Normalizer : 의미론적으로 동일한 유니코드 문자를 원형의 형태로 정규화하는 모듈.
- Trainer : 정규화된 코퍼스로부터 subword 분절 모델을 훈련한다.
- Encoder : 인풋 텍스트에 대하여 내부적으로 정규화 과정 및 토큰화를 수행, Trainer가 훈련한 서브워드 모델의 형태로 전처리한다. (전처리)
- Decoder : subword 문자열을 정규화 텍스트로 변환한다. (후처리)
- 즉, 학습된 Trainer에 맵핑된 id로 문장에 대한 전/후처리를 진행하는 것이 Encoder와 Decoder.
3. Library Design
- SentencePiece는 encoder의 결과물 (토크나이즈된 문장)을 다시 decoder에 넣었을 때, 원문을 반환하는 lossless tokenization을 가능하도록 설계되었다. 즉, 문장에 들어간 띄어쓰기 마저도 토큰으로 취급하여, 기존 시스템이 가지고 있는 원문의 비가역성 (not reversibly convertible)을 해결한다.
- 일반적으로 길이 N인 문장에 대한 BPE 연산 비용은 $O(N2)$이지만, SentencePiece는 binary heap 구조 (priority queue)를 사용하여 이 비용을 $O(Nlog(N))$으로 낮추었다.
- Sentencepiece는 단어집을 활용해 문장 내 토큰에 대한 id를 mapping한다. 이때 일반적으로 사용되는 <unk>, <s>, \</s>, <pad> 토큰과 언어 토큰 등을 제공한다.
- 문자 정규화 방식으로는 유니코드 NFKC 정규화를 기본값으로 사용한다. 또한 커스텀 TSV 파일로 정규화 규칙을 지정할 수 있다.
- SentencePiece 모델은 여러 정규화 방식에 대한 규칙을 스스로 가지고 있기 때문에 재생산성이 뛰어나다. 모델에는 단어집, 분절 파라미터,문자 정규화를 위한 사전 컴파일된 finite state transducer 등의 정보가 포함되어 있고, 자신 외에 외부 의존성도 없다.
- SentencePiece는 오프라인에서 작업할 수 있는 toolkit 뿐만 아니라 실제 어플리케이션 단계에서 실시간 처리가 가능한 라이브러리 API도 함께 제공한다.
4. Experiments
- 영일 번역에 대해서 실험했을 때, 1) SentencePiece의 subword 분절 방식으로 전체적인 BLEU 스코어가 상승했고, 2) 이때 사전 토큰화 여부가 항상 스코어 상승으로 이어지지는 않는다.
- 대립 모델인 subword-nmt와 비교했을 때, 학습/분절 시 모두 SentencePiece의 소요 시간이 적게 나타났다. 특히 분절 태스크의 경우, 띄어쓰기로 분절이 가능한 영어는 두 모델의 성능 지표 차이가 크게 나타나지 않지만, 일본어에 적용했을 때는 확연한 차이가 드러났다. (380배) 즉, 사전 토큰화가 없어도 충분히 빠르다.
5. Conclusion
- SentencePiece의 핵심은 문장을 곧바로 id sequence르 바꿈으로써 end-to-end 어플리케이션에 활용이 가능하다는 점이다.
- 또한 필요한 모든 정보를 스스로 담고 있어 정규화 및 subword 분절의 재생산성이 뛰어나다.
'논문 읽기' 카테고리의 다른 글
| Rich Character-level information for Korean morphological analysis and part-of-speech tagging 외 (0) | 2024.02.23 |
|---|---|
| Personalizing Dialogue Agents: I have a dog, do you have pets too (1) | 2023.11.01 |
| BLEU: a Method for Automatic Evaluation of Machine Translation (1) | 2023.10.30 |
| Chatbot의 장기 기억력을 높이는 방법 (0) | 2023.08.28 |
| GloVe: Global Vectors for Word Representation (2014) (0) | 2023.08.12 |