Kursinhalt
Einführung in NLP
Einführung in NLP
Anwendung der Textvorverarbeitung in der Praxis
Dokumente
Zunächst, bevor wir mit einem praktischen Beispiel der Textvorverarbeitung fortfahren, ist es wichtig, die Schlüsselelemente eines Textkorpus zu verstehen: Dokumente.
Im Wesentlichen ist jeder Textkorpus eine Sammlung von Dokumenten, daher bedeutet die Vorverarbeitung des Korpus die Vorverarbeitung jedes einzelnen Dokuments.
Laden des Korpus
Zuvor hatten wir unsere Textkorpora als Zeichenfolgenvariablen. In realen Szenarien wird ein Textkorpus jedoch oft in TXT-Dateien für rein textuelle Daten oder in CSV-Dateien mit mehreren Spalten gespeichert, wenn zusätzliche Daten mit dem Text verbunden sind.
In unserem Kurs werden wir entweder mit CSV-Dateien oder TXT-Dateien arbeiten, wobei jedes Dokument von einer neuen Zeile beginnt. Daher verwenden wir die Funktion read_csv()
aus der pandas
-Bibliothek, um einen Textkorpus aus einer Datei zu laden.
Schauen wir uns ein Beispiel an:
import pandas as pd corpus = pd.read_csv( 'https://staging-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 Wagenrücklauf-Symbol als Trennzeichen zu verwenden, was anzeigt, dass jedes Dokument in einer neuen Zeile beginnt. Wir verwenden header=None
, damit die erste Zeile nicht als Kopfzeile betrachtet wird, und wir geben names=['Document']
an, um die einzelne Spalte 'Document' zu benennen. Das Ergebnis ist ein DataFrame
mit einer einzigen Spalte namens 'Document', die 6 Dokumente (Sätze) enthält.
Vorverarbeitung des Korpus
Um den Korpus vorzuverarbeiten, lassen Sie uns zunächst eine Funktion zur Vorverarbeitung jedes der Dokumente erstellen:
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
Lassen Sie uns nun diese Funktion auf unser DataFrame
für jedes Dokument anwenden und eine Spalte mit bereinigten Dokumenten erstellen:
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://staging-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 Sie sehen können, ist unser Korpus erfolgreich vorverarbeitet, sodass wir die vorverarbeitete Version dieses Korpus später im Kurs verwenden werden.
Danke für Ihr Feedback!