TensorFlowにおけるテキストデータの前処理は、機械学習モデル(特に自然言語処理モデル)に入力できる形式にテキストを変換する重要なステップです。主な処理には「トークナイズ(tokenization)」と「パディング(padding)」があります。以下にそれぞれの処理について詳しく説明します。
1. トークナイズ(Tokenization)
概要:
テキストを単語やサブワード、文字などの単位に分割し、それを数値に変換する処理です。モデルはテキストをそのまま扱うことができないため、数値化する必要があります。
一般的な手順:
-
単語単位の分割(word-level tokenization)
-
例:
"TensorFlow is powerful."→["TensorFlow", "is", "powerful", "."]
-
-
数値への変換(整数エンコーディング)
-
単語ごとにユニークな整数IDを割り当てる。
-
例:
{"TensorFlow": 1, "is": 2, "powerful": 3, ".": 4}
-
TensorFlowでの実装(Tokenizer):
Tokenizer):
補足:
-
tokenizer.word_indexを使うと語彙とIDの対応を確認できます。 -
サブワード単位のトークナイズやSentencePieceなども別のトークナイザーとして使用されます。
2. パディング(Padding)
概要:
モデルの入力テンソルは固定サイズである必要がありますが、文の長さは可変です。そこで、短い文に対しては指定した長さに揃えるために「パディング」を行います。
例:
→ パディング後:
TensorFlowでの実装(pad_sequences):
pad_sequences):
パラメータ:
-
padding='pre'または'post'(どちら側に0を追加するか) -
maxlen=指定長(最大長を指定してカット/パディングする) -
truncating='pre'または'post'(長すぎるシーケンスをどちら側からカットするか)
応用例:テキストの前処理フロー
注意点
-
トークナイザーは訓練データでfitし、検証/テストデータにも同じ設定で使う必要があります。
-
未知語(語彙に存在しない単語)への対応として
oov_token(out-of-vocabulary)を設定することが推奨されます。
まとめ
| ステップ | 目的 | 主なAPI |
|---|---|---|
| トークナイズ | テキスト → 整数IDの列 | Tokenizer |
| パディング | 長さを統一してテンソル化 | pad_sequences |
これらの処理を適切に行うことで、テキストデータをニューラルネットワークに入力可能な形式に変換できます。
必要に応じて、Subword Tokenizer(tensorflow_textやTFDSのSubwordTextEncoderなど)や、TextVectorizationレイヤー(Kerasの高水準API)も活用できます。
生成日:2025/05/22