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

Anvendelse av Tekstforbehandling i Praksis

Sveip for å vise menyen

Dokumenter

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

Note
Definisjon

Et dokument er et eget 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://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)

Her leser vi inn 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, la oss først lage 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
Kodebeskrivelse
expand arrow
def preprocess_document(doc):

Definerer funksjonen preprocess_document som tar inn en enkelt streng (dokument) doc som input.

doc = re.sub(r'[^a-zA-Z\s]', '', doc, re.I | re.A)

Fjerner alle tegn fra doc bortsett fra alfabetiske tegn og mellomrom, og gjør operasjonen ufølsom for store og små bokstaver samt kun ASCII-tegn.

doc = doc.lower()

Konverterer dokumentet til små bokstaver for å sikre konsistent behandling av store og små bokstaver.

doc = doc.strip()

Fjerner innledende og avsluttende mellomrom fra dokumentet.

tokens = word_tokenize(doc)

Tokeniserer det rensede, små bokstaver-dokumentet til individuelle ord (tokens).

filtered_tokens = [token for token in tokens if token not in stop_words]

Filtrerer ut stoppordene.

doc = ' '.join(filtered_tokens)

Setter sammen de filtrerte tokenene til én enkelt streng, adskilt med mellomrom.

return doc

Returnerer det forbehandlede dokumentet som én enkelt streng.

La oss nå bruke denne funksjonen på vår DataFrame for hvert dokument og opprette 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)

Som du ser, 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 utdata for følgende kodeeksempel.

Velg det helt riktige svaret

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

Anvendelse av Tekstforbehandling i Praksis

Dokumenter

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

Note
Definisjon

Et dokument er et eget 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://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)

Her leser vi inn 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, la oss først lage 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
Kodebeskrivelse
expand arrow
def preprocess_document(doc):

Definerer funksjonen preprocess_document som tar inn en enkelt streng (dokument) doc som input.

doc = re.sub(r'[^a-zA-Z\s]', '', doc, re.I | re.A)

Fjerner alle tegn fra doc bortsett fra alfabetiske tegn og mellomrom, og gjør operasjonen ufølsom for store og små bokstaver samt kun ASCII-tegn.

doc = doc.lower()

Konverterer dokumentet til små bokstaver for å sikre konsistent behandling av store og små bokstaver.

doc = doc.strip()

Fjerner innledende og avsluttende mellomrom fra dokumentet.

tokens = word_tokenize(doc)

Tokeniserer det rensede, små bokstaver-dokumentet til individuelle ord (tokens).

filtered_tokens = [token for token in tokens if token not in stop_words]

Filtrerer ut stoppordene.

doc = ' '.join(filtered_tokens)

Setter sammen de filtrerte tokenene til én enkelt streng, adskilt med mellomrom.

return doc

Returnerer det forbehandlede dokumentet som én enkelt streng.

La oss nå bruke denne funksjonen på vår DataFrame for hvert dokument og opprette 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)

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

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 9
some-alt