Programavimas

8 puikios „Python“ bibliotekos, skirtos natūraliai kalbai apdoroti

Natūralios kalbos apdorojimas arba trumpiau - NLP geriausiai apibūdinamas kaip „kalbos ir teksto dirbtinis intelektas“. Magija, slypinti už balso komandų, kalbos ir teksto vertimo, nuotaikų analizės, teksto apibendrinimo ir daugelio kitų kalbinių taikymų ir analizių, natūralios kalbos apdorojimo, buvo labai patobulinta giliai mokantis.

„Python“ kalba suteikia patogų visų kompiuterinio mokymosi variantų, įskaitant NLP, sąsają. Tiesą sakant, „Python“ ekosistemoje yra nemalonu rinktis NLP turtus. Šiame straipsnyje mes ištirsime kiekvieną iš „Python“ prieinamų NLP bibliotekų - jų naudojimo atvejus, stipriąsias, silpnąsias puses ir bendrą populiarumo lygį.

Atkreipkite dėmesį, kad kai kurios iš šių bibliotekų teikia tos pačios funkcijos aukštesnio lygio versijas, kurias atskleidžia kitos, todėl šią funkciją lengviau naudoti tam tikro tikslumo ar našumo kaina. Norėsite pasirinkti biblioteką, kuri būtų tinkama tiek jūsų kompetencijos lygiui, tiek projekto pobūdžiui.

„CoreNLP“

„CoreNLP“ biblioteka - Stanfordo universiteto produktas - buvo sukurta kaip gamybai paruoštas natūralios kalbos apdorojimo sprendimas, galintis pateikti NLP prognozes ir analizes masto mastu. „CoreNLP“ yra parašyta „Java“, tačiau jai prieinami keli „Python“ paketai ir API, įskaitant savąją „Python“ NLP biblioteką, vadinamą „StanfordNLP“.

„CoreNLP“ apima platų kalbinių įrankių asortimentą - gramatikos žymėjimą, pavadinimo atpažinimą, analizavimą, nuotaikos analizę ir daug daugiau. Jis buvo sukurtas kaip žmonių kalbos agnostikas ir šiuo metu be anglų kalbos palaiko arabų, kinų, prancūzų, vokiečių ir ispanų kalbas (su rusų, švedų ir danų kalbomis, kurias teikia trečiosios šalys). „CoreNLP“ taip pat yra žiniatinklio API serveris - patogus būdas teikti prognozes be per didelio papildomo darbo.

Lengviausia pradėti nuo „CoreNLP Python“ įvyniojimo priemonių yra „StanfordNLP“, tai yra „Stanford NLP Group“ sukurtas informacinis diegimas. Be to, kad dokumentai „StanfordNLP“ yra gerai dokumentuojami, jie taip pat yra reguliariai prižiūrimi; daugelis kitų „CoreNLP“ „Python“ bibliotekų kurį laiką nebuvo atnaujintos.

„CoreNLP“ taip pat palaiko NLTK, pagrindinės „Python“ NLP bibliotekos, aptariamos toliau, naudojimą. Nuo 3.2.3 versijos NLTK į savo analizatorių įtraukia sąsajas su „CoreNLP“. Tiesiog būtinai naudokite teisingą API.

Akivaizdus „CoreNLP“ trūkumas yra tas, kad jums reikės šiek tiek išmanyti „Java“, kad galėtumėte ją paleisti ir paleisti, tačiau tai nėra kruopštus dokumentų skaitymas. Kita kliūtis gali būti „CoreNLP“ licencijavimas. Visam įrankių rinkiniui suteikta licencija pagal GPLv3, o tai reiškia, kad norint naudoti patentuotą programinę įrangą, kurią platinate kitiems, reikės komercinės licencijos.

Gensim

Gensimas daro tik du dalykus, tačiau daro juos nepaprastai gerai. Pagrindinis dėmesys skiriamas statistinei semantikai - analizuojant dokumentus pagal jų struktūrą, tada vertinant kitus dokumentus pagal jų panašumą.

„Gensim“ gali dirbti su labai dideliu teksto kiekiu, srautu perduodamas dokumentus į savo analizės variklį ir palaipsniui atlikdamas jų neprižiūrimą mokymąsi. Tai gali sukurti kelių tipų modelius, kurių kiekvienas tinka skirtingiems scenarijams: „Word2Vec“, „Doc2Vec“, „FastText“ ir „Latent Dirichlet Allocation“.

