Piton

Kako izvući rečenice iz teksta pomoću NLTK Python modula

Kako izvući rečenice iz teksta pomoću NLTK Python modula
Alat za prirodni jezik (NLTK) modul je za obradu jezika i teksta za Python. NLTK može analizirati, obrađivati ​​i tokenizirati tekst dostupan na mnogim različitim jezicima koristeći svoju ugrađenu biblioteku tijela i veliku bazu leksičkih podataka. Python je jedan od najpopularnijih programskih jezika koji se koristi u znanosti podataka i obradi jezika, uglavnom zbog svestranosti jezika i dostupnosti korisnih modula poput NLTK. Ovaj će vam članak objasniti kako izvući rečenice iz paragrafa teksta pomoću NLTK. Kôd u ovom vodiču testiran je s Python 3.8.2 i NLTK 3.4.5 na Ubuntu 20.04 LTS.

Instaliranje NLTK u Linux

Da biste instalirali NLTK u Ubuntu, pokrenite naredbu u nastavku:

$ sudo apt instalirati python3-nltk

NLTK paketi dostupni su u svim glavnim Linux distribucijama. Potražite ključnu riječ “NLTK” u upravitelju paketa da biste instalirali pakete. Ako iz nekog razloga, NLTK nije dostupan u spremištima vaše distribucije, možete ga instalirati iz upravitelja paketa pip pokretanjem naredbe u nastavku:

$ pip install --user -U nltk

Imajte na umu da ćete prvo morati instalirati pip iz upravitelja paketa da bi gornja naredba radila. Na nekim distribucijama može se zvati pip3. Također možete slijediti detaljne upute za instalaciju dostupne na službena stranica NLTK-a.

Izdvajanje rečenica iz odlomka pomoću NLTK

Za odlomke bez složenih interpunkcija i razmaka možete upotrijebiti ugrađeni tokenizer rečenica NLTK, nazvan "Punkt tokenizer", koji dolazi s unaprijed obučenim modelom. Također možete koristiti vlastite obučene modele podataka za tokeniziranje teksta u rečenice. Prilagođeni modeli podataka izvan su dosega ovog članka, pa će se u donjem kodu koristiti ugrađeni punkt engleski tokenizer. Da biste preuzeli datoteku resursa Punkt, uzastopno pokrenite sljedeće tri naredbe i pričekajte da se preuzimanje završi:

$ python3
$ uvoz nltk
$ nltk.preuzmi ('punkt')

U nastavku će se koristiti odlomak iz “Alisine pustolovine u zemlji čudesa”:

uvoziti nltk
para = "Ili je zdenac bio vrlo dubok, ili je pala vrlo sporo, jer je imala
puno vremena dok je silazila da je pogleda i da se zapita što se događa
da se dogodi sljedeće. Prvo je pokušala spustiti pogled i razabrati što dolazi,
ali bilo je pretamno da bih išta vidio; zatim je pogledala bočne strane bunara i
primijetio da su ispunjeni ormarima i policama za knjige; tu i tamo ona
vidio mape i slike obješene na klinovima. Skinula je staklenku s jedne police
dok je prolazila; bila je označena kao 'NARANČASTA MARMALADA', ali na njezino veliko razočaranje
bila prazna: nije voljela ispustiti staklenku iz straha da će nekoga ubiti, pa je uspjela
da ga stavi u jedan od ormara kad je pala kraj njega."
žetoni = nltk.sent_tokenize (para)
za t u žetonima:
ispis (t, "\ n")

Pokretanje gornjeg koda dobit će sljedeći rezultat:

Ili je zdenac bio vrlo dubok, ili je pala vrlo sporo, jer je imala dovoljno vremena kao
sišla je pogledati oko sebe i pitati se što će se sljedeće dogoditi.
Prvo je pokušala spustiti pogled i razabrati što dolazi, ali bilo je pretamno
vidjeti bilo što; zatim je pogledala bočne strane bunara i primijetila da jesu
ispunjeni ormarima i policama za knjige; tu i tamo vidjela je obješene mape i slike
na klinovima.
U prolazu je skinula staklenku s jedne od polica; bio je označen kao "ORANGEMARMALADA",
ali na njezino veliko razočaranje bilo je prazno: nije voljela ispustiti staklenku iz straha
ubivši nekoga, pa ga uspio strpati u jedan od ormara kad je pala kraj njega.

