Python

Ako extrahovať vety z textu pomocou modulu Python NLTK

Ako extrahovať vety z textu pomocou modulu Python NLTK
Sada Natural Language Toolkit (NLTK) je modul na spracovanie jazyka a textu pre Python. NLTK môže analyzovať, spracovávať a tokenizovať text dostupný v mnohých rôznych jazykoch pomocou svojej vstavanej knižnice korpusov a veľkého množstva lexikálnych údajov. Python je jedným z najpopulárnejších programovacích jazykov používaných v oblasti dátovej vedy a spracovania jazykov, hlavne kvôli univerzálnosti jazyka a dostupnosti užitočných modulov ako NLTK. Tento článok vysvetlí, ako extrahovať vety z textových odsekov pomocou NLTK. Kód v tejto príručke bol testovaný v prostredí Python 3.8.2 a NLTK 3.4.5 na Ubuntu 20.04 LTS.

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

Balí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 nltk

Upozorň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ť nltk
para = „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ť času
zostú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, PunktParameters
para = „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í.

Ako používať Xdotool na stimuláciu kliknutí a stlačenia myši v systéme Linux
Xdotool je bezplatný a otvorený nástroj príkazového riadku na simuláciu kliknutí a stlačenia klávesov myši. Tento článok sa bude týkať stručného sprie...
Top 5 ergonomických produktov pre počítačové myši pre Linux
Spôsobuje dlhodobé používanie počítača bolesť zápästia alebo prstov? Trpíte stuhnutými kĺbmi a neustále si musíte podávať ruky? Cítite pálivú bolesť z...
Ako zmeniť nastavenie myši a touchpadu pomocou systému Xinput v systéme Linux
Väčšina distribúcií systému Linux sa štandardne dodáva s knižnicou „libinput“ na spracovanie vstupných udalostí v systéme. Dokáže spracovať vstupné ud...