Installation af NLTK i Linux
For at installere NLTK i Ubuntu skal du køre kommandoen nedenfor:
$ sudo apt installere python3-nltkNLTK-pakker er tilgængelige i alle større Linux-distributioner. Søg efter nøgleordet “NLTK” i pakkehåndteringen for at installere pakkerne. Hvis NLTK af en eller anden grund ikke er tilgængeligt i repositorierne i din distribution, kan du installere det fra pip-pakkehåndteringen ved at køre kommandoen nedenfor:
$ pip install - bruger -U nltkBemærk, at du først skal installere pip fra din pakkehåndtering for at ovenstående kommando skal fungere. På nogle distributioner kan det kaldes pip3. Du kan også følge detaljerede installationsinstruktioner, der er tilgængelige på officiel hjemmeside af NLTK.
Uddrag af sætninger fra et afsnit ved hjælp af NLTK
For afsnit uden komplekse tegnsætning og afstand, kan du bruge den indbyggede NLTK-sætningstoken, kaldet "Punkt tokenizer", der kommer med en foruddannet model. Du kan også bruge dine egne uddannede datamodeller til at tokenisere tekst til sætninger. Tilpasset trænede datamodeller er uden for denne artikels anvendelsesområde, så koden nedenfor bruger den indbyggede Punkt English tokenizer. For at downloade Punkt-ressourcefilen skal du køre følgende tre kommandoer i rækkefølge og vente på, at downloadet er afsluttet:
$ python3$ import nltk
$ nltk.download ('punkt')
Et afsnit fra "Alice's Adventures in Wonderland" vil blive brugt i nedenstående kodeeksempel:
import nltkpara = "Enten var brønden meget dyb, eller så faldt hun meget langsomt, for hun havde gjort det
masser af tid, da hun gik ned for at se efter hende og undre sig over, hvad der foregik
at ske næste. Først forsøgte hun at se ned og finde ud af, hvad hun kom til,
men det var for mørkt til at se noget; så kiggede hun på brøndens sider og
bemærkede, at de var fyldt med skabe og bogreoler; her og der hun
så kort og billeder hængt på pinde. Hun tog en krukke ned fra en af hylderne
da hun gik forbi; det blev mærket 'ORANGE MARMALADE', men til hendes store skuffelse var det
var tom: hun kunne ikke lide at tabe krukken af frygt for at dræbe nogen, så det lykkedes
at lægge det i et af skabene, da hun faldt forbi det."
tokens = nltk.sent_tokenize (para)
for t i tokens:
udskriv (t, "\ n")
Kørsel af ovenstående kode giver dig følgende output:
Enten var brønden meget dyb, eller så faldt hun meget langsomt, for hun havde masser af tid somhun gik ned for at se efter hende og undre sig over, hvad der skulle ske næste gang.
Først forsøgte hun at se ned og finde ud af, hvad hun kom til, men det var for mørkt
at se noget; så kiggede hun på brøndens sider og bemærkede, at de var der
fyldt med skabe og bogreoler; her og der så hun kort og billeder hænge
på pinde.
Hun tog en krukke ned fra en af hylderne, da hun passerede; det blev mærket 'ORANGEMARMALADE',
men til hendes store skuffelse var det tomt: hun kunne ikke lide at tabe krukken af frygt for
dræbte nogen, så det lykkedes at sætte det i et af skabe, da hun faldt forbi det.
Den indbyggede Punkt sætning tokenizer fungerer godt, hvis du vil tokenisere enkle afsnit. Efter import af NLTK-modulet er alt, hvad du skal gøre, at bruge metoden “sent_tokenize ()” på et stort tekstkorpus. Punkt-sætningstokeneren kan dog muligvis ikke registrere sætninger korrekt, når der er et komplekst afsnit, der indeholder mange tegnsætningstegn, udråbstegn, forkortelser eller gentagne symboler. Det er ikke muligt at definere en standard måde at løse disse problemer på. Du bliver nødt til at skrive brugerdefineret kode til at tackle disse problemer ved hjælp af regex, strengmanipulation eller ved at træne din egen datamodel i stedet for at bruge den indbyggede Punkt datamodel.
Du kan også prøve at tilpasse den eksisterende Punkt-model for at rette forkert tokenisering ved hjælp af nogle yderligere parametre. For at gøre dette skal du følge den officielle Punkt-tokeniseringsdokumentation, der er tilgængelig her. For at bruge dine egne brugerdefinerede tweaks kræves en lille ændring af koden:
fra nltk.tokenize.punkt import PunktSentenceTokenizer, PunktParameterspara = "Enten var brønden meget dyb, eller så faldt hun meget langsomt, for hun havde rigeligt
af tid, da hun gik ned for at se efter hende og undre sig over, hvad der skulle ske
Næste. Først forsøgte hun at se ned og finde ud af, hvad hun kom til, men det var det
for mørkt til at se noget; så kiggede hun på brøndens sider og bemærkede det
at de var fyldt med skabe og bogreoler; her og der så hun kort
og billeder hængt på pinde. Hun tog en krukke ned fra en af hylderne, mens hun
bestået; det blev mærket 'ORANGE MARMALADE', men til hendes store skuffelse var det
tom: hun kunne ikke lide at tabe krukken af frygt for at dræbe nogen, så det lykkedes det
sætte det i et af skabene, da hun faldt forbi det."
punkt_params = PunktParameters ()
punkt_params.abbrev_types = set (['Mr', 'Mrs', 'LLC'])
tokenizer = PunktSentenceTokenizer (punkt_params)
tokens = tokenizer.tokenize (para)
for t i tokens:
udskriv (t, "\ n")
Koden ovenfor udfører det samme job som metoden “sent_tokenize ()”. Du kan dog nu definere dine egne regler ved hjælp af indbyggede metoder og videregive dem som argumenter, som beskrevet i dokumentationen. For eksempel er nogle forkortelser blevet tilføjet til koden ovenfor. Hvis disse forkortelser efterfølges af tegnsætning, brydes de ikke i en ny sætning. Den normale adfærd er at bruge en prik eller punktum som en indikation på slutningen af en sætning.
Konklusion
NLTK og dets tokeniseringsmetoder er ret effektive til tokenisering og behandling af tekstdata. Imidlertid fungerer de foruddannede modeller muligvis ikke 100% med forskellige typer tekster. Det kan være nødvendigt at forbedre de eksisterende modeller, træne og levere dine egne eller skrive din egen kode for at rette anomalier.