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.
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.
123456import 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:
123456789101112131415161718import 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
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:
123456789101112131415161718192021222324252627import 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.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
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.
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.
123456import 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:
123456789101112131415161718import 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
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:
123456789101112131415161718192021222324252627import 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.
Danke für Ihr Feedback!