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://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://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

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://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://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