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

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

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

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