-
Pre-TokenizationNLP/2주차 2021. 9. 15. 15:53
Word / Character / Subword
- Word
- Out-Of-Vocabulary(OOV)가 성능을 많이 저하시킴 → Character Based 등장
- Character
- Long sequence
- Low performance → 하나의 글자가 표현해야하는 representation이 너무 많음
- Subword → subword 방식을 사용하는 것이 좋다
- BPE(Byte Pair Encoding) - statistical method
- WordPiece - merge a pair that maximizes the likelihood of the training data once added to the vocab
- Unigram - starts from pretokenized words and the most common substrings then trims
- SentencePiece (라이브러리) - solve the problem that all the above methods are using space to separate words before tokenization by dealing with the space as a token
More about BPE
- pair에 대한 frequency 계산 → l, o, w 라는 단어가 있다면 {l,o} , {o,w}가 pair.
-
num_merges = 10 for i in range(num_merges): pairs = get_stats(vocab) best = max(pairs, key=pairs.get) vocab = merge_vocab(best, vocab) print(best)
- 가장 많이 등장한 pair를 vocab에 추가.
- update 된 vocab을 이용하여 frequency를 다시 계산 후 num_merges 만큼 과정 반복
- Knoledge graph is one of the external resource in language generation task. 라는 문장에서 두번 등장하는 ge라는 토큰을 구별하기 위해 ##ge, ge 혹은 ge, _ge 와 같은 방식으로 표현하기도 한다.
- https://wikidocs.net/22592
알아두면 좋은 것
Teacher forcing
- 장점: 사용하면 속도가 빨라진다.
- 단점: model output을 고려하지 않고 decoder input으로 정답으로 넣어주기 때문에, 앞에 input으로 이상한 문장이 들어간다면 뒤에 결과까지 다 망가질 수 있다.
주로 사용하는 전처리가 있는가?
- 데이터에 따라 다르다
- 정규표현식을 사용하여 전처리를 할 때, 필요한 정보도 사라질 수 있다 → 전처리를 거의 하지 않고, 딥러닝 모델이 학습하게 하려는 시도
'NLP > 2주차' 카테고리의 다른 글
Hugging Face Library (0) 2021.09.17 NLP 모델 정리 (0) 2021.09.16 GPT & BERT (0) 2021.09.15 - Word