Python

Kuidas lauseid tekstist NLTK Pythoni mooduli abil välja tõmmata

Kuidas lauseid tekstist NLTK Pythoni mooduli abil välja tõmmata
Loomuliku keele tööriistakomplekt (NLTK) on Pythoni keele- ja tekstitöötlusmoodul. NLTK saab oma sisseehitatud korpuste kogu ja suure leksikaalsete andmete kogumi abil analüüsida, töödelda ja tokeniseerida paljudes erinevates keeltes saadaolevat teksti. Python on üks populaarsemaid programmeerimiskeeli, mida kasutatakse andmeteaduses ja keeletöötluses, peamiselt tänu keele mitmekülgsusele ja kasulike moodulite nagu NLTK kättesaadavusele. Selles artiklis selgitatakse, kuidas NLTK-i abil tekstilõikudest lauseid välja tõmmata. Selles juhendis olevat koodi on testitud Python 3-ga.8.2 ja NLTK 3.4.5 Ubuntu 20-l.04 LTS.

NLTK installimine Linuxi

NLTK installimiseks Ubuntu käivitage järgmine käsk:

$ sudo apt installib python3-nltk

NLTK paketid on saadaval kõigis suuremates Linuxi distributsioonides. Pakettide installimiseks otsige paketihaldurist märksõna “NLTK”. Kui mingil põhjusel pole NLTK teie levitamise hoidlates saadaval, saate selle installida pip-paketi haldurist, käivitades alloleva käsu:

$ pip install --kasutaja -U nltk

Pange tähele, et ülaltoodud käsu toimimiseks peate kõigepealt paketi haldurist installima pipi. Mõnel jaotusel võib seda nimetada pip3. Samuti võite järgida saidil saadaolevaid üksikasjalikke installijuhiseid ametlik veebilehekülg NLTK-st.

Lausete väljavõtmine lõigust NLTK abil

Keerukate kirjavahemärkide ja tühikuteta lõikude puhul saate kasutada sisseehitatud NLTK lause tokenizerit, mida nimetatakse "Punkti tokenizeriks", mis on varustatud eelnevalt koolitatud mudeliga. Teksti lauseteks märgistamiseks võite kasutada ka enda koolitatud andmemudeleid. Kohandatud koolitusega andmemudelid jäävad selle artikli reguleerimisalast välja, seega kasutab allolev kood sisseehitatud Punkt English tokenizerit. Punkti ressursifaili allalaadimiseks käivitage kolm järgmist käsku järjest ja oodake allalaadimise lõppu:

$ python3
$ import nltk
$ nltk.lae alla ('punkt')

Allpool olevas koodinäites kasutatakse lõiku raamatust „Alice'i seiklused imedemaal“:

import nltk
para = "Kas kaev oli väga sügav või kukkus väga aeglaselt, sest tal oli
palju aega, kui ta laskus end vaatama ja mõtlema, mis toimub
juhtuma järgmisena. Kõigepealt püüdis ta alla vaadata ja välja selgitada, milleni ta jõudis,
aga oli liiga pime, et midagi näha; siis vaatas ta kaevu külgi ja
märkas, et need olid täidetud kappide ja raamaturiiulitega; siin ja seal ta
nägid kaartide ja piltide külge riputatud pilte. Ta võttis ühelt riiulilt purgi maha
kui ta möödus; sellel oli silt „ORANGE MARMALADE”, kuid tema suureks pettumuseks
oli tühi: talle ei meeldinud kedagi tapmise kartuses purki visata, nii et ta sai sellega hakkama
panna see ühte kappi, kui ta sellest mööda kukkus."
märgid = nltk.sent_tokenize (para)
tähiste t jaoks:
print (t, "\ n")

Ülaltoodud koodi käivitamine annab teile järgmise väljundi:

Kas kaev oli väga sügav või kukkus väga aeglaselt, sest tal oli piisavalt aega
ta laskus end otsima ja mõtlema, mis edasi saab.
Esiteks üritas ta alt üles vaadata ja teada saada, milleni ta jõudis, kuid see oli liiga pime
midagi nägema; siis vaatas ta kaevu külgi ja märkas, et need olid
täidetud kappide ja raamaturiiulitega; siin ja seal nägi ta riputatud kaarte ja pilte
pulkade külge.
Ta võttis möödudes ühelt riiulilt purgi maha; sellel oli silt „ORANGEMARMALADE”,
kuid tema suureks pettumuseks oli see tühi: talle ei meeldinud hirmu pärast purki maha visata
kedagi tapes õnnestus see mööda ühte kukkudes ühte kappi panna.

