Table of Contents
728x90
Tokenizer는 NLP 모델에서 텍스트 데이터를 처리하고 모델이 이해할 수 있는 형태(주로 숫자 시퀀스)로 변환하는 중요한 도구입니다. 직접 토크나이저를 만들려면 몇 가지 방법이 있지만, 보통 아래의 단계를 따릅니다.
1. 토크나이저 정의 방식 선택
토크나이저를 만드는 방식은 크게 세 가지로 나뉩니다:
- Word-level Tokenization: 단어 단위로 텍스트를 쪼갭니다. 예: "안녕하세요." -> ["안녕하세요", "."]
- Subword-level Tokenization: 자주 사용되는 서브워드를 추출하여 작은 단위로 쪼갭니다. Byte-Pair Encoding(BPE), WordPiece, SentencePiece 등이 이 방식을 따릅니다. 예: "안녕하세요" -> ["안", "녕", "하세요"]
- Character-level Tokenization: 개별 문자를 토큰으로 처리합니다. 예: "안녕하세요" -> ["안", "녕", "하", "세", "요"]
2. 데이터 준비
토크나이저를 만들기 위해서는 대량의 텍스트 데이터를 준비해야 합니다. 이 데이터는 토크나이저가 학습해야 할 언어와 관련된 도메인에 따라 다릅니다. 예를 들어, 한국어 텍스트를 토크나이저로 처리하려면 한국어 텍스트 데이터가 필요합니다.
3. 토크나이저 라이브러리 사용
SentencePiece
와 tokenizers
(Hugging Face에서 제공하는 라이브러리)가 대표적인 토크나이저 학습 도구입니다.
1) SentencePiece 이용
SentencePiece는 구글에서 만든 오픈소스 라이브러리로, BPE 또는 Unigram 방식으로 서브워드 토크나이저를 쉽게 학습시킬 수 있습니다.
pip install sentencepiece
다음은 한국어 토크나이저를 만드는 예시입니다.
import sentencepiece as spm
# SentencePiece 모델 학습
spm.SentencePieceTrainer.train(input='korean_text.txt', model_prefix='korean_tokenizer', vocab_size=32000)
# 학습된 모델 불러오기
sp = spm.SentencePieceProcessor(model_file='korean_tokenizer.model')
# 텍스트 토큰화
tokens = sp.encode("안녕하세요. 저는 AI입니다.", out_type=str)
print(tokens) # ['▁안녕', '하', '세요', '.', '▁저는', '▁AI', '입니다', '.']
2) Hugging Face tokenizers
라이브러리 이용
Hugging Face의 tokenizers
라이브러리는 빠른 토크나이저 학습을 위한 Python 라이브러리입니다.
pip install tokenizers
Hugging Face의 BPE 방식으로 토크나이저를 학습시키는 예시입니다.
from tokenizers import Tokenizer
from tokenizers.models import BPE
from tokenizers.trainers import BpeTrainer
from tokenizers.pre_tokenizers import Whitespace
# 빈 토크나이저 생성
tokenizer = Tokenizer(BPE())
tokenizer.pre_tokenizer = Whitespace()
# 학습 데이터 준비
trainer = BpeTrainer(vocab_size=32000, special_tokens=["[PAD]", "[CLS]", "[SEP]", "[MASK]"])
# 학습시키기
files = ["korean_text1.txt", "korean_text2.txt"]
tokenizer.train(files, trainer)
# 토크나이저 사용 예시
output = tokenizer.encode("안녕하세요. 저는 AI입니다.")
print(output.tokens)
4. 토크나이저 저장 및 사용
한 번 학습된 토크나이저는 저장하고 나중에 불러와 사용할 수 있습니다.
# 토크나이저 저장
tokenizer.save("my_tokenizer.json")
# 토크나이저 불러오기
tokenizer = Tokenizer.from_file("my_tokenizer.json")
5. 특수 토큰 추가
모델에 맞는 특수 토큰을 추가할 수도 있습니다. 예를 들어, 문장 시작, 끝, 패딩 등의 토큰을 추가합니다.
special_tokens = ["[PAD]", "[CLS]", "[SEP]", "[MASK]"]
tokenizer.add_special_tokens(special_tokens)
이러한 방식으로 자신만의 토크나이저를 학습시킬 수 있으며, 모델에 맞게 언어와 도메인에 맞는 토크나이저를 만드는 것이 중요합니다.
'DeepLearning > NLP' 카테고리의 다른 글
LoRA 외에도 PEFT(Parameterized Efficient Fine-Tuning) 기술로 사용할 수 있는 여러 가지 방법 (0) | 2024.09.09 |
---|---|
LoRA(Low-Rank Adaptation)와 같은 PEFT(Parameterized Efficient Fine-Tuning) 기술 적용 (0) | 2024.09.09 |
IndexError: index out of range in self (4) | 2024.09.04 |
[LLM] embed_tokens 임베딩 크기 수정하면? (0) | 2024.09.04 |
[LLM][Google/T5] T5ForConditionalGeneration 모델의 구조 (0) | 2024.09.04 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- clustering
- git
- Array
- Lora
- #패스트캠퍼스 #패스트캠퍼스AI부트캠프 #업스테이지패스트캠퍼스 #UpstageAILab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- Transformer
- 해시
- Python
- 티스토리챌린지
- LIST
- 손실함수
- PEFT
- English
- LLM
- 파이썬
- nlp
- speaking
- #패스트캠퍼스 #패스트캠퍼스ai부트캠프 #업스테이지패스트캠퍼스 #upstageailab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- cnn
- recursion #재귀 #자료구조 # 알고리즘
- #패스트캠퍼스 #UpstageAILab #Upstage #부트캠프 #AI #데이터분석 #데이터사이언스 #무료교육 #국비지원 #국비지원취업 #데이터분석취업 등
- 코딩테스트
- 리스트
- classification
- t5
- RAG
- Hugging Face
- Github
- Numpy
- 오블완
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함