Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Anwendung der Textvorverarbeitung in der Praxis | Grundlagen der Textvorverarbeitung
Einführung in NLP mit Python

Anwendung der Textvorverarbeitung in der Praxis

Swipe um das Menü anzuzeigen

Dokumente

Bevor mit einem praktischen Beispiel der Textvorverarbeitung fortgefahren wird, ist es wichtig, die Schlüsselelemente eines Textkorpus zu verstehen: Dokumente.

Note
Definition

Ein Dokument ist ein separates Textstück innerhalb eines Korpus, zum Beispiel eine E-Mail innerhalb eines E-Mail-Korpus.

Im Wesentlichen besteht jeder Textkorpus aus einer Menge von Dokumenten, daher bedeutet die Vorverarbeitung des Korpus die Vorverarbeitung jedes einzelnen Dokuments.

Laden des Korpus

Zuvor hatten wir unseren Textkorpus als String-Variablen. In realen Szenarien wird ein Textkorpus jedoch häufig in TXT-Dateien für rein textuelle Daten oder in CSV-Dateien mit mehreren Spalten gespeichert, wenn zusätzliche Daten mit dem Text verknüpft sind.

In unserem Kurs arbeiten wir entweder mit CSV- oder TXT-Dateien, wobei jedes Dokument mit einer neuen Zeile beginnt. Daher verwenden wir die Funktion read_csv() aus der pandas-Bibliothek, um einen Textkorpus aus einer Datei zu laden.

123456
import pandas as pd corpus = pd.read_csv( 'https://content-media-cdn.codefinity.com/courses/c68c1f2e-2c90-4d5d-8db9-1e97ca89d15e/section_1/chapter_8/example_corpus.txt', sep='\r', header=None, names=['Document']) print(corpus)

Hier lesen wir diese TXT-Datei in ein DataFrame ein. Wir setzen sep='\r', um das Carriage-Return-Symbol als Trennzeichen zu verwenden, was bedeutet, dass jedes Dokument mit einer neuen Zeile beginnt. Wir verwenden header=None, damit die erste Zeile nicht als Kopfzeile interpretiert wird, und geben mit names=['Document'] den Namen der einzigen Spalte als 'Document' an. Dadurch erhalten wir ein DataFrame mit einer einzigen Spalte namens 'Document', die 6 Dokumente (Sätze) enthält.

Vorverarbeitung des Korpus

Um den Korpus vorzuverarbeiten, erstellen wir zunächst eine Funktion zur Vorverarbeitung jedes einzelnen Dokuments:

123456789101112131415161718
import re from nltk.tokenize import word_tokenize from nltk.corpus import stopwords import nltk nltk.download('punkt_tab') nltk.download('stopwords') stop_words = set(stopwords.words('english')) def preprocess_document(doc): doc = re.sub(r'[^a-zA-Z\s]', '', doc, re.I | re.A) doc = doc.lower() doc = doc.strip() tokens = word_tokenize(doc) filtered_tokens = [token for token in tokens if token not in stop_words] doc = ' '.join(filtered_tokens) return doc
Codebeschreibung
expand arrow
def preprocess_document(doc):

Definiert die Funktion preprocess_document, die einen einzelnen String (Dokument) doc als Eingabe erhält.

doc = re.sub(r'[^a-zA-Z\s]', '', doc, re.I | re.A)

Entfernt alle Zeichen aus doc außer Buchstaben und Leerzeichen; die Operation ist dabei nicht zwischen Groß- und Kleinschreibung unterscheidend und nur für ASCII-Zeichen.

doc = doc.lower()

Wandelt das Dokument in Kleinbuchstaben um, um eine einheitliche Groß- und Kleinschreibung sicherzustellen.

doc = doc.strip()

Entfernt führende und nachfolgende Leerzeichen aus dem Dokument.

tokens = word_tokenize(doc)

Zerlegt das bereinigte, in Kleinbuchstaben umgewandelte Dokument in einzelne Wörter (Tokens).

filtered_tokens = [token for token in tokens if token not in stop_words]

Entfernt die Stoppwörter.

doc = ' '.join(filtered_tokens)

Fügt die gefilterten Tokens wieder zu einem einzelnen String zusammen, getrennt durch Leerzeichen.

return doc

Gibt das vorverarbeitete Dokument als einzelnen String zurück.

Wenden wir diese Funktion nun auf unser DataFrame für jedes Dokument an und erstellen eine Spalte mit bereinigten Dokumenten:

123456789101112131415161718192021222324252627
import re from nltk.tokenize import word_tokenize from nltk.corpus import stopwords import nltk import pandas as pd nltk.download('punkt_tab') nltk.download('stopwords') stop_words = set(stopwords.words('english')) def preprocess_document(doc): doc = re.sub(r'[^a-zA-Z\s]', '', doc, re.I | re.A) doc = doc.lower() doc = doc.strip() tokens = word_tokenize(doc) filtered_tokens = [token for token in tokens if token not in stop_words] doc = ' '.join(filtered_tokens) return doc corpus = pd.read_csv( 'https://content-media-cdn.codefinity.com/courses/c68c1f2e-2c90-4d5d-8db9-1e97ca89d15e/section_1/chapter_8/example_corpus.txt', sep='\r', header=None, names=['Document']) corpus['Cleaned_Document'] = corpus['Document'].apply(preprocess_document) print(corpus)

Wie zu sehen ist, wurde unser Korpus erfolgreich vorverarbeitet. Die vorverarbeitete Version dieses Korpus wird später im Kurs verwendet.

