Programmēšana

8 lieliskas Python bibliotēkas dabiskās valodas apstrādei

Dabiskās valodas apstrādi jeb īsi NLP vislabāk raksturo kā “runas un teksta AI”. Balss komandu, runas un teksta tulkošanas, noskaņojuma analīzes, teksta apkopojuma un daudzu citu valodu lietojumu un analīžu, dabiskās valodas apstrādes maģija ir dramatiski uzlabota, dziļi mācoties.

Python valoda nodrošina ērtu priekšgalu visām mašīnmācīšanās šķirnēm, ieskaitot NLP. Patiesībā Python ekosistēmā ir neērti izvēlēties NLP bagātības. Šajā rakstā mēs izpētīsim visas Python pieejamās NLP bibliotēkas - to lietošanas gadījumus, stiprās puses, vājās vietas un vispārējo popularitātes līmeni.

Ņemiet vērā, ka dažas no šīm bibliotēkām nodrošina tās pašas funkcionalitātes augstāka līmeņa versijas, kuras ir parādījušas citas, padarot šo funkcionalitāti vieglāk lietojamu par zināmu precizitāti vai veiktspēju. Jūs vēlaties izvēlēties bibliotēku, kas ir piemērota gan jūsu kompetences līmenim, gan projekta raksturam.

CoreNLP

CoreNLP bibliotēka - Stenfordas universitātes produkts - tika uzbūvēta kā ražošanai gatavs dabiskās valodas apstrādes risinājums, kas spēj sniegt NLP prognozes un analīzes plašā mērogā. CoreNLP ir rakstīts Java valodā, taču tam ir pieejamas vairākas Python paketes un API, tostarp vietējā Python NLP bibliotēka ar nosaukumu StanfordNLP.

CoreNLP ietver plašu valodu rīku klāstu - gramatikas marķēšanu, nosaukto entītiju atpazīšanu, parsēšanu, noskaņojuma analīzi un daudz ko citu. Tas tika izstrādāts kā cilvēku valodas agnostiķis, un tas papildus angļu valodai pašlaik atbalsta arābu, ķīniešu, franču, vācu un spāņu valodu (ar krievu, zviedru un dāņu atbalstu, kas pieejams no trešām pusēm). CoreNLP ietver arī tīmekļa API serveri, ērtu veidu, kā apkalpot prognozes bez pārāk liela papildu darba.

Visvienkāršāk sākt ar CoreNLP Python ietinējiem ir StanfordNLP, atsauces ieviešana, ko izveidojusi Stanford NLP Group. Papildus labi dokumentētai informācijai StanfordNLP tiek regulāri uzturēta; daudzas citas CoreNLP Python bibliotēkas kādu laiku nav atjauninātas.

CoreNLP atbalsta arī NLTK izmantošanu - galveno Python NLP bibliotēku, kas aplūkota turpmāk. Sākot ar 3.2.3 versiju, NLTK savā parsētājā iekļauj saskarnes ar CoreNLP. Vienkārši izmantojiet pareizo API.

Acīmredzams CoreNLP trūkums ir tas, ka, lai to palaistu un darbotos, jums būs nepieciešama neliela Java pārzināšana, taču tas nav nekas, ko var panākt ar rūpīgu dokumentācijas lasīšanu. Vēl viens šķērslis varētu būt CoreNLP licencēšana. Viss rīku komplekts ir licencēts saskaņā ar GPLv3, tas nozīmē, ka jebkurai patentētas programmatūras izmantošanai, ko izplatāt citiem, būs nepieciešama komerciāla licence.

Gensim

Gensim izdara tikai divas lietas, bet dara tās ārkārtīgi labi. Tās uzmanības centrā ir statistikas semantika - dokumentu struktūras analizēšana, pēc tam citu dokumentu vērtēšana, pamatojoties uz to līdzību.

Gensim var strādāt ar ļoti lieliem teksta elementiem, straumējot dokumentus savā analīzes dzinējā un pakāpeniski veicot tiem bez uzraudzības. Tas var izveidot vairāku veidu modeļus, katrs piemērots dažādiem scenārijiem: Word2Vec, Doc2Vec, FastText un Latent Dirichlet Allocation.

