Programovanie

8 skvelých knižníc Pythonu na spracovanie prirodzeného jazyka

Spracovanie prirodzeného jazyka, alebo skrátene NLP, sa dá najlepšie opísať ako „AI pre reč a text“. Kúzlo, ktoré stojí za hlasovými príkazmi, prekladom reči a textu, analýzou sentimentu, sumarizáciou textu a mnohými ďalšími jazykovými aplikáciami a analýzami, sa hlbokým učením dramaticky zlepšilo spracovanie prirodzeného jazyka.

Jazyk Python poskytuje pohodlné rozhranie pre všetky druhy strojového učenia vrátane NLP. V skutočnosti je v ekosystéme Python rozpaky z bohatstva NLP, z ktorých si môžete vybrať. V tomto článku sa pozrieme na každú z knižníc NLP dostupných pre Python - ich prípady použitia, silné a slabé stránky a všeobecnú úroveň popularity.

Upozorňujeme, že niektoré z týchto knižníc poskytujú verzie rovnakej úrovne vyššej úrovne vystavené ostatnými, čo uľahčuje ich používanie za cenu určitej presnosti alebo výkonu. Budete si chcieť vybrať knižnicu, ktorá bude vyhovovať vašej úrovni odbornosti aj povahe projektu.

CoreNLP

Knižnica CoreNLP - produkt Stanfordskej univerzity - bola postavená ako riešenie na spracovanie prirodzeného jazyka pripravené na produkciu, schopné poskytovať predpovede a analýzy NLP v rozsahu. CoreNLP je napísaný v jazyku Java, ale je preň k dispozícii niekoľko balíkov Python a API, vrátane natívnej knižnice Python NLP s názvom StanfordNLP.

CoreNLP obsahuje širokú škálu jazykových nástrojov - značenie gramatiky, rozpoznávanie pomenovaných entít, syntaktická analýza, analýza sentimentu a mnoho ďalších. Bol navrhnutý tak, aby bol agnostický v ľudskom jazyku, a v súčasnosti podporuje okrem angličtiny aj arabčinu, čínštinu, francúzštinu, nemčinu a španielčinu (s podporou tretích strán v ruštine, švédčine a dánčine). CoreNLP tiež obsahuje webový API server, čo je pohodlný spôsob poskytovania predpovedí bez prílišnej ďalšej práce.

Najjednoduchšie miesto, kde začať s obálkami Python od CoreNLP, je StanfordNLP, referenčná implementácia vytvorená skupinou Stanford NLP Group. StanfordNLP je okrem dobre zdokumentovaného aj pravidelne udržiavaný; mnoho ďalších knižníc Python pre CoreNLP nebolo v určitom čase aktualizovaných.

CoreNLP tiež podporuje použitie NLTK, hlavnej knižnice Python NLP, o ktorej sa hovorí nižšie. Od verzie 3.2.3 obsahuje NLTK vo svojom syntaktickom analyzátore rozhrania s CoreNLP. Nezabudnite použiť správne API.

Zjavnou nevýhodou CoreNLP je, že na to, aby ste mohli Java uviesť do chodu, budete potrebovať určité znalosti, ale to nie je nič, čo by pozorné prečítanie dokumentácie nemohlo dosiahnuť. Ďalšou prekážkou môže byť licencovanie CoreNLP. Celá sada nástrojov je licencovaná podľa GPLv3, čo znamená, že akékoľvek použitie v proprietárnom softvéri, ktorý distribuujete iným, bude vyžadovať komerčnú licenciu.

Gensim

Gensim robí iba dve veci, ale robí ich mimoriadne dobre. Zameriava sa na štatistickú sémantiku - analyzuje štruktúru dokumentov a potom vyhodnocuje ďalšie dokumenty na základe ich podobnosti.

Gensim môže pracovať s veľmi veľkými textami tak, že streamuje dokumenty do svojho analytického nástroja a inkrementálne sa na nich učí bez dozoru. Môže vytvoriť niekoľko typov modelov, každý vhodný pre rôzne scenáre: Word2Vec, Doc2Vec, FastText a Latent Dirichlet Allocation.

