Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Anvendelse af Tekstforbehandling i Praksis | Grundlæggende Tekstforbehandling
Introduktion til NLP

bookAnvendelse af Tekstforbehandling i Praksis

Dokumenter

Først, inden vi går videre med et praktisk eksempel på tekstforbehandling, er det vigtigt at forstå de centrale komponenter i et tekstkorpus: dokumenter.

Note
Definition

Et dokument er et separat tekststykke inden for et korpus, for eksempel en e-mail i et korpus af e-mails.

Grundlæggende er hvert tekstkorpus et sæt af dokumenter, så forbehandling af korpuset betyder forbehandling af hver af dokumenterne.

Indlæsning af korpus

Tidligere havde vi vores tekstkorpus som strengvariabler. I virkelige scenarier er et tekstkorpus dog ofte gemt i TXT-filer for rent tekstbaserede data eller i CSV-filer med flere kolonner, når der er tilknyttet yderligere data til teksten.

I dette kursus arbejder vi enten med CSV-filer eller TXT-filer, hvor hvert dokument starter på en ny linje. Derfor anvender vi funktionen read_csv() fra pandas-biblioteket til at indlæse et tekstkorpus fra en fil.

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)
copy

Her læser vi denne TXT-fil ind i en DataFrame. Vi sætter sep='\r' for at bruge carriage return-symbolet som separator, hvilket angiver, at hvert dokument starter på en ny linje. Vi bruger header=None, så den første linje ikke betragtes som en header, og vi angiver names=['Document'] for at navngive den enkelte kolonne 'Document'. Resultatet er en DataFrame med én kolonne kaldet 'Document', der indeholder 6 dokumenter (sætninger).

Forbehandling af korpus

For at forbehandle korpus, lad os først oprette en funktion til forbehandling af hvert enkelt dokument:

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
copy

Lad os nu anvende denne funktion på vores DataFrame for hvert dokument og oprette en kolonne med rensede dokumenter:

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)
copy

Som du kan se, er vores korpus blevet forbehandlet med succes, så vi vil anvende den forbehandlede version af dette korpus senere i kurset.

question mark

Vælg den korrekte output for følgende kodeeksempel.

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 9

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

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

bookAnvendelse af Tekstforbehandling i Praksis

Stryg for at vise menuen

Dokumenter

Først, inden vi går videre med et praktisk eksempel på tekstforbehandling, er det vigtigt at forstå de centrale komponenter i et tekstkorpus: dokumenter.

Note
Definition

Et dokument er et separat tekststykke inden for et korpus, for eksempel en e-mail i et korpus af e-mails.

Grundlæggende er hvert tekstkorpus et sæt af dokumenter, så forbehandling af korpuset betyder forbehandling af hver af dokumenterne.

Indlæsning af korpus

Tidligere havde vi vores tekstkorpus som strengvariabler. I virkelige scenarier er et tekstkorpus dog ofte gemt i TXT-filer for rent tekstbaserede data eller i CSV-filer med flere kolonner, når der er tilknyttet yderligere data til teksten.

I dette kursus arbejder vi enten med CSV-filer eller TXT-filer, hvor hvert dokument starter på en ny linje. Derfor anvender vi funktionen read_csv() fra pandas-biblioteket til at indlæse et tekstkorpus fra en fil.

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)
copy

Her læser vi denne TXT-fil ind i en DataFrame. Vi sætter sep='\r' for at bruge carriage return-symbolet som separator, hvilket angiver, at hvert dokument starter på en ny linje. Vi bruger header=None, så den første linje ikke betragtes som en header, og vi angiver names=['Document'] for at navngive den enkelte kolonne 'Document'. Resultatet er en DataFrame med én kolonne kaldet 'Document', der indeholder 6 dokumenter (sætninger).

Forbehandling af korpus

For at forbehandle korpus, lad os først oprette en funktion til forbehandling af hvert enkelt dokument:

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
copy

Lad os nu anvende denne funktion på vores DataFrame for hvert dokument og oprette en kolonne med rensede dokumenter:

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)
copy

Som du kan se, er vores korpus blevet forbehandlet med succes, så vi vil anvende den forbehandlede version af dette korpus senere i kurset.

question mark

Vælg den korrekte output for følgende kodeeksempel.

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 9
some-alt