資料前處理

使用 Keras 建立語言模型的循環神經網路(RNN)

David Cecchini

Data Scientist

文字分類

文字分類的應用:

  • 新聞自動分類
  • 企業文件分類
  • 客服排隊分流
  • 還有更多!
使用 Keras 建立語言模型的循環神經網路(RNN)

與二元分類的差異

由二元分類改為多類別時的變動:

  • 輸出變數 y 的形狀
  • 輸出層的單元數
  • 輸出層的啟動函式
  • 損失函式
使用 Keras 建立語言模型的循環神經網路(RNN)

與二元分類的差異

輸出變數 y 的形狀:

  • 類別的一次編碼(one-hot encoding)
# Example: num_classes = 3
y[0] = [0, 1, 0]
y.shape = (N, num_classes)

輸出層的單元數:

# Output layer
model.add(Dense(num_classes))
使用 Keras 建立語言模型的循環神經網路(RNN)

與二元分類的差異

展示數字在一條線上與在空間中的差異,說明 one-hot encoding 的應用

使用 Keras 建立語言模型的循環神經網路(RNN)

與二元分類的差異

輸出層的啟動函式:

  • softmax 會回傳每個類別的機率
# Output layer
model.add(Dense(num_classes, activation="softmax"))

損失函式:

  • 不再用二元損失,改用類別交叉熵
# Compile the model
model.compile(loss='categorical_crossentropy')
使用 Keras 建立語言模型的循環神經網路(RNN)

為 keras 準備文字類別

y = ["sports", "economy", "data_science", "sports", "finance"]
# 轉為 pandas 的 series 物件
y_series = pd.Series(y, dtype="category")

# 列印類別代碼 print(y_series.cat.codes)
0    3
1    1
2    0
3    3
4    2
使用 Keras 建立語言模型的循環神經網路(RNN)

前處理 y

from tensorflow.keras.utils import to_categorical

y = np.array([0, 1, 2]) # 轉為類別格式 y_prep = to_categorical(y) print(y_prep)
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]
使用 Keras 建立語言模型的循環神經網路(RNN)

一起來練習吧!

使用 Keras 建立語言模型的循環神經網路(RNN)

Preparing Video For Download...