Podrobná dokumentácia spoločnosti Gensim obsahuje návody a návody, ktoré vysvetľujú kľúčové pojmy a ilustrujú ich praktickými príkladmi. Bežné recepty sú k dispozícii aj v repo serveri Gensim GitHub.

NLTK

Sada Natural Language Toolkit alebo skrátene NLTK patrí medzi najznámejšie a najsilnejšie z knižníc na spracovanie prirodzeného jazyka v jazyku Python. Mnoho balíkov (súborov údajov) a trénovaných modelov je k dispozícii na použitie s NLTK už po vybalení z krabice, takže s NLTK môžete ihneď začať experimentovať.

Ako uvádza dokumentácia, NLTK poskytuje širokú škálu nástrojov na prácu s textom: „klasifikácia, tokenizácia, odvodenie, značkovanie, analýza a sémantické uvažovanie.“ Môže tiež pracovať s niektorými nástrojmi tretích strán na vylepšenie svojej funkčnosti.

Majte na pamäti, že NLTK bolo vytvorené akademickým výskumným publikom a pre neho. Nebol navrhnutý tak, aby slúžil modelom NLP v produkčnom prostredí. Dokumentácia je tiež trochu riedka; aj návody sú tenké. Taktiež neexistuje žiadny 64-bitový binárny súbor; Ak ju chcete používať, musíte si nainštalovať 32-bitovú verziu Pythonu. Napokon ani NLTK nie je najrýchlejšou knižnicou, ale dá sa urýchliť paralelným spracovaním.

Ak ste odhodlaní využiť to, čo je v NLTK, môžete namiesto toho začať s TextBlobom (o čom pojednáme nižšie).

Vzor

Ak stačí vyškrabať populárny web a analyzovať, čo nájdete, siahnite po vzore. Táto knižnica na spracovanie prirodzeného jazyka je oveľa menšia a užšia ako ostatné tu uvedené knižnice, ale to tiež znamená, že je zameraná na odvádzanie jednej spoločnej práce naozaj dobre.

Pattern je dodávaný so zabudovanými modulmi na zošrotovanie množstva populárnych webových služieb a zdrojov (Google, Wikipedia, Twitter, Facebook, všeobecné kanály RSS atď.), Ktoré sú k dispozícii ako moduly Pythonu (napr. zo vzoru import.web Twitter). Na získanie údajov z týchto webov nemusíte znovu objavovať kolesá so všetkými ich individuálnymi požiadavkami. Potom môžete s dátami vykonať rôzne bežné operácie NLP, ako je napríklad analýza sentimentu.

Pattern odhaľuje niektoré zo svojich funkcií na nižšej úrovni, čo vám umožňuje priamo používať funkcie NLP, vyhľadávanie n-gramov, vektory a grafy. Má tiež zabudovanú pomocnú knižnicu pre prácu s bežnými databázami (MySQL, SQLite a MongoDB v budúcnosti), ktorá uľahčuje prácu s tabuľkovými údajmi uloženými z predchádzajúcich relácií alebo získanými od tretích strán.

Polyglot

Polyglot, ako už z názvu vyplýva, umožňuje aplikácie na spracovanie prirodzeného jazyka, ktoré sa zaoberajú viacerými jazykmi naraz.

Funkcie NLP v Polyglote odrážajú to, čo sa nachádza v iných knižniciach NLP: tokenizácia, rozpoznávanie pomenovaných entít, označovanie časti reči, analýza sentimentu, vkladanie slov atď. Pre každú z týchto operácií Polyglot poskytuje modely, ktoré pracujú s potrebnými jazykmi.

Pamätajte, že jazyková podpora spoločnosti Polyglot sa v jednotlivých funkciách výrazne líši. Napríklad tokenizačný systém podporuje takmer 200 jazykov (hlavne preto, že používa algoritmus Unicode Text Segmentation) a analýza sentimentu podporuje 136 jazykov, ale označovanie časti reči podporuje iba 16.

PyNLPI

