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 med Python

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 en textkorpus: dokument.

Note
Definition

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

I grunden är varje textkorpus en samling dokument, så att förbehandla korpusen 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.

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)

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 som heter 'Document' och 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
Kodbeskrivning
expand arrow
def preprocess_document(doc):

Definierar funktionen preprocess_document som tar en sträng (dokument) doc som indata.

doc = re.sub(r'[^a-zA-Z\s]', '', doc, re.I | re.A)

Tar bort alla tecken från doc utom bokstäver och mellanslag, gör operationen skiftlägesokänslig och endast ASCII.

doc = doc.lower()

Konverterar dokumentet till gemener för att säkerställa konsekvent hantering av skiftläge.

doc = doc.strip()

Tar bort inledande och avslutande blanksteg från dokumentet.

tokens = word_tokenize(doc)

Tokeniserar det rensade, gemena dokumentet till individuella ord (token).

filtered_tokens = [token for token in tokens if token not in stop_words]

Filtrerar bort stoppord.

doc = ' '.join(filtered_tokens)

Sätter ihop de filtrerade token till en enda sträng, separerade med mellanslag.

return doc

Returnerar det förbehandlade dokumentet som en enda sträng.

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)

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 det korrekta resultatet av följande kodexempel.

Vänligen välj det korrekta svaret

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

Tillä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 en textkorpus: dokument.

Note
Definition

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

I grunden är varje textkorpus en samling dokument, så att förbehandla korpusen 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.

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)

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 som heter 'Document' och 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
Kodbeskrivning
expand arrow
def preprocess_document(doc):

Definierar funktionen preprocess_document som tar en sträng (dokument) doc som indata.

doc = re.sub(r'[^a-zA-Z\s]', '', doc, re.I | re.A)

Tar bort alla tecken från doc utom bokstäver och mellanslag, gör operationen skiftlägesokänslig och endast ASCII.

doc = doc.lower()

Konverterar dokumentet till gemener för att säkerställa konsekvent hantering av skiftläge.

doc = doc.strip()

Tar bort inledande och avslutande blanksteg från dokumentet.

tokens = word_tokenize(doc)

Tokeniserar det rensade, gemena dokumentet till individuella ord (token).

filtered_tokens = [token for token in tokens if token not in stop_words]

Filtrerar bort stoppord.

doc = ' '.join(filtered_tokens)

Sätter ihop de filtrerade token till en enda sträng, separerade med mellanslag.

return doc

Returnerar det förbehandlade dokumentet som en enda sträng.

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)

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.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 9
some-alt