Python

Kuinka purkaa lauseita tekstistä NLTK Python -moduulin avulla

Kuinka purkaa lauseita tekstistä NLTK Python -moduulin avulla
Luonnollisen kielen työkalupakki (NLTK) on Pythonin kieli- ja tekstinkäsittelymoduuli. NLTK voi analysoida, käsitellä ja tunnistaa useilla eri kielillä saatavana olevaa tekstiä käyttämällä sisäänrakennettua korpuskirjastoa ja laajaa leksikaalista tietoa. Python on yksi suosituimmista ohjelmointikielistä datatieteessä ja kielenkäsittelyssä, pääasiassa kielen monipuolisuuden ja hyödyllisten moduulien, kuten NLTK, saatavuuden vuoksi. Tässä artikkelissa selitetään, kuinka lauseita puretaan tekstikappaleista NLTK: n avulla. Tämän oppaan koodi on testattu Python 3: lla.8.2 ja NLTK 3.4.5 Ubuntu 20: ssa.04 LTS.

NLTK: n asentaminen Linuxiin

Asenna NLTK Ubuntussa suorittamalla seuraava komento:

$ sudo apt asenna python3-nltk

NLTK-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 nltk

Huomaa, 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 nltk
para = "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 aikaa
hä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, PunktParameters
para = "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.

Kuinka parantaa FPS ää Linuxissa?
FPS tarkoittaa Kuvaa sekunnissa. FPS: n tehtävänä on mitata kehysnopeus videotoistoissa tai peliesityksissä. Yksinkertaisin sanoin sekunnissa näytettä...
Suosituimmat Oculus App Lab -pelit
Jos olet Oculus-kuulokemikrofonin omistaja, sinun täytyy olla tietoinen sivulatauksesta. Sivulataus on prosessi, jolla ei-kaupallista sisältöä asennet...
Top 10 Games to Play on Ubuntu
Windows platform has been one of the dominating platforms for gaming because of the huge percentage of games that are developing today to natively sup...