본문 바로가기

NLP 자연어 처리, Natural Language Processing

나만의 Tokenizer, vocab 만들기

해당 코드를 실행하면 지정한 텍스트 파일을 기준으로 Vocabulary를 생성합니다.

 

from tokenizers import BertWordPieceTokenizer

# Initialize a tokenizer
tokenizer = BertWordPieceTokenizer(clean_text=False, handle_chinese_chars=False)

vocab_size    = 50000   ## 임의 지정
min_frequency = 5  ## 단어의 최소 발생 빈도
limit_alphabet= 6000 ## 알파벳 제한

trainer = tokenizer.train(
    files=['가지고 있는 텍스트 파일'],
    vocab_size=vocab_size,  
    min_frequency=min_frequency,  
    show_progress=True,
    limit_alphabet=limit_alphabet,
    special_tokens=['[PAD]', '[UNK]', '[CLS]', '[SEP]', '[MASK]',
                    '[BOS]', '[EOS]', '[UNK0]', '[UNK1]', '[UNK2]', '[UNK3]', '[UNK4]', '[UNK5]', '[UNK6]', '[UNK7]', '[UNK8]', '[UNK9]',
                    '[unused0]', '[unused1]', '[unused2]', '[unused3]', '[unused4]', '[unused5]', '[unused6]', '[unused7]', '[unused8]', '[unused9]',
                    '[unused10]', '[unused11]', '[unused12]', '[unused13]', '[unused14]', '[unused15]', '[unused16]', '[unused17]', '[unused18]', '[unused19]',
                    '[unused20]', '[unused21]', '[unused22]', '[unused23]', '[unused24]', '[unused25]', '[unused26]', '[unused27]', '[unused28]', '[unused29]',
                    '[unused30]', '[unused31]', '[unused32]', '[unused33]', '[unused34]', '[unused35]', '[unused36]', '[unused37]', '[unused38]', '[unused39]',
                    '[unused40]', '[unused41]', '[unused42]', '[unused43]', '[unused44]', '[unused45]', '[unused46]', '[unused47]', '[unused48]', '[unused49]',
                    '[unused50]', '[unused51]', '[unused52]', '[unused53]', '[unused54]', '[unused55]', '[unused56]', '[unused57]', '[unused58]', '[unused59]',
                    '[unused60]', '[unused61]', '[unused62]', '[unused63]', '[unused64]', '[unused65]', '[unused66]', '[unused67]', '[unused68]', '[unused69]',
                    '[unused70]', '[unused71]', '[unused72]', '[unused73]', '[unused74]', '[unused75]', '[unused76]', '[unused77]', '[unused78]', '[unused79]',
                    '[unused80]', '[unused81]', '[unused82]', '[unused83]', '[unused84]', '[unused85]', '[unused86]', '[unused87]', '[unused88]', '[unused89]',
                    '[unused90]', '[unused91]', '[unused92]', '[unused93]', '[unused94]', '[unused95]', '[unused96]', '[unused97]', '[unused98]', '[unused99]'
                   ]  # 스페셜 토큰
)

tokenizer.save_model('.', 'huggingface_tokenizer_kor_32000')

 

반응형