Wstępne przetwarzanie danych

Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

David Cecchini

Data Scientist

Klasyfikacja tekstu

Zastosowania klasyfikacji tekstu:

  • Automatyczna klasyfikacja wiadomości
  • Klasyfikacja dokumentów w firmach
  • Segmentacja kolejek w obsłudze klienta
  • I wiele więcej!
Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Zmiany względem klasyfikacji binarnej

Co zmienia się przy przejściu z klasyfikacji binarnej na wieloklasową:

  • Kształt zmiennej wyjściowej y
  • Liczba jednostek na warstwie wyjściowej
  • Funkcja aktywacji na warstwie wyjściowej
  • Funkcja straty
Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Zmiany względem klasyfikacji binarnej

Kształt zmiennej wyjściowej y:

  • Kodowanie one-hot klas
# Example: num_classes = 3
y[0] = [0, 1, 0]
y.shape = (N, num_classes)

Liczba jednostek na warstwie wyjściowej:

# Output layer
model.add(Dense(num_classes))
Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Zmiany względem klasyfikacji binarnej

Różnica między liczbami w linii a w przestrzeni, ilustrująca zastosowanie kodowania one-hot

Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Zmiany względem klasyfikacji binarnej

Funkcja aktywacji na warstwie wyjściowej:

  • softmax podaje prawdopodobieństwo każdej klasy
# Output layer
model.add(Dense(num_classes, activation="softmax"))

Funkcja straty:

  • Zamiast binarnej używamy kategorycznej entropii krzyżowej
# Compile the model
model.compile(loss='categorical_crossentropy')
Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Przygotowanie kategorii tekstowych dla 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
Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Przetwarzanie wstępne 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.]]
Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Czas na ćwiczenia!

Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Preparing Video For Download...