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.
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.
123456import 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:
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
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:
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://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.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
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.
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.
123456import 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:
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
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:
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://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.
Takk for tilbakemeldingene dine!