참고
https://tech.kakao.com/2023/06/05/languagemodel-mlm-clm/
언어모델의 원리와 만들기
언어모델 언어 모델(Language model)은 주어진 단어들의 시퀀스에 대해 임베딩 표현(Embedding representation) 또는 벡터(Embedding vector)를 만들어 줍니다. 언어 모델을 통해 만든 임베딩 표현으로 주제 찾기,
tech.kakao.com
https://velog.io/@jieun9851/Tokenizer-%EC%A0%9C%EC%9E%91%ED%95%98%EA%B8%B0
[NLP] Tokenizer 제작하기
개요 현재 대부분의 NLP task는 PLM (Pre-trained Language Model)을 통한 전이 학습이 대세로 자리잡았다. 하지만 긴 Pretraining을 수행 전 vocab을 만드는 건 정말 중요하다. 좋은 vocab을 만드는 것이 곧 토크나
velog.io
참고링크에 있는 카카오 테크 글에서 Huggingface tokenizer 중 CharBPETokenizer를 사용한다고 하길래
이게 뭘까 궁금해서 찾아보게 되었다.
토크나이저는 단어들의 통계 수치로 우선순위를 구해 어휘사전을 만들고 텍스트롤 토큰으로 파싱(분해)한다.
쉽게말해 텍스트데이터(=corpus=말뭉치)에서 단어들을 뽑아내 단어사전을 구축하고 이 단어사전을 토대로 텍스트를 토큰으로 분해해주는 컴포넌트다.
Hugging face
허깅페이스는 기계 학습 모델을 구축, 배포 및 교육하기 위한 도구와 리소스를 개발하는 프랑스계 미국회자이자 오픈소스 커뮤니티다.
특히 자연어 처리를 위해 구축된 transformers 라이브러리와 커뮤니티 협업 및 접근성에 중점을 둔것으로 유명하다.
2016년에 만들어졌고 원래는 10대 챗봇 개발회사였다는데.. 대단하다
토크나이저의 종류
크게 두 가지가 있다.
- word tokenizer
- subword tokenizer
word tokenizer는 문장에서 단어를 분절한다.
분절의 결과는 '경찰복', '경찰관', '경찰차' 등의 단어들이다.
subword tokenizer는 단어를 나누어 단어 안의 단어들로 토큰화를 시킨다.
위 '경찰복', '경찰관', '경찰차'를 가지고 subword tokenizing을 하면
'경찰' #차 #복 #관 으로 나눠진다.
subword tokenizer는 사전에 없는 단어들에 대해서도 좋은 성능을 보여 OOV, 희귀단어, 신조어 문제 등을 완화한다. 물론 완벽하게 해결하진 못한다.
몇 번 이상 등장하지 않는 단어들은 사전에 포함시키지 않는 경우도 있다. 대표적인 예는 KoBERT. 5번 미만 등장하는 건 사전에 넣지 않았다고 한다.
Subword 분절 방식
Subword Tokenizer가 토크나이징 하는 방식은 3가지 정도가 있다고 한다.
- BPE (Byte Pair Encoding)
- SentencePiece
- WordPiece
BPE (Byte Pair Encoding)
연속으로 가장 많이 등장한 글자의 쌍을 찾아 하나의 글자로 병합하는 방식이라고 한다.
장점
- 말뭉치가 있으면 비교적 간단하게 만들 수 있음.
- OOV를 최소화
단점
- Subword의 분할이 의미가 기준이 되지 않기도 한다.
- ex1) '포항에'가 '포항', '에'로 나뉘길 원했는데 '포', '항에'가 되는 경우
- ex2) 빈도수가 적은 단어들이 나눠지지 않고 그대로 분류되는 경우
Huggingface의 Tokeninzers
크게 4가지를 제공한다고 한다.
- CharBPETokenizer
- ByteLevelBPETokenizer -> GPT, Roberta에 쓰임
- SentencePieceBPETokenizer
- BertWordPieceTokenizer -> BERT에 쓰임
'기술 공부 끄적끄적 > 인공지능' 카테고리의 다른 글
딥러닝 자연어 처리 발전과정 (0) | 2024.03.04 |
---|---|
트레이닝 방법에 따라 나뉘는 CLM, MLM, Seq2Seq (0) | 2024.03.04 |
언어 모델이란 (0) | 2024.03.01 |