Tekstvoorverwerking in de Praktijk Toepassen
Veeg om het menu te tonen
Documenten
Voordat we verder gaan met een praktisch voorbeeld van tekstvoorbewerking, is het belangrijk om de belangrijkste componenten van een tekstcorpus te begrijpen: documenten.
Een document is een afzonderlijk tekstbestand binnen een corpus, bijvoorbeeld een e-mail binnen een corpus van e-mails.
In wezen is elk tekstcorpus een verzameling documenten, dus het voorbewerken van het corpus betekent het voorbewerken van elk van de documenten.
Het laden van het corpus
Eerder hadden we ons tekstcorpus als stringvariabelen. In praktijksituaties wordt een tekstcorpus echter vaak opgeslagen in TXT-bestanden voor puur tekstuele data of in CSV-bestanden met meerdere kolommen wanneer er extra gegevens aan de tekst zijn gekoppeld.
In onze cursus werken we met CSV- of TXT-bestanden, waarbij elk document op een nieuwe regel begint. Daarom gebruiken we de functie read_csv() uit de pandas-bibliotheek om een tekstcorpus uit een bestand te 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 lezen we dit TXT-bestand in een DataFrame. We stellen sep='\r' in om het carriage return-symbool als scheidingsteken te gebruiken, wat aangeeft dat elk document op een nieuwe regel begint. We gebruiken header=None zodat de eerste regel niet als kop wordt beschouwd, en we geven names=['Document'] op om de enige kolom 'Document' te noemen. Hierdoor krijgen we een DataFrame met één kolom genaamd 'Document' die 6 documenten (zinnen) bevat.
Voorbewerken van het corpus
Om het corpus voor te bewerken, maken we eerst een functie voor het voorbewerken van elk van de documenten:
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):
Definieert de functie preprocess_document die een enkele string (document) doc als invoer neemt.
doc = re.sub(r'[^a-zA-Z\s]', '', doc, re.I | re.A)
Verwijdert alle tekens uit doc behalve alfabetische tekens en spaties, waarbij de bewerking hoofdletterongevoelig en alleen ASCII is.
doc = doc.lower()
Zet het document om naar kleine letters voor consistente hoofdletterbehandeling.
doc = doc.strip()
Verwijdert witruimte aan het begin en einde van het document.
tokens = word_tokenize(doc)
Tokeniseert het opgeschoonde, naar kleine letters omgezette document in afzonderlijke woorden (tokens).
filtered_tokens = [token for token in tokens if token not in stop_words]
Filtert de stopwoorden eruit.
doc = ' '.join(filtered_tokens)
Voegt de gefilterde tokens weer samen tot één string, gescheiden door spaties.
return doc
Geeft het voorbewerkte document terug als één string.
Laten we deze functie nu toepassen op onze DataFrame voor elk document en een kolom met opgeschoonde documenten aanmaken:
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)
Zoals je kunt zien, is onze corpus succesvol voorbewerkt. We zullen de voorbewerkte versie van deze corpus later in de cursus gebruiken.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.