Whatsapp Telegram Telegram Call Anrufen

Verarbeitung natürlicher Sprache (NLP) mit Keras


1. Textvorverarbeitung

Die Textvorverarbeitung ist ein wesentlicher Schritt in der Verarbeitung natürlicher Sprache. Sie umfasst das Bereinigen des Textes und die Vorbereitung der Daten, sodass sie für maschinelles Lernen geeignet sind. Zu den typischen Schritten gehören das Entfernen von Sonderzeichen, das Umwandeln von Text in Kleinbuchstaben, das Entfernen von Stoppwörtern und die Tokenisierung.

Beispiel:
import re
import string

def preprocess_text(text):
    # Entfernen von HTML-Tags
    text = re.sub(r'<.*?>', '', text)
    # Entfernen von Satzzeichen und Zahlen
    text = re.sub(r'[^\w\s]', '', text)
    text = re.sub(r'\d+', '', text)
    # Umwandeln in Kleinbuchstaben
    text = text.lower()
    # Entfernen von Stoppwörtern (optional, hier als Platzhalter)
    stop_words = set(['und', 'oder', 'der', 'die', 'das'])
    text = ' '.join([word for word in text.split() if word not in stop_words])
    return text

# Beispieltext
text = "Dies ist ein Beispieltext, um die Textvorverarbeitung zu demonstrieren."
processed_text = preprocess_text(text)
print(processed_text)

Ausgabe:

dies ist ein beispieltext um textvorverarbeitung zu demonstrieren

In diesem Beispiel bereinigen wir den Text, indem wir HTML-Tags, Satzzeichen und Zahlen entfernen, den Text in Kleinbuchstaben umwandeln und Stoppwörter entfernen.


2. Tokenisierung und Sequenzierung

Tokenisierung ist der Prozess, bei dem der Text in einzelne Wörter (Token) aufgeteilt wird. Sequenzierung konvertiert diese Token in numerische Werte, die als Eingabe für neuronale Netzwerke verwendet werden können.

Beispiel:

from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences

# Beispieltexte
texts = [
    "Keras ist eine großartige Bibliothek für Deep Learning.",
    "Die Verarbeitung natürlicher Sprache ist spannend."
]

# Tokenisierung
tokenizer = Tokenizer(num_words=100)
tokenizer.fit_on_texts(texts)
sequences = tokenizer.texts_to_sequences(texts)

# Sequenzen mit Padding vereinheitlichen
padded_sequences = pad_sequences(sequences, maxlen=10)
print(padded_sequences)

Ausgabe:

[[ 1  3  4  5  6  7  8  9  0  0]
 [10  1 11 12 13 14  0  0  0  0]]

In diesem Beispiel verwenden wir den Tokenizer von Keras, um Texte zu tokenisieren und in numerische Sequenzen zu konvertieren. Die Sequenzen werden dann mit pad_sequences auf eine einheitliche Länge gebracht.


3. Word Embeddings

Word Embeddings sind dichte Vektorrepräsentationen von Wörtern, die semantische Beziehungen zwischen Wörtern erfassen. In Keras kann die Embedding-Schicht verwendet werden, um Word Embeddings zu erstellen.


Beispiel:

from keras.models import Sequential
from keras.layers import Embedding, Flatten, Dense

# Beispiel-Wortindex und Sequenzen
word_index = tokenizer.word_index
vocab_size = len(word_index) + 1

# Erstellen eines Modells mit Embedding-Schicht
model = Sequential()
model.add(Embedding(input_dim=vocab_size, output_dim=50, input_length=10))
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))

# Kompilieren des Modells
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# Ausgabe der Modellzusammenfassung
print(model.summary())

Ausgabe:

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
embedding (Embedding)        (None, 10, 50)            750       
_________________________________________________________________
flatten (Flatten)            (None, 500)               0         
_________________________________________________________________
dense (Dense)                (None, 1)                 501       
=================================================================
Total params: 1,251
Trainable params: 1,251
Non-trainable params: 0
_________________________________________________________________

In diesem Beispiel erstellen wir ein einfaches Modell mit einer Embedding-Schicht, die Wörter in dichte Vektoren von Größe 50 umwandelt. Diese Vektoren werden dann abgeflacht und durch eine dichte Schicht geführt.


4. Aufbau von NLP-Modellen mit Keras

Mit Keras können komplexe NLP-Modelle erstellt werden, die verschiedene Arten von neuronalen Netzwerken wie LSTMs, GRUs und CNNs verwenden, um Textdaten zu verarbeiten.

Beispiel: LSTM-Modell für die Textklassifikation

from keras.models import Sequential
from keras.layers import Embedding, LSTM, Dense

# Beispiel-Wortindex und Sequenzen
word_index = tokenizer.word_index
vocab_size = len(word_index) + 1

# Erstellen eines LSTM-Modells
model = Sequential()
model.add(Embedding(input_dim=vocab_size, output_dim=50, input_length=10))
model.add(LSTM(64))
model.add(Dense(1, activation='sigmoid'))

# Kompilieren des Modells
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# Ausgabe der Modellzusammenfassung
print(model.summary())

Ausgabe:

Model: "sequential_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
embedding (Embedding)        (None, 10, 50)            750       
_________________________________________________________________
lstm (LSTM)                  (None, 64)                29440     
_________________________________________________________________
dense (Dense)                (None, 1)                 65        
=================================================================
Total params: 30,255
Trainable params: 30,255
Non-trainable params: 0
_________________________________________________________________


In diesem Beispiel erstellen wir ein LSTM-Modell zur Textklassifikation. Das Modell besteht aus einer Embedding-Schicht, einer LSTM-Schicht und einer Ausgabeschicht mit einer Sigmoid-Aktivierungsfunktion.

Diese detaillierten Erklärungen und Beispiele sollten Ihnen helfen, die verschiedenen Aspekte der Verarbeitung natürlicher Sprache mit Keras zu verstehen und in Ihren eigenen Projekten anzuwenden.


CEO Image

Ali Ajjoub

info@ajjoub.com

Adresse 0049-15773651670

Adresse Jacob-winter-platz,1 01239 Dresden

Buchen Sie jetzt Ihren Termin für eine umfassende und individuelle Beratung.

Termin Buchen

Kontaktieren Sie uns

Lassen Sie uns K o n t a k t aufnehmen!