question mark

Wählen Sie die korrekte Ausgabe des folgenden Codeausschnitts aus.

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 9

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Anwendung der Textvorverarbeitung in der Praxis

Dokumente

Bevor mit einem praktischen Beispiel der Textvorverarbeitung fortgefahren wird, ist es wichtig, die Schlüsselelemente eines Textkorpus zu verstehen: Dokumente.

Note
Definition

Ein Dokument ist ein separates Textstück innerhalb eines Korpus, zum Beispiel eine E-Mail innerhalb eines E-Mail-Korpus.

Im Wesentlichen besteht jeder Textkorpus aus einer Menge von Dokumenten, daher bedeutet die Vorverarbeitung des Korpus die Vorverarbeitung jedes einzelnen Dokuments.

Laden des Korpus

Zuvor hatten wir unseren Textkorpus als String-Variablen. In realen Szenarien wird ein Textkorpus jedoch häufig in TXT-Dateien für rein textuelle Daten oder in CSV-Dateien mit mehreren Spalten gespeichert, wenn zusätzliche Daten mit dem Text verknüpft sind.

In unserem Kurs arbeiten wir entweder mit CSV- oder TXT-Dateien, wobei jedes Dokument mit einer neuen Zeile beginnt. Daher verwenden wir die Funktion read_csv() aus der pandas-Bibliothek, um einen Textkorpus aus einer Datei zu laden.

123456
import pandas as pd corpus = pd.read_csv( 'https://content-media-cdn.codefinity.com/courses/c68c1f2e-2c90-4d5d-8db9-1e97ca89d15e/section_1/chapter_8/example_corpus.txt', sep='\r', header=None, names=['Document']) print(corpus)

Hier lesen wir diese TXT-Datei in ein DataFrame ein. Wir setzen sep='\r', um das Carriage-Return-Symbol als Trennzeichen zu verwenden, was bedeutet, dass jedes Dokument mit einer neuen Zeile beginnt. Wir verwenden header=None, damit die erste Zeile nicht als Kopfzeile interpretiert wird, und geben mit names=['Document'] den Namen der einzigen Spalte als 'Document' an. Dadurch erhalten wir ein DataFrame mit einer einzigen Spalte namens 'Document', die 6 Dokumente (Sätze) enthält.

Vorverarbeitung des Korpus

Um den Korpus vorzuverarbeiten, erstellen wir zunächst eine Funktion zur Vorverarbeitung jedes einzelnen Dokuments:

123456789101112131415161718
import re from nltk.tokenize import word_tokenize from nltk.corpus import stopwords import nltk nltk.download('punkt_tab') nltk.download('stopwords') stop_words = set(stopwords.words('english')) def preprocess_document(doc): doc = re.sub(r'[^a-zA-Z\s]', '', doc, re.I | re.A) doc = doc.lower() doc = doc.strip() tokens = word_tokenize(doc) filtered_tokens = [token for token in tokens if token not in stop_words] doc = ' '.join(filtered_tokens) return doc
Codebeschreibung
expand arrow
def preprocess_document(doc):

Definiert die Funktion preprocess_document, die einen einzelnen String (Dokument) doc als Eingabe erhält.

doc = re.sub(r'[^a-zA-Z\s]', '', doc, re.I | re.A)

Entfernt alle Zeichen aus doc außer Buchstaben und Leerzeichen; die Operation ist dabei nicht zwischen Groß- und Kleinschreibung unterscheidend und nur für ASCII-Zeichen.

doc = doc.lower()

Wandelt das Dokument in Kleinbuchstaben um, um eine einheitliche Groß- und Kleinschreibung sicherzustellen.

doc = doc.strip()

Entfernt führende und nachfolgende Leerzeichen aus dem Dokument.

tokens = word_tokenize(doc)

Zerlegt das bereinigte, in Kleinbuchstaben umgewandelte Dokument in einzelne Wörter (Tokens).

filtered_tokens = [token for token in tokens if token not in stop_words]

Entfernt die Stoppwörter.

doc = ' '.join(filtered_tokens)

Fügt die gefilterten Tokens wieder zu einem einzelnen String zusammen, getrennt durch Leerzeichen.

return doc

Gibt das vorverarbeitete Dokument als einzelnen String zurück.

Wenden wir diese Funktion nun auf unser DataFrame für jedes Dokument an und erstellen eine Spalte mit bereinigten Dokumenten:

123456789101112131415161718192021222324252627
import re from nltk.tokenize import word_tokenize from nltk.corpus import stopwords import nltk import pandas as pd nltk.download('punkt_tab') nltk.download('stopwords') stop_words = set(stopwords.words('english')) def preprocess_document(doc): doc = re.sub(r'[^a-zA-Z\s]', '', doc, re.I | re.A) doc = doc.lower() doc = doc.strip() tokens = word_tokenize(doc) filtered_tokens = [token for token in tokens if token not in stop_words] doc = ' '.join(filtered_tokens) return doc corpus = pd.read_csv( 'https://content-media-cdn.codefinity.com/courses/c68c1f2e-2c90-4d5d-8db9-1e97ca89d15e/section_1/chapter_8/example_corpus.txt', sep='\r', header=None, names=['Document']) corpus['Cleaned_Document'] = corpus['Document'].apply(preprocess_document) print(corpus)

Wie zu sehen ist, wurde unser Korpus erfolgreich vorverarbeitet. Die vorverarbeitete Version dieses Korpus wird später im Kurs verwendet.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 9
some-alt