Tekstin 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.
Dokumentti on erillinen tekstikappale korpuksessa, esimerkiksi sähköposti sähköpostikorpuksessa.
Käytännössä jokainen tekstikorpus koostuu dokumenteista, joten korpuksen esikäsittely tarkoittaa jokaisen dokumentin esikäsittelyä.
Korpuksen lataaminen
Aiemmin tekstikorpuksemme oli tallennettu merkkijonon muuttujina. 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ä. Siksi käytämme read_csv()-kirjaston pandas-funktiota ladataksemme tekstikorpuksen tiedostosta.
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)
Tässä luemme tämän TXT-tiedoston DataFrame-muotoon. Asetamme sep='\r' käyttämään rivinvaihtomerkkiä erottimena, mikä osoittaa, 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 ainoan sarakkeen 'Document'. Tämän seurauksena saamme DataFrame-rakenteen, jossa on yksi sarake nimeltä 'Document', joka sisältää 6 dokumenttia (lausetta).
Korpuksen esikäsittely
Jotta voimme esikäsitellä korpuksen, luodaan ensin funktio jokaisen dokumentin esikäsittelyä varten:
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
Sovelletaan nyt tätä funktiota DataFrame:iin jokaiselle dokumentille ja luodaan sarake puhdistetuille dokumenteille:
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)
Kuten huomaat, korpuksemme on esikäsitelty onnistuneesti, joten käytämme tämän korpuksen esikäsiteltyä versiota myöhemmin kurssilla.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 3.45
Tekstin 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.
Dokumentti on erillinen tekstikappale korpuksessa, esimerkiksi sähköposti sähköpostikorpuksessa.
Käytännössä jokainen tekstikorpus koostuu dokumenteista, joten korpuksen esikäsittely tarkoittaa jokaisen dokumentin esikäsittelyä.
Korpuksen lataaminen
Aiemmin tekstikorpuksemme oli tallennettu merkkijonon muuttujina. 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ä. Siksi käytämme read_csv()-kirjaston pandas-funktiota ladataksemme tekstikorpuksen tiedostosta.
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)
Tässä luemme tämän TXT-tiedoston DataFrame-muotoon. Asetamme sep='\r' käyttämään rivinvaihtomerkkiä erottimena, mikä osoittaa, 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 ainoan sarakkeen 'Document'. Tämän seurauksena saamme DataFrame-rakenteen, jossa on yksi sarake nimeltä 'Document', joka sisältää 6 dokumenttia (lausetta).
Korpuksen esikäsittely
Jotta voimme esikäsitellä korpuksen, luodaan ensin funktio jokaisen dokumentin esikäsittelyä varten:
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
Sovelletaan nyt tätä funktiota DataFrame:iin jokaiselle dokumentille ja luodaan sarake puhdistetuille dokumenteille:
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)
Kuten huomaat, korpuksemme on esikäsitelty onnistuneesti, joten käytämme tämän korpuksen esikäsiteltyä versiota myöhemmin kurssilla.
Kiitos palautteestasi!