3.1 LLMのサブワードトークナイザーの使用方法|BERTやGPT-2でのトークン化の解説

公開日: 2024-11-10 最終更新日: 2026-08-24 バージョン: 4
3.1 LLMのサブワードトークナイザーの使用方法|BERTやGPT-2でのトークン化の解説

前のセクション「トークン化とデータ前処理の自動化」では、データのトークン化と前処理の基本について学びました。

3.1 サブワードトークナイザーの使用方法

LLM(大規模言語モデル)では、サブワードトークナイザーが主に使われます。サブワードトークナイザーは、単語全体ではなく単語の一部(サブワード)に分割する手法で、未知語や新語にも柔軟に対応できます。このセクションでは、Hugging FaceのAutoTokenizerを使って、サブワードトークナイザーの基本的な使い方を紹介します。

アルゴリズム採用モデル特徴
WordPieceBERT未知語を ##接尾辞 で表現
Byte-Pair EncodingGPT-2頻出ペアを結合し語彙を圧縮
SentencePieceT5、多くの多言語モデル単語区切りに依存せず日本語に強い
UnigramXLNet、ALBERT確率モデルで最適な分割を選ぶ

サブワードトークナイザーとは?

サブワードトークナイザーは、BERTやGPTなどのモデルで採用されており、単語を細かいサブワードに分割することにより、モデルがより多くの単語や文脈を理解できるようにします。例えば、"unbelievable"という単語は、"un", "believ", "able"に分割されます。

サブワードトークナイザーの実装例


from transformers import AutoTokenizer

# BERTのトークナイザーを読み込み
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")

# テキストの準備
text = "Tokenization is a crucial step in NLP."

# サブワードトークン化
tokens = tokenizer.tokenize(text)
token_ids = tokenizer.convert_tokens_to_ids(tokens)

print("Tokens:", tokens)
print("Token IDs:", token_ids)
        

このコードでは、BERTのトークナイザーを使って、テキストをサブワードに分割し、数値IDに変換しています。出力は以下のようになります:

  • Tokens: ['token', '##ization', 'is', 'a', 'crucial', 'step', 'in', 'nl', '##p']
  • Token IDs: [19204, 2154, 2003, 1037, 9325, 3350, 1999, 17953, 2361]
もっと詳しく

出力中の ##ization## は「直前のトークンに続く断片」を表す WordPiece 固有の印です。デコード時にはこの印が結合の目印になります。

Byte-Pair Encoding (BPE) トークナイザー

サブワードトークナイザーの中でも、Byte-Pair Encoding (BPE)はよく使われる手法です。BPEは、頻出する文字のペアを結合し、より短いサブワードに分割します。これにより、未知の単語にも対応できます。


# GPT-2のトークナイザーを使用したBPE例
tokenizer = AutoTokenizer.from_pretrained("gpt2")

# テキストの準備
text = "The quick brown fox jumps over the lazy dog."

# トークン化
tokens = tokenizer.tokenize(text)
token_ids = tokenizer.convert_tokens_to_ids(tokens)

print("Tokens:", tokens)
print("Token IDs:", token_ids)
        

この例では、GPT-2のトークナイザーを使って、BPEによるサブワードトークン化を行っています。出力は以下のようになります:

  • Tokens: ['The', 'Ġquick', 'Ġbrown', 'Ġfox', 'Ġjumps', 'Ġover', 'Ġthe', 'Ġlazy', 'Ġdog', '.']
  • Token IDs: [464, 1829, 3036, 18435, 11756, 655, 262, 1468, 3290, 13]

まとめ

サブワードトークナイザーは、未知の単語や新語にも柔軟に対応できる強力なツールです。Hugging FaceのAutoTokenizerを使えば、少ないコードで実装できます。次のセクションでは、データクレンジングの自動化について詳しく解説します。

次は、「3.2 データクレンジングの自動化」です。データのノイズを取り除き、トレーニングに適したデータセットを作る方法を紹介します。


下田 昌平
下田 昌平
開発と設計を担当。1994年からプログラミングを始め、今もなお最新技術への探究心を持ち続けています。

質問と回答

このトピックについて質問はありますか?以下からお気軽にどうぞ(登録不要)。担当チームが内容を確認し、回答します。

まだ質問はありません。最初の質問をどうぞ。

質問する

確認のため、入力されたメールアドレス宛に一度だけ確認メールをお送りします。質問は確認後に公開されます。