NLTK: n asentaminen Linuxiin
Asenna NLTK Ubuntussa suorittamalla seuraava komento:
$ sudo apt asenna python3-nltkNLTK-paketteja on saatavana kaikissa suurimmissa Linux-jakeluissa. Etsi pakettienhallinnasta hakusana ”NLTK” pakettien asentamiseksi. Jos NLTK ei jostain syystä ole käytettävissä jakelusi arkistoissa, voit asentaa sen pip-paketinhallinnasta suorittamalla alla olevan komennon:
$ pip install --käyttäjä -U nltkHuomaa, että sinun on ensin asennettava pip paketinhallinnasta, jotta yllä oleva komento toimisi. Joillakin jakeluilla sitä voidaan kutsua pip3: ksi. Voit myös seurata yksityiskohtaisia asennusohjeita, jotka ovat saatavilla virallinen nettisivu NLTK: sta.
Lauseiden purkaminen kappaleesta NLTK: n avulla
Kappaleissa, joissa ei ole monimutkaisia välimerkkejä ja välilyöntejä, voit käyttää sisäänrakennettua NLTK-lauseetunnistinta, nimeltään "Punkt-tokenisaattori", joka tulee valmiiksi koulutetun mallin mukana. Voit myös käyttää omia koulutettuja tietomalleja koodaamaan tekstiä lauseiksi. Mukautetut tietomallit eivät kuulu tämän artikkelin soveltamisalaan, joten alla oleva koodi käyttää sisäänrakennettua englanninkielistä Punkt-tunnusta. Jos haluat ladata Punkt-resurssitiedoston, suorita seuraavat kolme komentoa peräkkäin ja odota, että lataus on valmis:
$ python3$ import nltk
$ nltk.lataa ('punkt')
Kappaletta Alice's Adventures in Wonderlandista käytetään alla olevassa koodinäytteessä:
tuoda nltkpara = "Joko kaivo oli hyvin syvä, tai hän putosi hyvin hitaasti, koska hänellä oli
paljon aikaa, kun hän meni katsomaan häntä ja miettimään, mitä tapahtui
tapahtua seuraavaksi. Ensin hän yritti katsoa alaspäin ja selvittää, mihin hän oli tulossa,
mutta oli liian pimeää nähdä mitään; sitten hän katsoi kaivon sivuja ja
huomasi, että ne olivat täynnä kaappeja ja kirjahyllyjä; täällä ja siellä hän
näki karttoja ja kuvia, jotka oli ripustettu tappien päälle. Hän otti purkin yhdeltä hyllyltä
kun hän ohitti; se oli merkitty 'ORANGE MARMALADE', mutta hänen suureksi pettymyksekseen
oli tyhjä: hän ei halunnut pudottaa purkkia pelätessään jonkun tappamista, joten onnistui
laittaa se yhteen kaappeihin, kun hän putosi sen ohi."
rahakkeet = nltk.sent_tokenize (para)
t: lle rahakkeissa:
tulosta (t, "\ n")
Yllä olevan koodin suorittaminen antaa sinulle seuraavan tuloksen:
Joko kaivo oli hyvin syvä, tai hän putosi hyvin hitaasti, sillä hänellä oli paljon aikaahän meni katsomaan häntä ja miettimään, mitä seuraavaksi tapahtuu.
Ensin hän yritti katsoa alaspäin ja selvittää, mihin oli tulossa, mutta se oli liian pimeää
nähdä mitään; sitten hän katsoi kaivon sivuja ja huomasi, että ne olivat
täynnä kaappeja ja kirjahyllyjä; täällä ja siellä hän näki karttoja ja kuvia ripustettuna
tappiilla.
Hän otti purkin yhdeltä hyllyltä ohi kulkiessaan; se oli merkitty 'ORANGEMARMALADE',
mutta hänen suureksi pettymyksekseen se oli tyhjä: hän ei halunnut pudottaa purkkia pelätessään
tappaa jonkun, joten onnistui laittaa sen yhteen kaappeihin, kun hän putosi sen ohi.
Sisäänrakennettu Punkt-lauseetunnistin toimii hyvin, jos haluat merkitä yksinkertaisia kappaleita. NLTK-moduulin tuomisen jälkeen sinun tarvitsee vain käyttää ”sent_tokenize ()” -menetelmää suuressa tekstikorpussa. Punkt-lauseentunnistin ei kuitenkaan välttämättä tunnista lauseita oikein, kun on monimutkainen kappale, joka sisältää monia välimerkkejä, huutomerkkejä, lyhenteitä tai toistuvia symboleja. Ei ole mahdollista määritellä vakiotapaa näiden ongelmien ratkaisemiseksi. Sinun on kirjoitettava mukautettu koodi näiden ongelmien ratkaisemiseksi käyttämällä regexiä, merkkijonon manipulointia tai kouluttamalla omaa tietomalliasi sisäänrakennetun Punkt-tietomallin käyttämisen sijaan.
Voit myös yrittää säätää olemassa olevaa Punkt-mallia korjaamaan väärän tunnuksen käyttämällä joitain lisäparametreja. Noudata sitä varten saatavilla olevia virallisia Punkt-tunnistusasiakirjoja tässä. Oman mukautuksen tekemiseen tarvitaan pieni muutos koodiin:
alkaen nltk.merkitä.punkt import PunktSentenceTokenizer, PunktParameterspara = "Joko kaivo oli hyvin syvä, tai hän putosi hyvin hitaasti, sillä hänellä oli paljon
aikaa, kun hän meni katsomaan häntä ja miettimään, mitä tapahtui
Seuraava. Ensin hän yritti katsoa alaspäin ja selvittää, mihin hän oli tulossa, mutta niin se oli
liian tumma nähdä mitään; sitten hän katsoi kaivon sivuja ja huomasi
että ne olivat täynnä kaappeja ja kirjahyllyjä; täällä ja siellä hän näki karttoja
ja nauloille ripustetut kuvat. Hän otti purkin yhdeltä hyllyltä
läpäissyt; se oli merkitty 'ORANGE MARMALADE', mutta hänen suureksi pettymykselleen se oli
tyhjä: hän ei halunnut pudottaa purkkia pelätessään jonkun tappamista, joten onnistui
laita se yhteen kaappeihin, kun hän putosi sen ohi."
punkt_params = PunktParameters ()
punkt_params.short_types = set (['herra', 'rouva', 'LLC'])
tokenizer = PunktSentenceTokenizer (punkt_params)
tokenit = tokenizer.tokenize (para)
t: lle rahakkeissa:
tulosta (t, "\ n")
Yllä oleva koodi tekee saman tehtävän kuin ”sent_tokenize ()” -menetelmä. Voit kuitenkin nyt määrittää omat säännöt sisäänrakennetuilla menetelmillä ja välittää ne argumentteina, kuten dokumentaatiossa kuvataan. Esimerkiksi yllä olevaan koodiin on lisätty joitain lyhenteitä. Jos näitä lyhenteitä seuraa välimerkit, niitä ei jaeta uuteen lauseeseen. Normaalikäyttäytyminen on käyttää pistettä tai pistettä osoittamaan lauseen loppua.
Johtopäätös
NLTK ja sen tokenointimenetelmät ovat varsin tehokkaita koodauksessa ja tekstidatan käsittelyssä. Valmiiksi koulutetut mallit eivät kuitenkaan välttämättä toimi 100% erityyppisten tekstien kanssa. Saatat joutua parantamaan nykyisiä malleja, kouluttamaan ja toimittamaan omia tai kirjoittamaan oman koodisi poikkeavuuksien korjaamiseksi.