ByteLevelBPETokenizerの訓練
#Transformerによる自然言語処理 3章
#ByteLevelBPETokenizer の train メソッドを呼び出す
https://github.com/huggingface/tokenizers/blob/v0.12.0/bindings/python/examples/train_bytelevel_bpe.py と同様
2020年から更新なし
現在は Tokenizer(models.BPE()) を訓練するのが主流?
https://github.com/huggingface/tokenizers/blob/v0.12.0/bindings/python/examples/train_with_datasets.py
ラッパーではないのでカスタマイズ性は高そう
ByteLevelBPETokenizer.train()
https://github.com/huggingface/tokenizers/blob/v0.12.0/bindings/python/py_src/tokenizers/implementations/byte_level_bpe.py#L85-L104
BpeTrainerを作り
https://huggingface.co/docs/tokenizers/python/master/api/reference.html#tokenizers.trainers.BpeTrainer
Tokenizer.trainを呼び出す
https://huggingface.co/docs/tokenizers/python/master/api/reference.html#tokenizers.Tokenizer.train
trainのパラメタ vocab_size=52_000
BpeTrainerのvocab_sizeの指定となる
vocab_size (int, optional) – The size of the final vocabulary, including all tokens and alphabet.
こんなにいる?
tokenizer.get_vocab_size()は19296
trainのfiles引数には["kant.txt"]を渡しているが、1ファイルだけなら"kant.txt"だけでもいい
文字列が渡ってきたら、それを要素とする長さ1のリストに変換する実装
https://github.com/huggingface/tokenizers/blob/v0.12.0/bindings/python/py_src/tokenizers/implementations/byte_level_bpe.py#L102-L103
👉 環境によってByteLevelBPETokenizerの訓練結果が違う!?(1ファイルだけなので"kant.txt"だけを渡すのを強く推奨)
RoBERTa事前訓練用のtokenizerをByteLevelBPETokenizerを使わずに書き換える