Tillämpning av Textförbehandling i Praktiken
Svep för att visa menyn
Dokument
Först, innan vi går vidare med ett praktiskt exempel på textförbehandling, är det viktigt att förstå de centrala komponenterna i ett textkorpus: dokument.
Ett dokument är en separat textdel inom ett korpus, till exempel ett e-postmeddelande i ett korpus av e-postmeddelanden.
I grunden är varje textkorpus en samling dokument, så att förbehandla korpuset innebär att förbehandla varje dokument.
Ladda in korpusen
Tidigare hade vi vår textkorpus som strängvariabler. I verkliga scenarier lagras dock en textkorpus ofta i TXT-filer för rent textbaserad data eller i CSV-filer med flera kolumner när ytterligare data är kopplad till texten.
I denna kurs kommer vi att arbeta med antingen CSV-filer eller TXT-filer, där varje dokument börjar på en ny rad. Därför använder vi funktionen read_csv() från biblioteket pandas för att ladda en textkorpus från 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)
Här läser vi in denna TXT-fil till en DataFrame. Vi anger sep='\r' för att använda vagnretur-symbolen som avgränsare, vilket indikerar att varje dokument börjar på en ny rad. Vi använder header=None så att den första raden inte tolkas som en rubrik, och vi specificerar names=['Document'] för att namnge den enda kolumnen 'Document'. Resultatet blir en DataFrame med en enda kolumn kallad 'Document' som innehåller 6 dokument (meningar).
Förbehandling av korpus
För att förbehandla korpusen, skapa först en funktion för att förbehandla varje 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
Applicera nu denna funktion på vår DataFrame för varje dokument och skapa en kolumn med rensade dokument:
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 kan se har vårt korpus förbehandlats framgångsrikt, så vi kommer att använda den förbehandlade versionen av detta korpus senare i kursen.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal