Anvendelse 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.
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.
123456import 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)
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:
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
Nå skal denne funksjonen brukes på vår DataFrame for hvert dokument, og det opprettes 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://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)
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.
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
Awesome!
Completion rate improved to 3.45
Anvendelse 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.
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.
123456import 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)
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:
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
Nå skal denne funksjonen brukes på vår DataFrame for hvert dokument, og det opprettes 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://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)
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.
Takk for tilbakemeldingene dine!