2.2 LLMのトレーニングデータ準備と前処理|Pythonでのデータクレンジングとトークナイゼーション

前のセクション「Hugging FaceのTransformersを使ったファインチューニング」では、ファインチューニングの手法とBERTモデルの具体例を紹介しました。

トレーニングデータの準備と前処理

LLM(大規模言語モデル)のファインチューニングには、適切なトレーニングデータの準備と前処理が不可欠です。データの品質は、モデルのパフォーマンスに大きく影響を与えます。このセクションでは、テキストデータのクレンジング、トークナイゼーション、そして効率的なデータ準備方法について解説します。

データクレンジング

まずは、データクレンジングです。テキストデータには、不要な空白、特殊文字、HTMLタグなどが含まれていることが多いため、これらを取り除く処理が必要です。以下は、Pythonを使った簡単なデータクレンジングの例です。


import re

# テキストのクレンジング関数
def clean_text(text):
    text = re.sub(r"<.*?>", "", text)  # HTMLタグの削除
    text = re.sub(r"[^a-zA-Z0-9\s]", "", text)  # 特殊文字の削除
    text = re.sub(r"\s+", " ", text)  # 複数の空白を一つに
    return text.strip()

# 使用例
sample_text = "Hello, world! 
This is a sample text." cleaned_text = clean_text(sample_text) print(cleaned_text) # 出力: "Hello world This is a sample text"

トークナイゼーション

次に、トークナイゼーションです。これは、テキストをモデルが理解できる形式に変換するプロセスです。Hugging FaceのTransformersライブラリを使用すると、簡単にトークナイゼーションができます。


from transformers import BertTokenizer

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

# サンプルテキストのトークナイゼーション
text = "Hello, this is a sample text for tokenization."
tokens = tokenizer.tokenize(text)
input_ids = tokenizer.encode(text, add_special_tokens=True)

print("Tokens:", tokens)
print("Input IDs:", input_ids)
        

データセットの準備

トレーニングデータをモデルに入力する前に、データセットを整理する必要があります。Hugging Faceのdatasetsライブラリを使用すると、効率的にデータセットを準備できます。


from datasets import load_dataset

# IMDbデータセットの読み込み
dataset = load_dataset("imdb")

# データの前処理関数
def preprocess(data):
    text = clean_text(data["text"])
    tokens = tokenizer(text, truncation=True, padding="max_length")
    return tokens

# データのトークナイズ
train_data = dataset["train"].map(preprocess, batched=True)
test_data = dataset["test"].map(preprocess, batched=True)

# データ形式の確認
print(train_data[0])
        

データ前処理のポイント

  • データの多様性: データセットに多様なトピックや文脈が含まれていると、モデルの汎用性が高まります。
  • データのバランス: クラスが偏っている場合、モデルが偏った予測をする可能性があるため、データのバランスを調整することが重要です。
  • 効率的なバッチ処理: 大規模データセットでは、バッチ処理を活用することでトレーニングが効率化します。

次のセクション「2.3 トレーニングの実行とモデル評価」では、トレーニングの実行方法と、モデルの評価手法について詳しく解説します。

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

下田 昌平

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