Inštalácia NLTK v systéme Linux
Ak chcete nainštalovať NLTK v Ubuntu, spustite nasledujúci príkaz:
$ sudo apt nainštalovať python3-nltkBalíky NLTK sú k dispozícii vo všetkých hlavných distribúciách systému Linux. Vyhľadajte kľúčové slovo „NLTK“ v správcovi balíkov a nainštalujte balíčky. Ak z nejakého dôvodu NLTK nie je k dispozícii v úložiskách vašej distribúcie, môžete ho nainštalovať zo správcu balíkov pip spustením nasledujúceho príkazu:
$ pip install --user -U nltkUpozorňujeme, že aby vyššie uvedený príkaz fungoval, musíte najskôr nainštalovať pip zo svojho správcu balíkov. Na niektorých distribúciách sa môže nazývať pip3. Môžete tiež postupovať podľa podrobných pokynov na inštaláciu, ktoré sú k dispozícii na serveri oficiálna web stránka NLTK.
Extrakcia viet z odseku pomocou NLTK
Pre odseky bez zložitej interpunkcie a medzier môžete použiť vstavaný tokenizer viet NLTK s názvom „Punkt tokenizer“, ktorý je dodávaný s vopred vyškoleným modelom. Môžete tiež použiť svoje vlastné trénované dátové modely na tokenizáciu textu do viet. Dátové modely vyškolené na mieru sú mimo rozsahu tohto článku, takže nižšie uvedený kód použije vstavaný anglický tokenizer Punkt. Ak chcete stiahnuť súbor prostriedkov Punkt, spustite postupne nasledujúce tri príkazy a počkajte na dokončenie sťahovania:
$ python3$ import nltk
$ nltk.download ('punkt')
V nasledujúcej ukážke kódu bude použitý odsek z „Alice's Adventures in Wonderland“:
importovať nltkpara = „Buď bola studňa veľmi hlboká, alebo padala veľmi pomaly, lebo mala
veľa času, keď išla dole, aby sa o nej pozrela a premýšľala, čo sa deje
stať sa ďalej. Najskôr sa pokúsila pozrieť dole a rozoznať, k čomu prichádza,
ale bola príliš tma na to, aby som niečo videl; potom pozrela na boky studne a
všimli si, že boli naplnené skrinkami a poličkami na knihy; sem tam ona
videl mapy a obrázky zavesené na kolíkoch. Z jednej z políc zložila téglik
ako prechádzala; bol označený ako „ORANGE MARMALADE“, ale na jej veľké sklamanie to bolo
bola prázdna: nerada odhodila nádobu zo strachu, že niekoho zabije, tak sa to podarilo
keď ho prepadla okolo, vložila ho do jednej zo skriniek.„
tokeny = nltk.sent_tokenize (odsek)
pre t v tokenoch:
print (t, "\ n")
Spustením vyššie uvedeného kódu získate nasledujúci výstup:
Buď bola studňa veľmi hlboká, alebo padala veľmi pomaly, pretože mala dosť časuzostúpila, aby sa na seba pozrela a premýšľala, čo sa bude diať ďalej.
Najskôr sa pokúsila pozrieť dole a rozoznať, k čomu prichádza, ale bola príliš tma
vidieť čokoľvek; potom pozrela na boky studne a všimla si, že sú
naplnené skrinkami a policami na knihy; sem tam videla zavesené mapy a obrázky
na kolíkoch.
Keď prešla okolo, z jednej z políc zložila téglik; bol označený ako „ORANGEMARMALADE“,
ale na jej veľké sklamanie bola prázdna: nerada odhodila nádobu zo strachu
niekoho zabil, tak sa jej podarilo vložiť ho do jednej zo skriniek, keď okolo neho padla.
Integrovaný tokenizátor vety Punkt funguje dobre, ak chcete tokenizovať jednoduché odseky. Po importe modulu NLTK stačí na veľký textový korpus použiť metódu „sent_tokenize ()“. Tokenizátor vety Punkt však nemusí správne zistiť vety, ak existuje zložitý odsek, ktorý obsahuje veľa interpunkčných znamienok, výkričníkov, skratiek alebo opakujúcich sa symbolov. Nie je možné definovať štandardný spôsob prekonania týchto problémov. Budete musieť napísať vlastný kód na riešenie týchto problémov pomocou regulárneho výrazu, manipulácie s reťazcami alebo trénovaním vlastného dátového modelu namiesto použitia zabudovaného dátového modelu Punkt.
Môžete tiež vyskúšať doladiť existujúci model Punkt, aby ste opravili nesprávnu tokenizáciu pomocou niektorých ďalších parametrov. Postupujte podľa oficiálnej dostupnej dokumentácie o tokenizácii spoločnosti Punkt tu. Ak chcete použiť svoje vlastné vylepšenia, je potrebná mierna zmena kódu:
od nltk.tokenizovať.punkt import PunktSentenceTokenizer, PunktParameterspara = „Buď bola studňa veľmi hlboká, alebo padala veľmi pomaly, pretože mala veľa
času, keď šla dole, aby sa o nej pozrela a bola zvedavá, čo sa bude diať
Ďalšie. Najskôr sa pokúsila pozrieť dole a rozoznať, k čomu prichádza, ale bolo to tak
príliš tmavý na to, aby niečo videl; potom pozrela po stranách studne a všimla si
že boli naplnené skrinkami a poličkami na knihy; sem-tam uvidela mapy
a obrázky zavesené na kolíkoch. Zložila pri tom nádobu z jednej police
prešiel; bol označený ako „ORANGE MARMALADE“, ale na jej veľké sklamanie to bolo
prázdny: nerada odhodila nádobu zo strachu, že niekoho zabije, tak sa jej to podarilo
keď ho prepadla, položila ho do jednej zo skriniek.„
punkt_params = PunktParameters ()
punkt_params.abbrev_types = set ([['Mr', 'Mrs', 'LLC'])
tokenizer = PunktSentenceTokenizer (punkt_params)
tokeny = tokenizér.tokenizovať (ods.)
pre t v tokenoch:
print (t, "\ n")
Vyššie uvedený kód vykonáva rovnakú prácu ako metóda „sent_tokenize ()“. Teraz však môžete definovať svoje vlastné pravidlá pomocou zabudovaných metód a odovzdať ich ako argumenty, ako je popísané v dokumentácii. Napríklad do kódu vyššie boli pridané niektoré skratky. Ak za týmito skratkami nasleduje interpunkcia, nebudú rozdelené na novú vetu. Normálne správanie je použitie bodky alebo bodky ako indikácie konca vety.
Záver
NLTK a jeho metódy tokenizácie sú pri tokenizácii a spracovaní textových údajov dosť efektívne. Predcvičené modely však nemusia fungovať na 100% s rôznymi typmi textov. Možno budete musieť vylepšiť existujúce modely, trénovať a dodávať svoje vlastné alebo napísať svoj vlastný kód na opravu anomálií.