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

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

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

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

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

サブワードトークナイザーは、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]

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 データクレンジングの自動化」です。データのノイズを除去し、トレーニングに適したデータセットを作成する方法を紹介します。

公開日: 2024-11-10
最終更新日: 2025-04-30
バージョン: 1

下田 昌平

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

チーム

任 弘毅

株式会社レシートローラーにて開発とサポートを担当。POSレジやShopifyアプリ開発の経験を活かし、業務のデジタル化を促進。

下田 昌平

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