PyNLPI (vyslovuje sa ako „ananás“) má iba základný zoznam funkcií spracovania prirodzeného jazyka, ale má niektoré skutočne užitočné funkcie na prevod údajov a spracovanie údajov pre dátové formáty NLP.

Väčšina funkcií NLP v PyNLPI slúži na základné úlohy, ako je tokenizácia alebo extrakcia n-gramov, spolu s niektorými štatistickými funkciami užitočnými v NLP, ako je Levenshteinova vzdialenosť medzi reťazcami alebo Markovove reťazce. Tieto funkcie sú kvôli pohodliu implementované v čistom Pythone, takže je nepravdepodobné, že budú mať výkon na úrovni výroby.

PyNLPI však svieti pre prácu s niektorými exotickejšími dátovými typmi a formátmi, ktoré sa objavili v priestore NLP. PyNLPI dokáže čítať a spracovávať dátové formáty GIZA, Moses ++, SoNaR, Taggerdata a TiMBL a venuje celý modul práci s formátom FoLiA, formátom dokumentu XML, ktorý sa používa na anotáciu jazykových zdrojov, ako sú korpusy (telá textu používané na preklad alebo inú analýzu). .

Pri riešení týchto typov údajov budete chcieť siahnuť po PyNLPI.

SpaCy

SpaCy, ktorý využíva Python pre pohodlie a Cython pre rýchlosť, sa účtuje ako „priemyselné spracovanie prirodzeného jazyka“. Jeho tvorcovia tvrdia, že je z hľadiska rýchlosti, veľkosti modelu a presnosti porovnateľný s NLTK, CoreNLP a inými konkurentmi. Hlavnou nevýhodou SpaCy je, že je relatívne nová, takže pokrýva iba angličtinu a niekoľko ďalších (hlavne európskych) jazykov. To znamená, že SpaCy už od tohto písania dosiahol verziu 2.2.

SpaCy obsahuje väčšinu všetkých funkcií, ktoré sa nachádzajú v týchto konkurenčných rámcoch: značkovanie reči, syntaktická analýza závislostí, rozpoznávanie pomenovaných entít, tokenizácia, segmentácia viet, operácie zhôd založené na pravidlách, slovné vektory a veľa ďalších. SpaCy tiež obsahuje optimalizácie pre operácie GPU - pre zrýchlenie výpočtu a pre ukladanie údajov na GPU, aby sa zabránilo kopírovaniu.

Spacyova dokumentácia je vynikajúca. Sprievodca nastavením generuje inštalačné akcie príkazového riadku pre Windows, Linux a macOS a tiež pre rôzne prostredia Pythonu (pip, conda atď.). Jazykové modely sa inštalujú ako balíčky Python, takže je možné ich sledovať ako súčasť zoznamu závislostí aplikácie.

TextBlob

TextBlob je priateľské klientske rozhranie pre knižnice Pattern a NLTK, ktoré oba tieto knižnice zabaľuje do ľahko použiteľných rozhraní na vysokej úrovni. S TextBlobom trávite menej času zápasením so zložitosťami Pattern a NLTK a viac času dosahovaním výsledkov.

TextBlob vyhladzuje cestu využitím natívnych objektov a syntaxe jazyka Python. Príklady rýchleho spustenia ukazujú, ako sa s textmi, ktoré sa majú spracovať, zaobchádza jednoducho ako s reťazcami a ako metódy pre tieto objekty reťazca sú k dispozícii bežné metódy NLP, ako napríklad značkovanie časti reči.

Ďalšou výhodou TextBlob je, že môžete „zdvihnúť kapotu“ a meniť jeho funkčnosť, keď budete sebavedomejší. Mnoho predvolených komponentov, ako je napríklad systém analýzy sentimentu alebo tokenizer, je možné podľa potreby vymeniť. Môžete tiež vytvoriť objekty na vysokej úrovni, ktoré kombinujú komponenty - tento analyzátor sentimentu, tento klasifikátor atď. - a s minimálnym úsilím ich opakovane používať. Týmto spôsobom môžete niečo prototypovať rýchlo pomocou TextBlob, potom to vylepšiť neskôr.

$config[zx-auto] not found$config[zx-overlay] not found