Gensim detalizētajā dokumentācijā ir iekļautas apmācības un pamācības, kas izskaidro galvenos jēdzienus un ilustrē tos ar praktiskiem piemēriem. Gensim GitHub repo ir pieejamas arī izplatītas receptes.

NLTK

Dabiskās valodas rīkkopa jeb īsāk sakot NLTK ir viena no pazīstamākajām un jaudīgākajām no Python dabiskās valodas apstrādes bibliotēkām. Daudzi korpusi (datu kopas) un apmācīti modeļi ir pieejami izmantošanai ar NLTK ārpus kastes, tāpēc jūs varat sākt eksperimentēt ar NLTK uzreiz.

Kā norādīts dokumentācijā, NLTK nodrošina plašu rīku klāstu darbam ar tekstu: “klasifikācija, marķēšana, atdalīšana, iezīmēšana, parsēšana un semantiskā pamatošana”. Tas var arī strādāt ar dažiem trešo pušu rīkiem, lai uzlabotu tā funkcionalitāti.

Paturiet prātā, ka NLTK izveidoja akadēmisko pētījumu auditorija. Tas nebija paredzēts NLP modeļu apkalpošanai ražošanas vidē. Arī dokumentācija ir nedaudz skopa; pat how-tos ir plāni. Tāpat nav 64 bitu binārā; lai to izmantotu, jums jāinstalē Python 32 bitu izdevums. Visbeidzot, arī NLTK nav ātrākā bibliotēka, taču to var paātrināt ar paralēlu apstrādi.

Ja esat nolēmis izmantot to, kas atrodas NLTK, tā vietā varat sākt ar TextBlob (aplūkots tālāk).

Modelis

Ja viss, kas jums jādara, ir nokasīt populāru vietni un analizēt to, ko atradāt, sasniedziet Pattern. Šī dabiskās valodas apstrādes bibliotēka ir daudz mazāka un šaurāka nekā citas šeit aplūkotās bibliotēkas, taču tas arī nozīmē, ka tā ir vērsta uz viena kopīga darba veikšanu patiešām labi.

Rakstam ir iebūvēti iebūvēti rīki, lai nokasītu vairākus populārus tīmekļa pakalpojumus un avotus (Google, Wikipedia, Twitter, Facebook, vispārīgas RSS utt.), Kuri visi ir pieejami kā Python moduļi (piem., no pattern.web importa čivināt). Lai iegūtu datus no šīm vietnēm, jums nav jāizgudro riteņi no jauna, ņemot vērā visu to atsevišķās dīvainības. Pēc tam ar datiem varat veikt dažādas izplatītas NLP darbības, piemēram, noskaņojuma analīzi.

Pattern parāda dažas no tā zemākā līmeņa funkcionalitātēm, ļaujot tieši izmantot NLP funkcijas, n-grama meklēšanu, vektorus un grafikus, ja vēlaties. Tajā ir arī iebūvēta palīgbibliotēka darbam ar kopīgām datu bāzēm (MySQL, SQLite un MongoDB nākotnē), tādējādi atvieglojot darbu ar tabulas datiem, kas saglabāti no iepriekšējām sesijām vai iegūti no trešajām pusēm.

Poliglots

Polyglot, kā norāda nosaukums, ļauj dabiskās valodas apstrādes lietojumprogrammām, kas vienlaikus strādā ar vairākām valodām.

Polyglot NLP funkcijas atkārto to, kas atrodams citās NLP bibliotēkās: tokenizācija, nosaukto entītiju atpazīšana, runas daļas iezīmēšana, noskaņojuma analīze, vārdu iegulšana utt. Katrai no šīm darbībām Polyglot nodrošina modeļus, kas darbojas ar nepieciešamajām valodām.

Ņemiet vērā, ka Polyglot valodas atbalsts dažādās funkcijās ievērojami atšķiras. Piemēram, marķēšanas sistēma atbalsta gandrīz 200 valodas (galvenokārt tāpēc, ka tā izmanto Unicode teksta segmentēšanas algoritmu), un noskaņojumu analīze atbalsta 136 valodas, bet runas daļēja iezīmēšana atbalsta tikai 16.

PyNLPI

