Views
No views yet
1from datasets import load_dataset
2from tokenizers import ByteLevelBPETokenizer
3
4tokenizer = ByteLevelBPETokenizer(unicode_normalizer="nfkc", trim_offsets=True)
5ds = load_dataset("Bingsu/my-korean-training-corpus", use_auth_token=True)
6# 공개된 데이터를 사용할 경우
7# ds = load_dataset("cc100", lang="ko") # 50GB
8
9
10# 이 데이터는 35GB이고, 데이터가 너무 많으면 컴퓨터가 터져서 일부만 사용했습니다.
11ds_sample = ds["train"].train_test_split(0.35, seed=20220819)["test"]
12
13
14def gen_text(batch_size: int = 5000):
15 for i in range(0, len(ds_sample), batch_size):
16 yield ds_sample[i : i + batch_size]["text"]
17
18
19tokenizer.train_from_iterator(
20 gen_text(),
21 vocab_size=50265, # roberta-base와 같은 크기
22 min_frequency=2,
23 special_tokens=[
24 "<s>",
25 "<pad>",
26 "</s>",
27 "<unk>",
28 "<mask>",
29 ],
30)
31tokenizer.save("my_tokenizer.json")
1from tokenizers import Tokenizer
2from tokenizers.processors import RobertaProcessing
3
4tokenizer = Tokenizer.from_file("my_tokenizer.json")
5tokenizer.post_processor = RobertaProcessing(
6 ("</s>", tokenizer.token_to_id("</s>")),
7 ("<s>", tokenizer.token_to_id("<s>")),
8 add_prefix_space=False,
9)
10
11tokenizer.save("my_tokenizer2.json")add_prefix_space=False옵션은 roberta-base를 그대로 따라하기 위한 것입니다.model_max_length 설정을 해주었습니다.1from transformers import RobertaTokenizerFast
2
3rt = RobertaTokenizerFast(tokenizer_file="tokenizer.json")
4rt.save_pretrained("./my_roberta_tokenizer")tokenizer_config.json 파일에 "model_max_length": 512,를 추가.1from transformers import AutoTokenizer
2
3tokenizer = AutoTokenizer.from_pretrained("Bingsu/BBPE_tokenizer_test")
4
5# tokenizer는 RobertaTokenizerFast 클래스가 됩니다.tokenizer.json파일을 먼저 다운받습니다.1from transformers import BartTokenizerFast, BertTokenizerFast
2
3bart_tokenizer = BartTokenizerFast(tokenizer_file="tokenizer.json")
4bert_tokenizer = BertTokenizerFast(tokenizer_file="tokenizer.json")