Išsamioje „Gensim“ dokumentacijoje yra pamokos ir instrukcijos, paaiškinančios pagrindines sąvokas ir iliustruojančios jas praktiniais pavyzdžiais. Bendri receptai taip pat yra „Gensim GitHub“ repo.

NLTK

Natūralios kalbos įrankių rinkinys arba trumpai NLTK yra viena iš geriausiai žinomų ir galingiausių iš „Python“ natūralios kalbos apdorojimo bibliotekų. Daugelį korpusų (duomenų rinkinių) ir apmokytų modelių galima naudoti su NLTK iš dėžutės, todėl galite pradėti eksperimentuoti su NLTK iškart.

Kaip teigiama dokumentuose, NLTK pateikia daugybę įvairių įrankių darbui su tekstu: „klasifikavimas, ženklinimas, šalinimas, žymėjimas, analizavimas ir semantinis argumentavimas“. Jis taip pat gali dirbti su kai kuriais trečiųjų šalių įrankiais, kad pagerintų jo funkcionalumą.

Atminkite, kad NLTK sukūrė akademinių tyrimų auditorija. Jis nebuvo sukurtas tiekti NLP modelius gamybos aplinkoje. Dokumentacija taip pat yra negausi; net „how-tos“ yra plonos. Be to, nėra 64 bitų dvejetainio; norėdami jį naudoti, turėsite įdiegti 32 bitų „Python“ leidimą. Galiausiai, NLTK taip pat nėra greičiausia biblioteka, tačiau ją galima paspartinti lygiagrečiai apdorojant.

Jei esate pasiryžęs pasinaudoti tuo, kas yra NLTK, galite pradėti nuo „TextBlob“ (aptariama toliau).

Raštas

Jei viskas, ką jums reikia padaryti, tai iškrapštyti populiarią svetainę ir išanalizuoti tai, ką radote, pasiekti „Pattern“. Ši natūralios kalbos apdorojimo biblioteka yra kur kas mažesnė ir siauresnė nei kitos čia aptariamos bibliotekos, tačiau tai taip pat reiškia, kad ji orientuota tikrai gerai atlikti vieną bendrą darbą.

Šablone yra integruotų įtaisų, skirtų daugybei populiarių žiniatinklio paslaugų ir šaltinių („Google“, „Wikipedia“, „Twitter“, „Facebook“, bendrųjų RSS ir kt.), Kurie visi yra prieinami kaip „Python“ moduliai (pvz., iš model.web importuoti „Twitter“). Jums nereikia iš naujo išrasti ratų, kad gautumėte duomenis iš tų svetainių su visomis jų individualiomis savybėmis. Tada galite atlikti įvairias įprastas NLP operacijas su duomenimis, pavyzdžiui, nuotaikos analizę.

„Pattern“ atskleidžia kai kuriuos savo žemesnio lygio funkcionalumus, leidžiančius tiesiogiai naudoti NLP funkcijas, „n-gram“ paiešką, vektorius ir grafikus, jei norite. Jame taip pat yra įmontuota pagalbinė biblioteka darbui su įprastomis duomenų bazėmis („MySQL“, „SQLite“ ir „MongoDB ateityje“), todėl bus lengva dirbti su lentelių duomenimis, saugomais iš ankstesnių sesijų arba gautais iš trečiųjų šalių.

Poliglotas

Kaip rodo pavadinimas, „Polyglot“ įgalina natūralios kalbos apdorojimo programas, kurios vienu metu tvarko kelias kalbas.

„Polyglot“ NLP funkcijos atkartoja tai, kas randama kitose NLP bibliotekose: tokenizavimas, pavadinto objekto atpažinimas, kalbos dalies žymėjimas, nuotaikos analizė, žodžių įterpimas ir kt. Kiekvienai iš šių operacijų „Polyglot“ pateikia modelius, kurie veikia su reikalingomis kalbomis.

Atkreipkite dėmesį, kad „Polyglot“ kalbos palaikymas įvairiose funkcijose labai skiriasi. Pavyzdžiui, tokenizavimo sistema palaiko beveik 200 kalbų (daugiausia dėl to, kad ji naudoja „Unicode“ teksto segmentavimo algoritmą), o nuotaikos analizė palaiko 136 kalbas, tačiau kalbos dalies žymėjimas palaiko tik 16.

PyNLPI