Ugrađeni tokenizator Punkt rečenica dobro funkcionira ako želite tokenizirati jednostavne odlomke. Nakon uvoza NLTK modula, sve što trebate je koristiti metodu "sent_tokenize ()" na velikom tekstualnom korpusu. Međutim, tokenizator punkt rečenica možda neće pravilno prepoznati rečenice kada postoji složeni odlomak koji sadrži mnogo interpunkcijskih znakova, uskličnika, kratica ili ponavljajućih simbola. Nije moguće definirati standardni način za prevladavanje ovih problema. Morat ćete napisati prilagođeni kôd za rješavanje tih problema pomoću regularnog izraza, manipulacije nizovima ili treniranjem vlastitog podatkovnog modela umjesto korištenja ugrađenog Punkt modela podataka.

Također možete pokušati prilagoditi postojeći Punkt model kako biste popravili netočnu tokenizaciju pomoću nekih dodatnih parametara. Da biste to učinili, slijedite službenu dostupnu dokumentaciju o tokenizaciji Punkt ovdje. Da biste koristili vlastite prilagođene prilagodbe, potrebna je mala promjena koda:

iz nltk.tokenizirati.punkt import PunktSentenceTokenizer, PunktParameters
para = "Ili je zdenac bio vrlo dubok, ili je padala vrlo sporo, jer ga je bilo dosta
vremena dok je silazila pogledati oko sebe i pitati se što će se dogoditi
Sljedeći. Prvo je pokušala pogledati dolje i razabrati što dolazi, ali bilo je
pretamno da bih išta vidio; zatim je pogledala bočne strane bunara i primijetila
da su bili ispunjeni ormarima i policama za knjige; tu i tamo vidjela je karte
a slike visjele na klinovima. Dok je skidala staklenku s jedne od polica
prošao; bila je označena kao 'MARMALADA OD NARANČE', ali na njezino veliko razočaranje
prazno: nije voljela ispustiti staklenku iz straha da će nekoga ubiti, pa je uspjela
stavila ga u jedan od ormara kad je pala kraj njega."
punkt_params = PunktParameters ()
punkt_params.kratica_vrsta = set (['Gospodin', 'Gospođa', 'LLC'])
tokenizer = PunktSentenceTokenizer (punkt_params)
žetoni = tokenizer.tokenizirati (para)
za t u žetonima:
ispis (t, "\ n")

Gornji kod obavlja isti posao kao i metoda "sent_tokenize ()". Međutim, sada možete definirati vlastita pravila pomoću ugrađenih metoda i proslijediti ih kao argumente, kako je opisano u dokumentaciji. Na primjer, neke su kratice dodane u gornji kod. Ako ove kratice prate interpunkcija, neće se raščlaniti u novu rečenicu. Uobičajeno ponašanje je korištenje točke ili točke kao naznake kraja rečenice.

Zaključak

NLTK i njegove metode tokenizacije prilično su učinkovite u tokenizaciji i obradi tekstnih podataka. Međutim, unaprijed obučeni modeli možda neće raditi 100% s različitim vrstama tekstova. Možda ćete trebati poboljšati postojeće modele, obučiti i isporučiti vlastiti ili napisati vlastiti kôd da biste popravili anomalije.

Kako preuzeti i igrati Sid Meier's Civilization VI na Linuxu
Uvod u igru Civilization 6 moderan je pogled na klasični koncept predstavljen u seriji igara Age of Empires. Ideja je bila prilično jednostavna; započ...
Kako instalirati i igrati Doom na Linuxu
Uvod u Doom Serija Doom nastala je 90-ih nakon izlaska originalnog Dooma. To je bio trenutni hit i od tog vremena nadalje igraća serija dobila je broj...
Vulkan za korisnike Linuxa
Sa svakom novom generacijom grafičkih kartica vidimo da programeri igara pomiču granice grafičke vjernosti i dolaze na korak od fotorealizma. No, bez ...