Предобработка данных

Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

David Cecchini

Data Scientist

Классификация текста

Применения классификации текста:

  • Автоматическая классификация новостей
  • Классификация документов в бизнесе
  • Сегментация очередей в службе поддержки
  • И многое другое!
Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Отличия от бинарной классификации

Что меняется при переходе к многоклассовой классификации:

  • Форма выходной переменной y
  • Количество нейронов на выходном слое
  • Функция активации на выходном слое
  • Функция потерь
Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Отличия от бинарной классификации

Форма выходной переменной y:

  • Унитарное кодирование классов
# Example: num_classes = 3
y[0] = [0, 1, 0]
y.shape = (N, num_classes)

Количество нейронов на выходном слое:

# Output layer
model.add(Dense(num_classes))
Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Отличия от бинарной классификации

Разница между числами на прямой и в пространстве, иллюстрирующая применение унитарного кодирования

Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Отличия от бинарной классификации

Функция активации на выходном слое:

  • softmax возвращает вероятность каждого класса
# Output layer
model.add(Dense(num_classes, activation="softmax"))

Функция потерь:

  • Вместо бинарной используется категориальная кросс-энтропия
# Compile the model
model.compile(loss='categorical_crossentropy')
Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Подготовка текстовых категорий для Keras

y = ["sports", "economy", "data_science", "sports", "finance"]
# Transform to pandas series object
y_series = pd.Series(y, dtype="category")

# Print the category codes print(y_series.cat.codes)
0    3
1    1
2    0
3    3
4    2
Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Предобработка y

from tensorflow.keras.utils import to_categorical

y = np.array([0, 1, 2]) # Change to categorical y_prep = to_categorical(y) print(y_prep)
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]
Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Давайте потренируемся!

Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Preparing Video For Download...