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 med Python

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 med enten CSV-filer eller TXT-filer, hvor hvert dokument starter på en ny linje. Derfor bruger 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', som indeholder 6 dokumenter (sætninger).

Forbehandling af korpus

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

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 bruge 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

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 med enten CSV-filer eller TXT-filer, hvor hvert dokument starter på en ny linje. Derfor bruger 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', som indeholder 6 dokumenter (sætninger).

Forbehandling af korpus

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

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 bruge 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