6.1 TextVectorization
文字進入神經網路前,必須先轉成數字。本篇使用 Keras TextVectorization 示範文字標準化、切詞、建立 vocabulary,以及常見輸出格式:token index、multi-hot、count 與 TF-IDF。
1. 學習目標
本篇聚焦文字資料如何進入模型。原始句子是字串,模型不能直接計算;需要先把文字轉成固定長度的 token 序列或向量特徵。TextVectorization 可以把這個流程包成 Keras layer,讓訓練與部署使用同一套文字前處理。
2. TextVectorization 做了什麼?
TextVectorization 主要包含四個步驟:
- standardize:例如轉小寫、移除標點。
- split:把句子切成 token。
- adapt:從訓練資料建立 vocabulary。
- output:輸出整數序列、multi-hot、count 或 TF-IDF。
需要注意的是,adapt() 應只使用訓練文字資料,避免 validation/test 資訊洩漏。
3. 常見輸出模式
| output_mode | 輸出 | 適合情境 |
|---|---|---|
int |
token index 序列 | Embedding、LSTM、CNN、Transformer |
multi_hot |
詞是否出現 | 快速文字分類 baseline |
count |
詞頻 | bag-of-words 類任務 |
tf_idf |
TF-IDF 權重 | 傳統文字特徵或小型分類器 |
4. 實作流程
Notebook 會建立一組小型客服評論文字,示範不同 output_mode 的差異,並建立一個 TextVectorization + Embedding + GlobalAveragePooling1D 的簡單文字分類模型。
5. 如何套用自己的資料?
換成自己的文字資料時,先整理成 texts 與 labels。若要使用深度學習模型,通常先用 output_mode='int',再接 Embedding。若資料很小或只是要 baseline,可以先用 multi_hot 或 tf_idf 搭配 Dense layer。
6. 小結
TextVectorization 是 Keras NLP 任務的入口。先把文字前處理放進模型流程,後續才容易銜接 sentiment classification、LSTM、CNN text classifier 或 Transformer。