Sisseehitatud Punkti lause tokenizer töötab hästi, kui soovite tokeniseerida lihtsaid lõike. Pärast NLTK mooduli importimist on vaja vaid suurel tekstikorpusel kasutada meetodit “sent_tokenize ()”. Lausemärkija Punkt ei pruugi aga lauseid õigesti tuvastada, kui on keeruline lõik, mis sisaldab palju kirjavahemärke, hüüumärke, lühendeid või korduvaid sümboleid. Nende probleemide ületamiseks pole võimalik määratleda standardset viisi. Nende probleemide lahendamiseks peate kirjutama kohandatud koodi, kasutades regexi, stringidega manipuleerimist või oma andmemudeli koolitamist sisseehitatud Punkti andmemudeli asemel.

Samuti võite proovida kohandada olemasolevat Punkti mudelit, et parandada vale tokeniseerimine mõne täiendava parameetri abil. Selleks järgige ametlikku Punkti tokeniseerimise dokumentatsiooni siin. Oma kohandatud kohanduste kasutamiseks on vaja koodi veidi muuta:

alates nltk.tokenize.punkt import PunktSentenceTokenizer, PunktParameters
para = "Kas kaev oli väga sügav või kukkus väga aeglaselt, sest tal oli palju
aega, kui ta laskus end vaatama ja mõtlema, mis juhtuma hakkab
järgmine. Kõigepealt üritas ta alt üles vaadata ja teada saada, milleni ta jõudis, aga nii see oli
liiga pime, et midagi näha; siis vaatas ta kaevu külgi ja märkas
et need olid täidetud kappide ja raamaturiiulitega; siin ja seal nägi ta kaarte
ja piltide külge riputatud pilte. Ta võttis samal ajal ühelt riiulilt purgi maha
möödas; sellel oli silt „ORANGE MARMALADE”, kuid tema suureks pettumuseks see oli
tühi: talle ei meeldinud kedagi tapmise kartuses purki visata, nii ta sellega hakkama sai
pani selle ühte kappi, kui ta sellest mööda kukkus."
punkt_params = PunktParameters ()
punkt_params.short_types = komplekt (['härra', 'proua', 'LLC'])
tokenizer = PunktSentenceTokenizer (punkt_params)
märgid = tokenizer.tokenize (para)
tähiste t jaoks:
print (t, "\ n")

Ülaltoodud kood teeb sama tööd kui meetod „sent_tokenize ()”. Kuid nüüd saate sisseehitatud meetodite abil määratleda oma reeglid ja edastada need argumentidena, nagu on kirjeldatud dokumentatsioonis. Näiteks on ülaltoodud koodile lisatud mõned lühendid. Kui neile lühenditele järgneb kirjavahemärgid, ei jagata neid uueks lauseks. Tavaline käitumine on punkti lõpu tähistamiseks punkti või punkti kasutamine.

Järeldus

NLTK ja selle tokeniseerimismeetodid on tekstiandmete märgistamisel ja töötlemisel üsna tõhusad. Eelkoolitatud mudelid ei pruugi aga erinevat tüüpi tekstidega 100% töötada. Kõrvalekallete kõrvaldamiseks peate võib-olla parandama olemasolevaid mudeleid, koolitama ja varustama oma või kirjutama oma koodi.

Kuidas kasutada GameConquerori petumootorit Linuxis
Artikkel sisaldab juhendit GameConquerori petumootori kasutamise kohta Linuxis. Paljud kasutajad, kes mängivad Windowsis mänge, kasutavad rakendust „C...
Parimad Linuxi mängukonsooli emulaatorid
Selles artiklis loetletakse Linuxi jaoks saadaval olev populaarne mängukonsooli emuleerimise tarkvara. Emuleerimine on tarkvara ühilduvuse kiht, mis j...
Parimad mängude jaoks mõeldud Linuxi distrod 2021. aastal
Linuxi operatsioonisüsteem on oma algsest, lihtsast, serveripõhisest välimusest kaugele jõudnud. See operatsioonisüsteem on viimastel aastatel tohutul...