PyNLPI (izrunā “ananāss”) ir tikai pamata dabiskās valodas apstrādes funkciju saraksts, taču tam ir dažas patiesi noderīgas datu konvertēšanas un datu apstrādes funkcijas NLP datu formātiem.

Lielākā daļa NLP funkciju PyNLPI ir paredzētas pamata darbiem, piemēram, tokenizēšanai vai n-gramu ekstrakcijai, kā arī dažām NLP noderīgām statistikas funkcijām, piemēram, Levenshtein attālumam starp virknēm vai Markova ķēdēm. Ērtības labad šīs funkcijas tiek ieviestas tīrā Python versijā, tāpēc maz ticams, ka tām būs ražošanas līmeņa veiktspēja.

Bet PyNLPI spīd strādāt ar dažiem eksotiskākiem datu tipiem un formātiem, kas izveidojušies NLP telpā. PyNLPI var lasīt un apstrādāt GIZA, Moses ++, SoNaR, Taggerdata un TiMBL datu formātus, un visu moduli velta darbam ar FoLiA, XML dokumenta formātu, ko lieto, lai anotētu valodas resursus, piemēram, korporācijas (tulkošanai vai citai analīzei izmantotie teksta pamati). .

Jūs vienmēr vēlaties sasniegt PyNLPI, kad nodarbojaties ar šiem datu tipiem.

SpaCy

SpaCy, kas ērtībai pieskaras Python un ātrumam Cython, tiek iekasēts kā “rūpnieciskas dabas valodas apstrāde”. Tās veidotāji apgalvo, ka ātruma, modeļa izmēra un precizitātes ziņā to var salīdzināt ar NLTK, CoreNLP un citiem konkurentiem. SpaCy galvenais trūkums ir salīdzinoši jauns, tāpēc tas attiecas tikai uz angļu valodu un dažām citām (galvenokārt Eiropas) valodām. Tas nozīmē, ka šajā rakstā SpaCy jau ir sasniedzis 2.2 versiju.

SpaCy visvairāk ietver visas funkcijas, kas atrodamas šajos konkurējošajos ietvaros: runas iezīmēšana, atkarības parsēšana, nosaukto entītiju atpazīšana, marķēšana, teikumu segmentēšana, uz noteikumiem balstītas atbilstības operācijas, vārdu vektori un vēl daudz citu. SpaCy ietver arī GPU darbību optimizāciju - gan skaitļošanas paātrināšanai, gan datu glabāšanai GPU, lai izvairītos no kopēšanas.

Spacy dokumentācija ir lieliska. Iestatīšanas vednis ģenerē komandrindas instalēšanas darbības arī Windows, Linux un MacOS, kā arī dažādām Python vidēm (pip, conda utt.). Valodas modeļi tiek instalēti kā Python pakotnes, tāpēc tos var izsekot kā daļu no lietojumprogrammas atkarību saraksta.

TextBlob

TextBlob ir draudzīgs Pattern un NLTK bibliotēku priekšgals, abas šīs bibliotēkas iesaiņojot augsta līmeņa, viegli lietojamās saskarnēs. Izmantojot TextBlob, jūs tērējat mazāk laika, cīnoties ar Pattern un NLTK sarežģījumiem, un vairāk laika, lai iegūtu rezultātus.

TextBlob izlīdzina ceļu, izmantojot vietējos Python objektus un sintaksi. Ātrās sākšanas piemēri parāda, kā apstrādājamos tekstus vienkārši uzskata par virknēm, un parastās NLP metodes, piemēram, runas daļēja iezīmēšana, ir pieejamas kā metodes šiem virkņu objektiem.

Vēl viena TextBlob priekšrocība ir tā, ka, pieaugot pašpārliecinātībai, jūs varat “pacelt pārsegu” un mainīt tā funkcionalitāti. Daudzus noklusējuma komponentus, piemēram, noskaņojuma analīzes sistēmu vai marķieri, var nomainīt pēc nepieciešamības. Varat arī izveidot augsta līmeņa objektus, kas apvieno komponentus - šo noskaņojumu analizatoru, klasifikatoru utt. - un tos atkārtoti izmantot ar minimālām pūlēm. Tādā veidā jūs varat ātri kaut ko prototipēt ar TextBlob, pēc tam to vēlreiz uzlabot.

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