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

bookAnvendelse av Tekstforbehandling i Praksis

Dokumenter

Før vi går videre til et praktisk eksempel på tekstforbehandling, er det viktig å forstå hovedkomponentene i et tekstkorpus: dokumenter.

Note
Definisjon

Et dokument er et separat tekststykke innenfor et korpus, for eksempel en e-post i et korpus av e-poster.

I hovedsak er hvert tekstkorpus et sett med dokumenter, så forbehandling av korpuset betyr forbehandling av hver av dokumentene.

Laste inn korpuset

Tidligere hadde vi tekstkorpuset vårt som strengvariabler. I virkelige scenarioer lagres imidlertid et tekstkorpus ofte i TXT-filer for rent tekstbaserte data eller i CSV-filer med flere kolonner når tilleggsdata er knyttet til teksten.

I dette kurset vil vi arbeide med enten CSV-filer eller TXT-filer, der hvert dokument starter på en ny linje. Derfor bruker vi funksjonen read_csv() fra pandas-biblioteket for å laste inn et tekstkorpus fra en fil.

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

Her leser vi denne TXT-filen inn i en DataFrame. Vi setter sep='\r' for å bruke carriage return-symbolet som separator, noe som indikerer at hvert dokument starter på en ny linje. Vi bruker header=None slik at den første linjen ikke blir tolket som en overskrift, og vi spesifiserer names=['Document'] for å navngi den eneste kolonnen 'Document'. Resultatet er en DataFrame med én kolonne kalt 'Document' som inneholder 6 dokumenter (setninger).

Forbehandling av korpuset

For å forbehandle korpuset, opprettes først en funksjon for forbehandling av 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

Nå skal denne funksjonen brukes på vår DataFrame for hvert dokument, og det opprettes 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://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)
copy

Som du kan se, er korpuset vårt vellykket forhåndsbehandlet, så vi vil bruke den forhåndsbehandlede versjonen av dette korpuset senere i kurset.

question mark

Velg riktig output for følgende kodeeksempel.

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 9

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 3.45

bookAnvendelse av Tekstforbehandling i Praksis

Sveip for å vise menyen

Dokumenter

Før vi går videre til et praktisk eksempel på tekstforbehandling, er det viktig å forstå hovedkomponentene i et tekstkorpus: dokumenter.

Note
Definisjon

Et dokument er et separat tekststykke innenfor et korpus, for eksempel en e-post i et korpus av e-poster.

I hovedsak er hvert tekstkorpus et sett med dokumenter, så forbehandling av korpuset betyr forbehandling av hver av dokumentene.

Laste inn korpuset

Tidligere hadde vi tekstkorpuset vårt som strengvariabler. I virkelige scenarioer lagres imidlertid et tekstkorpus ofte i TXT-filer for rent tekstbaserte data eller i CSV-filer med flere kolonner når tilleggsdata er knyttet til teksten.

I dette kurset vil vi arbeide med enten CSV-filer eller TXT-filer, der hvert dokument starter på en ny linje. Derfor bruker vi funksjonen read_csv() fra pandas-biblioteket for å laste inn et tekstkorpus fra en fil.

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

Her leser vi denne TXT-filen inn i en DataFrame. Vi setter sep='\r' for å bruke carriage return-symbolet som separator, noe som indikerer at hvert dokument starter på en ny linje. Vi bruker header=None slik at den første linjen ikke blir tolket som en overskrift, og vi spesifiserer names=['Document'] for å navngi den eneste kolonnen 'Document'. Resultatet er en DataFrame med én kolonne kalt 'Document' som inneholder 6 dokumenter (setninger).

Forbehandling av korpuset

For å forbehandle korpuset, opprettes først en funksjon for forbehandling av 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

Nå skal denne funksjonen brukes på vår DataFrame for hvert dokument, og det opprettes 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://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)
copy

Som du kan se, er korpuset vårt vellykket forhåndsbehandlet, så vi vil bruke den forhåndsbehandlede versjonen av dette korpuset senere i kurset.

question mark

Velg riktig output for følgende kodeeksempel.

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 9
some-alt