Keras Tokenizer

Modellierung Künstlicher Intelligenz

Darstellung von Text im Kontext von NLP

Keras Tokenizer

LSTM Sammelsurium

Optimizer

Transformer

Autoencoder

Um die Liste der Worte eines Textes zu erstellen gibt es in Keras einen Tokenizer

#!/usr/bin/env python

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences

sentences = [
    'Die Katze fliegt nicht.',
    'Der Hund kann Katzen nicht leiden.',
]
tokenizer = Tokenizer(num_words = 100, oov_token='<OOV>')
tokenizer.fit_on_texts(sentences)

word_index = tokenizer_word_index
sequences  = tokenizer.texts_to_sequences(sentences)

print(word_index)
print(sequences)
print(tokenizer.texts_to_sequences(['Der Esel fliegt auch nicht']))

padded = pad_sequences(sequences, padding='post', truncating='post', maxlen=6)
print(padded)


In diesem Beispiel wird im Tokenizer-Konstruktor ein optionales Argument oov_token (out-of-vocabulary) mitgegeben. Wozu das gut ist wird weiter unten klar werden.

Durch tokenizer.tokenizer_fit_on_texts(sentences) wird intern eine Liste aller vorkommenden Wort aufgebaut. <OOV> wird weiter unten geklärt.

Auf die Liste der Worte kann mit tokenizer.word_index zugegriffen werden.

{'<OOV>': 1, 'nicht': 2, 'die': 3, 'katze': 4, 'fliegt': 5, 'der': 6, 'hund': 7, 'kann': 8, 'katzen': 9, 'leiden': 10}

Sobald die Liste aller Worte aufgebaut wurde, können beliebige Sätze in Index-Sequenzen umgewandelt werden.

[[3, 4, 5, 2], [6, 7, 8, 9, 2, 10]]

Im Tokenizer-Konstruktor wird noch ein Argument out-of-vocabulary mitgegeben. Dadurch wird im Wortindex ein Platzhalter für unbekannte Worte erstellt. Immer wenn tokenizer.text_to_sequence ein unbekanntes Wort sieht, wird dies durch den Index des Wortes <OOV> ersetzt. Im Beispielsatz sind Esel und auch unbekannte Worte und deshalb steht der Index 1 an den entsprechenden Positionen.

[[6, 1, 5, 1, 2]]

Damit die Sequenzen in einem LSTM oder GRU gelernt werden können, müssen sie gleiche Längen haben. Das wird durch pad_sequences() erreicht.

[[ 3  4  5  2  0  0]
 [ 6  7  8  9  2 10]]

Modellierung Künstlicher Intelligenz

Darstellung von Text im Kontext von NLP LSTM Sammelsurium