Tokenisointi
Ennen kuin siirrytään tokenisoinnin prosessiin, on ensin määriteltävä, mitä tokenit ovat.
Tokenit ovat itsenäisiä ja minimaalisia tekstin osia, joilla on tietty syntaksi ja semantiikka.
Tämän seurauksena tokenisointi on prosessi, jossa teksti jaetaan tokeneihin. Esimerkiksi tekstikappale, tekstiasiakirja tai tekstikorpus koostuu useista osista, jotka voidaan jakaa lauseisiin, ilmauksiin ja sanoihin. Yleisimpiä tokenisointimenetelmiä ovat lause- ja sanatasoinen tokenisointi, joita käytetään jakamaan tekstiasiakirja (tai korpus) lauseisiin ja jokainen lause sanoihin.
Tekstikorpus (monikko: korpukset) on suuri ja rakenteellinen tekstikokoelma, jota käytetään kielitieteellisessä ja laskennallisessa kielitieteellisessä tutkimuksessa. Käytännössä se on kattava kokoelma kirjoitettua tai puhuttua materiaalia, joka toimii tietyn kielen, murteen tai aihealueen edustavana otoksena.
Lauseiden tokenisointi
Aloitetaan lauseiden tokenisoinnilla. Onneksemme nltk tarjoaa sent_tokenize()-funktion tokenize-moduulissa. Tämän funktion ensisijainen tarkoitus on jakaa annettu teksti lauseiden listaksi.
sent_tokenize() hyödyntää esikoulutettua mallia, joka on tyypillisesti koneoppimismalli, koulutettu suurella tekstikorpuksella lauseiden rajojen tunnistamiseksi. Se ottaa huomioon erilaisia vihjeitä tekstissä, kuten välimerkit (esim. pisteet, huutomerkit, kysymysmerkit), isot alkukirjaimet sekä muita kielellisiä rakenteita, jotka yleensä merkitsevät yhden lauseen loppua ja toisen alkua.
123456789# Importing the sent_tokenize() function from nltk.tokenize import sent_tokenize import nltk # Downloading the "Punkt" tokenizer models nltk.download('punkt_tab') text = "Hello world. This is an example of sentence tokenization. NLTK makes it easy!" # Sentence tokenization sentences = sent_tokenize(text) print(sentences)
Kuten huomaat, tässä ei ole mitään monimutkaista. Sinun tarvitsee vain välittää merkkijono, joka sisältää tekstisi, sent_tokenize()-funktion argumenttina saadaksesi lauseiden listan. Mitä tulee nltk.download('punkt_tab')-komentoon, se lataa erityisesti "Punkt"-tokenisointimallit. Lataamalla Punkt-tokenisointimallit varmistat, että NLTK:lla on tarvittavat tiedot tarkan lause- ja sanatokenisoinnin suorittamiseen.
Jokaisen lauseen lopussa olevat välimerkit sisältyvät lauseeseen.
Sanatokenisointi
Sanatokenisoinnissa on useita yleisiä menetelmiä, mutta käsittelemme vain kahta yleisintä.
Yksinkertaisin ja suoraviivaisin tapa on käyttää string-luokan split()-funktiota, joka käyttää oletuksena rivinvaihtomerkkejä, välilyöntejä ja sarkaimia erottimina. Voit kuitenkin myös välittää minkä tahansa merkkijonon argumenttina, jolloin sitä käytetään erottimena.
123456text = "This is an example of word tokenization." # Convert the text to lowercase text = text.lower() # Word tokenization using split() words = text.split() print(words)
Jotta varmistetaan, että tokenit kuten 'This' ja 'this' käsitellään samana, on tärkeää muuntaa merkkijono pieniksi kirjaimiksi ennen tokenisointia.
Joustavampi lähestymistapa on kuitenkin käyttää word_tokenize()-funktiota tokenize-kirjaston nltk-moduulista. Tämä funktio tunnistaa ja erottaa sanat välilyöntien ja välimerkkien perusteella, pilkkoen lauseet tehokkaasti osiin. Samoin kuin sent_tokenize(), tämä funktio vaatii merkkijonon argumenttina.
Tarkastellaan tätä lähestymistapaa verrattuna split()-menetelmään. Alla olevassa esimerkissä käytetään word_tokenize()-funktiota:
12345678from nltk import word_tokenize import nltk nltk.download('punkt_tab') text = "Good muffins cost $3.88 in New York. Please buy me two of them. Thanks" text = text.lower() # Word tokenization using word_tokenize() words = word_tokenize(text) print(words)
Tarkastellaan nyt, miten split()-menetelmä toimii saman tekstin kanssa:
12345text = "Good muffins cost $3.88 in New York. Please buy me two of them. Thanks" text = text.lower() # Word tokenization using split() words = text.split() print(words)
Esimerkissämme word_tokenize() tunnistaa toisin kuin split() välimerkit ja erikoismerkit omiksi tokenikseen. Se erottaa oikein dollarimerkin numerosta ja tunnistaa pisteet itsenäisiksi tokeniksi. Tämä tarkka tokenisointi on olennainen monissa NLP-tehtävissä, joissa sanojen ja välimerkkien täsmällinen erottelu voi merkittävästi vaikuttaa analyysin tarkkuuteen ja saatuihin oivalluksiin.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Can you explain the difference between sentence and word tokenization?
Why is it important to use the Punkt tokenizer models in NLTK?
Can you give more examples of when precise tokenization is necessary?
Awesome!
Completion rate improved to 3.45
Tokenisointi
Pyyhkäise näyttääksesi valikon
Ennen kuin siirrytään tokenisoinnin prosessiin, on ensin määriteltävä, mitä tokenit ovat.
Tokenit ovat itsenäisiä ja minimaalisia tekstin osia, joilla on tietty syntaksi ja semantiikka.
Tämän seurauksena tokenisointi on prosessi, jossa teksti jaetaan tokeneihin. Esimerkiksi tekstikappale, tekstiasiakirja tai tekstikorpus koostuu useista osista, jotka voidaan jakaa lauseisiin, ilmauksiin ja sanoihin. Yleisimpiä tokenisointimenetelmiä ovat lause- ja sanatasoinen tokenisointi, joita käytetään jakamaan tekstiasiakirja (tai korpus) lauseisiin ja jokainen lause sanoihin.
Tekstikorpus (monikko: korpukset) on suuri ja rakenteellinen tekstikokoelma, jota käytetään kielitieteellisessä ja laskennallisessa kielitieteellisessä tutkimuksessa. Käytännössä se on kattava kokoelma kirjoitettua tai puhuttua materiaalia, joka toimii tietyn kielen, murteen tai aihealueen edustavana otoksena.
Lauseiden tokenisointi
Aloitetaan lauseiden tokenisoinnilla. Onneksemme nltk tarjoaa sent_tokenize()-funktion tokenize-moduulissa. Tämän funktion ensisijainen tarkoitus on jakaa annettu teksti lauseiden listaksi.
sent_tokenize() hyödyntää esikoulutettua mallia, joka on tyypillisesti koneoppimismalli, koulutettu suurella tekstikorpuksella lauseiden rajojen tunnistamiseksi. Se ottaa huomioon erilaisia vihjeitä tekstissä, kuten välimerkit (esim. pisteet, huutomerkit, kysymysmerkit), isot alkukirjaimet sekä muita kielellisiä rakenteita, jotka yleensä merkitsevät yhden lauseen loppua ja toisen alkua.
123456789# Importing the sent_tokenize() function from nltk.tokenize import sent_tokenize import nltk # Downloading the "Punkt" tokenizer models nltk.download('punkt_tab') text = "Hello world. This is an example of sentence tokenization. NLTK makes it easy!" # Sentence tokenization sentences = sent_tokenize(text) print(sentences)
Kuten huomaat, tässä ei ole mitään monimutkaista. Sinun tarvitsee vain välittää merkkijono, joka sisältää tekstisi, sent_tokenize()-funktion argumenttina saadaksesi lauseiden listan. Mitä tulee nltk.download('punkt_tab')-komentoon, se lataa erityisesti "Punkt"-tokenisointimallit. Lataamalla Punkt-tokenisointimallit varmistat, että NLTK:lla on tarvittavat tiedot tarkan lause- ja sanatokenisoinnin suorittamiseen.
Jokaisen lauseen lopussa olevat välimerkit sisältyvät lauseeseen.
Sanatokenisointi
Sanatokenisoinnissa on useita yleisiä menetelmiä, mutta käsittelemme vain kahta yleisintä.
Yksinkertaisin ja suoraviivaisin tapa on käyttää string-luokan split()-funktiota, joka käyttää oletuksena rivinvaihtomerkkejä, välilyöntejä ja sarkaimia erottimina. Voit kuitenkin myös välittää minkä tahansa merkkijonon argumenttina, jolloin sitä käytetään erottimena.
123456text = "This is an example of word tokenization." # Convert the text to lowercase text = text.lower() # Word tokenization using split() words = text.split() print(words)
Jotta varmistetaan, että tokenit kuten 'This' ja 'this' käsitellään samana, on tärkeää muuntaa merkkijono pieniksi kirjaimiksi ennen tokenisointia.
Joustavampi lähestymistapa on kuitenkin käyttää word_tokenize()-funktiota tokenize-kirjaston nltk-moduulista. Tämä funktio tunnistaa ja erottaa sanat välilyöntien ja välimerkkien perusteella, pilkkoen lauseet tehokkaasti osiin. Samoin kuin sent_tokenize(), tämä funktio vaatii merkkijonon argumenttina.
Tarkastellaan tätä lähestymistapaa verrattuna split()-menetelmään. Alla olevassa esimerkissä käytetään word_tokenize()-funktiota:
12345678from nltk import word_tokenize import nltk nltk.download('punkt_tab') text = "Good muffins cost $3.88 in New York. Please buy me two of them. Thanks" text = text.lower() # Word tokenization using word_tokenize() words = word_tokenize(text) print(words)
Tarkastellaan nyt, miten split()-menetelmä toimii saman tekstin kanssa:
12345text = "Good muffins cost $3.88 in New York. Please buy me two of them. Thanks" text = text.lower() # Word tokenization using split() words = text.split() print(words)
Esimerkissämme word_tokenize() tunnistaa toisin kuin split() välimerkit ja erikoismerkit omiksi tokenikseen. Se erottaa oikein dollarimerkin numerosta ja tunnistaa pisteet itsenäisiksi tokeniksi. Tämä tarkka tokenisointi on olennainen monissa NLP-tehtävissä, joissa sanojen ja välimerkkien täsmällinen erottelu voi merkittävästi vaikuttaa analyysin tarkkuuteen ja saatuihin oivalluksiin.
Kiitos palautteestasi!