PyNLPI (tariama „ananasas“) turi tik pagrindinį natūralios kalbos apdorojimo funkcijų sąrašą, tačiau jame yra keletas tikrai naudingų duomenų keitimo ir duomenų apdorojimo funkcijų, skirtų NLP duomenų formatams.

Dauguma PyLLPI NLP funkcijų yra skirtos pagrindinėms užduotims, tokioms kaip tokenizavimas ar n-gramų ištraukimas, kartu su kai kuriomis NLP naudingomis statistikos funkcijomis, pavyzdžiui, Levenshtein atstumas tarp stygų ar Markovo grandinės. Kad būtų patogiau, šios funkcijos yra įdiegtos gryname „Python“, todėl vargu ar jos veiks produktyviai.

Tačiau PyNLPI puikiai tinka dirbti su kai kuriais egzotiškesniais duomenų tipais ir formatais, kurie atsirado NLP erdvėje. „PyNLPI“ gali skaityti ir apdoroti GIZA, „Moses ++“, „SoNaR“, „Taggerdata“ ir TiMBL duomenų formatus, o visą modulį skiria darbui su „FoLiA“, XML dokumento formatu, naudojamu komentuoti kalbos išteklius, pvz., Korpusus (teksto tekstai, naudojami vertimui ar kitai analizei) .

Norėsite pasiekti PyNLPI, kai susidursite su šiais duomenų tipais.

SPACY

„SpaCy“, kuris paliečia „Python“ patogumui, o „Cython“ - greičiui, yra apmokestinamas kaip „natūralios kalbos pramoninis stiprinimas“. Jo kūrėjai teigia, kad greičiu, modelio dydžiu ir tikslumu jis yra lyginamas su NLTK, „CoreNLP“ ir kitais konkurentais. Pagrindinis „SpaCy“ trūkumas yra palyginti naujas, todėl jis apima tik anglų kalbą ir keletą kitų (daugiausia Europos) kalbų. Tai reiškia, kad „SpaCy“ jau yra pasiekusi 2.2 versiją.

„SpaCy“ apima daugumą visų funkcijų, esančių tose konkuruojančiose sistemose: kalbos žymėjimas, priklausomybės analizavimas, įvardijamo objekto atpažinimas, ženklinimas, sakinių segmentavimas, taisyklėmis pagrįstos atitikties operacijos, žodžių vektoriai ir dar daugybė kitų. „SpaCy“ taip pat apima GPU operacijų optimizavimą - tiek skaičiavimams pagreitinti, tiek duomenims GPU kaupti, kad būtų išvengta kopijavimo.

Spacy dokumentai yra puikūs. Sąrankos vedlys sukuria komandinės eilutės diegimo veiksmus „Windows“, „Linux“ ir „MacOS“ bei skirtingoms „Python“ aplinkoms („pip“, „conda“ ir kt.). Kalbos modeliai įdiegiami kaip „Python“ paketai, todėl juos galima stebėti kaip programos priklausomybės sąrašo dalį.

„TextBlob“

„TextBlob“ yra patogi „Pattern“ ir NLTK bibliotekų sąsaja, apjungianti abi tas bibliotekas aukšto lygio, lengvai naudojamose sąsajose. Naudodami „TextBlob“ praleidžiate mažiau laiko kovodami su „Pattern“ ir „NLTK“ subtilybėmis ir daugiau laiko gaukite rezultatų.

„TextBlob“ išlygina kelią naudodamas vietinius „Python“ objektus ir sintaksę. Greito pradžios pavyzdžiai rodo, kaip apdorojami tekstai paprasčiausiai traktuojami kaip eilutės, o įprasti NLP metodai, tokie kaip kalbos dalies žymėjimas, yra būdai tiems eilutės objektams.

Kitas „TextBlob“ privalumas yra tai, kad jūs galite „pakelti gaubtą“ ir pakeisti jo funkcionalumą, kai vis labiau pasitikite savimi. Daugelį numatytųjų komponentų, pvz., Nuotaikos analizės sistemą ar žymeklį, galima pakeisti, jei reikia. Taip pat galite sukurti aukšto lygio objektus, apjungiančius komponentus - šį nuotaikos analizatorių, klasifikatorių ir kt. - ir pakartotinai juos naudoti su minimaliomis pastangomis. Tokiu būdu galite greitai ką nors prototipuoti naudodami „TextBlob“, tada vėliau patobulinti.

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