Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Tillämpning av Textförbehandling i Praktiken | Grunderna i Textförbehandling
Introduktion till NLP

bookTillämpning av Textförbehandling i Praktiken

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.

Note
Definition

Ett dokument är en separat text inom ett korpus, till exempel ett e-postmeddelande i ett korpus av e-postmeddelanden.

I grunden är varje textkorpus en samling dokument, så förbehandling av korpuset innebär förbehandling av varje enskilt 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.

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

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, låt oss först skapa en funktion för att förbehandla varje 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

Låt oss nu tillämpa denna funktion på vår DataFrame för varje dokument och skapa en kolumn med rensade dokument:

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 har vårt korpus förbehandlats framgångsrikt, så vi kommer att använda den förbehandlade versionen av detta korpus senare i kursen.

question mark

Välj rätt utdata för följande kodsnutt.

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 9

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

Can you explain what each step in the preprocessing function does?

What are stop words and why are they removed?

How can I customize the preprocessing steps for my own dataset?

Awesome!

Completion rate improved to 3.45

bookTillä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.

Note
Definition

Ett dokument är en separat text inom ett korpus, till exempel ett e-postmeddelande i ett korpus av e-postmeddelanden.

I grunden är varje textkorpus en samling dokument, så förbehandling av korpuset innebär förbehandling av varje enskilt 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.

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

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, låt oss först skapa en funktion för att förbehandla varje 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

Låt oss nu tillämpa denna funktion på vår DataFrame för varje dokument och skapa en kolumn med rensade dokument:

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 har vårt korpus förbehandlats framgångsrikt, så vi kommer att använda den förbehandlade versionen av detta korpus senare i kursen.

question mark

Välj rätt utdata för följande kodsnutt.

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 9
some-alt