Tekstvoorverwerking in de Praktijk Toepassen
Documenten
Allereerst, 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 verzameling 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://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 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 document:
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
Pas deze functie nu toe op onze DataFrame voor elk document en maak een kolom met opgeschoonde documenten:
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://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)
Zoals u kunt zien, is onze corpus succesvol voorbewerkt, dus zullen we later in de cursus de voorbewerkte versie van deze corpus 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.
Can you explain what each step in the preprocessing function does?
What are stop words and why are they removed?
How can I customize the preprocessing steps for my own dataset?
Awesome!
Completion rate improved to 3.45
Tekstvoorverwerking in de Praktijk Toepassen
Veeg om het menu te tonen
Documenten
Allereerst, 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 verzameling 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://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 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 document:
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
Pas deze functie nu toe op onze DataFrame voor elk document en maak een kolom met opgeschoonde documenten:
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://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)
Zoals u kunt zien, is onze corpus succesvol voorbewerkt, dus zullen we later in de cursus de voorbewerkte versie van deze corpus gebruiken.
Bedankt voor je feedback!