Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Tekstin Esikäsittelyn Soveltaminen Käytännössä | Tekstin Esikäsittelyn Perusteet
Johdatus NLP:hen

bookTekstin Esikäsittelyn Soveltaminen Käytännössä

Dokumentit

Ennen kuin siirrytään tekstin esikäsittelyn käytännön esimerkkiin, on tärkeää ymmärtää tekstikorpuksen keskeiset osat: dokumentit.

Note
Määritelmä

Dokumentti on erillinen tekstikappale korpuksessa, esimerkiksi sähköposti sähköpostikorpuksessa.

Jokainen tekstikorpus koostuu olennaisesti dokumenteista, joten korpuksen esikäsittely tarkoittaa jokaisen dokumentin esikäsittelyä.

Korpuksen lataaminen

Aiemmin tekstikorpuksemme oli tallennettu merkkijonona. Todellisissa tilanteissa tekstikorpus tallennetaan kuitenkin usein TXT-tiedostoihin pelkkää tekstiä varten tai CSV-tiedostoihin, joissa on useita sarakkeita, kun tekstiin liittyy lisätietoja.

Tällä kurssilla työskentelemme joko CSV- tai TXT-tiedostojen kanssa, joissa jokainen dokumentti alkaa uudelta riviltä. Käytämme siis read_csv()-kirjaston pandas-funktiota ladataksemme tekstikorpuksen tiedostosta.

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

Tässä luemme tämän TXT-tiedoston DataFrame-muotoon. Asetamme sep='\r' käyttääksemme rivinvaihtomerkkiä erottimena, mikä tarkoittaa, että jokainen dokumentti alkaa uudelta riviltä. Käytämme header=None, jotta ensimmäistä riviä ei tulkita otsikoksi, ja määritämme names=['Document'] nimeämään yksittäisen sarakkeen 'Document'. Lopputuloksena saamme DataFrame-rakenteen, jossa on yksi sarake nimeltä 'Document' ja 6 dokumenttia (lausetta).

Korpuksen esikäsittely

Jotta voimme esikäsitellä korpuksen, luodaan ensin funktio jokaisen dokumentin esikäsittelyä varten:

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

Sovelletaan nyt tätä funktiota DataFrame-rakenteeseen jokaiselle dokumentille ja luodaan sarake puhdistetuille dokumenteille:

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

Kuten huomaat, korpuksemme on esikäsitelty onnistuneesti, joten käytämme tämän korpuksen esikäsiteltyä versiota myöhemmin kurssilla.

question mark

Valitse seuraavan koodinpätkän oikea tuloste.

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 9

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Awesome!

Completion rate improved to 3.45

bookTekstin Esikäsittelyn Soveltaminen Käytännössä

Pyyhkäise näyttääksesi valikon

Dokumentit

Ennen kuin siirrytään tekstin esikäsittelyn käytännön esimerkkiin, on tärkeää ymmärtää tekstikorpuksen keskeiset osat: dokumentit.

Note
Määritelmä

Dokumentti on erillinen tekstikappale korpuksessa, esimerkiksi sähköposti sähköpostikorpuksessa.

Jokainen tekstikorpus koostuu olennaisesti dokumenteista, joten korpuksen esikäsittely tarkoittaa jokaisen dokumentin esikäsittelyä.

Korpuksen lataaminen

Aiemmin tekstikorpuksemme oli tallennettu merkkijonona. Todellisissa tilanteissa tekstikorpus tallennetaan kuitenkin usein TXT-tiedostoihin pelkkää tekstiä varten tai CSV-tiedostoihin, joissa on useita sarakkeita, kun tekstiin liittyy lisätietoja.

Tällä kurssilla työskentelemme joko CSV- tai TXT-tiedostojen kanssa, joissa jokainen dokumentti alkaa uudelta riviltä. Käytämme siis read_csv()-kirjaston pandas-funktiota ladataksemme tekstikorpuksen tiedostosta.

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

Tässä luemme tämän TXT-tiedoston DataFrame-muotoon. Asetamme sep='\r' käyttääksemme rivinvaihtomerkkiä erottimena, mikä tarkoittaa, että jokainen dokumentti alkaa uudelta riviltä. Käytämme header=None, jotta ensimmäistä riviä ei tulkita otsikoksi, ja määritämme names=['Document'] nimeämään yksittäisen sarakkeen 'Document'. Lopputuloksena saamme DataFrame-rakenteen, jossa on yksi sarake nimeltä 'Document' ja 6 dokumenttia (lausetta).

Korpuksen esikäsittely

Jotta voimme esikäsitellä korpuksen, luodaan ensin funktio jokaisen dokumentin esikäsittelyä varten:

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

Sovelletaan nyt tätä funktiota DataFrame-rakenteeseen jokaiselle dokumentille ja luodaan sarake puhdistetuille dokumenteille:

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

Kuten huomaat, korpuksemme on esikäsitelty onnistuneesti, joten käytämme tämän korpuksen esikäsiteltyä versiota myöhemmin kurssilla.

question mark

Valitse seuraavan koodinpätkän oikea tuloste.

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 9
some-alt