Ohjelmointi

8 suurta Python-kirjastoa luonnollisen kielen käsittelyyn

Luonnollista kielenkäsittelyä tai lyhyesti NLP: tä voidaan parhaiten kuvata ”tekoälyksi puhetta ja tekstiä varten”. Äänikomentojen, puheen ja tekstin kääntämisen, mielipiteiden analyysin, tekstin yhteenvedon ja monien muiden kielellisten sovellusten ja analyysien, luonnollisen kielenkäsittelyn taika on parantunut dramaattisesti syvällisen oppimisen avulla.

Python-kieli tarjoaa kätevän käyttöliittymän kaikille koneoppimisen muodoille, mukaan lukien NLP. Itse asiassa NLP-rikkauksien välillä on noloa valita Python-ekosysteemissä. Tässä artikkelissa tutkitaan kaikkia Pythonille saatavilla olevia NLP-kirjastoja - niiden käyttötapauksia, vahvuuksia, heikkouksia ja yleistä suosiota.

Huomaa, että jotkut näistä kirjastoista tarjoavat saman toiminnallisuuden korkeamman tason versioita, jotka muut ovat paljastaneet, mikä tekee toiminnoista helpompaa käyttää jonkin tarkkuuden tai suorituskyvyn kustannuksella. Haluat valita kirjaston, joka soveltuu hyvin sekä osaamistasoosi että projektin luonteeseen.

CoreNLP

CoreNLP-kirjasto - Stanfordin yliopiston tuote - rakennettiin tuotantovalmiiksi luonnollisen kielen prosessointiratkaisuksi, joka pystyy toimittamaan NLP-ennusteita ja -analyyseja mittakaavassa. CoreNLP on kirjoitettu Java-kielellä, mutta sille on saatavilla useita Python-paketteja ja sovellusliittymiä, mukaan lukien natiivi Python NLP -kirjasto nimeltä StanfordNLP.

CoreNLP sisältää laajan valikoiman kielityökaluja - kieliopin koodaus, nimetty kokonaisuuden tunnistus, jäsentäminen, mielipiteiden analysointi ja paljon muuta. Se on suunniteltu ihmisen kielen agnostikoksi, ja se tukee tällä hetkellä englannin lisäksi arabiaa, kiina, ranska, saksa ja espanja (venäjän, ruotsin ja tanskan tuella kolmansilta osapuolilta). CoreNLP sisältää myös web-API-palvelimen, kätevän tavan palvella ennusteita ilman liikaa lisätyötä.

Helpoin paikka aloittaa CoreNLP: n Python-kääreillä on StanfordNLP, Stanford NLP Groupin luoma referenssitoteutus. Hyvin dokumentoidun lisäksi StanfordNLP: tä ylläpidetään säännöllisesti; monia muita CoreNLP: n Python-kirjastoja ei ole päivitetty jonkin aikaa.

CoreNLP tukee myös NLTK: n käyttöä, joka on alla kuvattu tärkeä Python NLP -kirjasto. Versiosta 3.2.3 lähtien NLTK sisältää liitännät CoreNLP: hen jäsentimessä. Käytä vain oikeaa sovellusliittymää.

CoreNLP: n ilmeinen haittapuoli on, että tarvitset jonkin verran Java-tuntemusta saadaksesi sen käyttöön, mutta tämä ei ole mikään huolellinen asiakirjojen lukeminen. Toinen este voi olla CoreNLP: n lisensointi. Koko työkalupakki on lisensoitu GPLv3: n mukaan, mikä tarkoittaa, että muille omistamiesi ohjelmistojen käyttö edellyttää kaupallista lisenssiä.

Gensim

Gensim tekee vain kaksi asiaa, mutta tekee ne erittäin hyvin. Sen painopiste on tilastollinen semantiikka - asiakirjojen analysointi niiden rakenteen suhteen ja sitten muiden asiakirjojen pisteytys niiden samankaltaisuuden perusteella.

Gensim voi työskennellä erittäin suurten tekstikappaleiden kanssa suoratoistamalla asiakirjoja analysointimoottoriinsa ja suorittamalla niiden valvomaton oppiminen asteittain. Se voi luoda monen tyyppisiä malleja, joista jokainen sopii erilaisiin tilanteisiin: Word2Vec, Doc2Vec, FastText ja Latent Dirichlet Allocation.

Gensimin yksityiskohtainen dokumentaatio sisältää oppaita ja oppaita, jotka selittävät avainkäsitteet ja havainnollistavat niitä käytännön esimerkeillä. Yleisiä reseptejä on saatavana myös Gensim GitHub -repossa.

NLTK

Luonnollisen kielen työkalupakki tai lyhyesti NLTK on yksi tunnetuimmista ja tehokkaimmista Pythonin luonnollisen kielen prosessointikirjastoista. Monet corporat (tietojoukot) ja koulutetut mallit ovat käytettävissä käytettäväksi NLTK: n kanssa alusta alkaen, joten voit aloittaa kokeilun NLTK: n kanssa heti.

Kuten dokumentaatiosta käy ilmi, NLTK tarjoaa laajan valikoiman työkaluja tekstin käsittelemiseen: "luokittelu, tokenisaatio, stemming, koodaus, jäsentäminen ja semanttinen päättely". Se voi myös toimia joidenkin kolmansien osapuolten työkalujen kanssa sen toiminnallisuuden parantamiseksi.

Muista, että NLTK: n on luonut akateeminen tutkija. Sitä ei ole suunniteltu palvelemaan NLP-malleja tuotantoympäristössä. Asiakirjat ovat myös hieman harvinaisia; jopa ohjeet ovat ohuita. Ei ole myöskään 64-bittistä binaaria; sinun on asennettava 32-bittinen Python-versio, jotta voit käyttää sitä. Lopuksi, NLTK ei myöskään ole nopein kirjasto, mutta sitä voidaan nopeuttaa rinnakkaiskäsittelyllä.

Jos olet päättänyt hyödyntää NLTK: n sisältöä, voit aloittaa sen sijaan TextBlobilla (keskustellaan alla).

Kuvio

Jos sinun tarvitsee vain kaavata suosittu verkkosivusto ja analysoida löytämäsi, tavoita malli. Tämä luonnollisen kielen prosessointikirjasto on paljon pienempi ja kapeampi kuin muut tässä käsitellyt kirjastot, mutta se tarkoittaa myös, että se on keskittynyt yhden yhteisen työn tekemiseen todella hyvin.

Kuvion mukana tulee sisäänrakennettuja ominaisuuksia useiden suosittujen verkkopalvelujen ja lähteiden (Google, Wikipedia, Twitter, Facebook, yleinen RSS jne.) Kaapimiseksi, jotka kaikki ovat saatavilla Python-moduuleina (esim. osoitteesta pattern.web tuo Twitter). Sinun ei tarvitse keksiä uudestaan ​​pyöriä saadaksesi tietoja kyseisiltä sivustoilta, kaikilla niiden omilla oivalluksilla. Tämän jälkeen voit suorittaa datalle useita yleisiä NLP-toimintoja, kuten mielipiteiden analyysin.

Kuvio paljastaa osan alemman tason toiminnallisuudestaan, jolloin voit käyttää NLP-toimintoja, n-gramman hakua, vektoreita ja kaavioita suoraan, jos haluat. Siinä on myös sisäänrakennettu auttajakirjasto työskentelemään yhteisten tietokantojen kanssa (MySQL, SQLite ja MongoDB tulevaisuudessa), mikä helpottaa työskentelyä taulukkotietojen kanssa, jotka on tallennettu edellisistä istunnoista tai saatu kolmansilta osapuolilta.

Polyglotti

Polyglot, kuten nimestä voi päätellä, mahdollistaa luonnollisen kielen käsittelysovellukset, jotka käsittelevät useita kieliä kerralla.

Polyglotin NLP-toiminnot toistavat muiden NLP-kirjastojen löydöksiä: tokenisaatio, nimetty kokonaisuuden tunnistus, puheen puheen merkitseminen, mielipiteiden analyysi, sanojen upotukset jne. Polyglot tarjoaa kullekin näistä toiminnoista malleja, jotka toimivat tarvittavien kielten kanssa.

Huomaa, että Polyglotin kielituki vaihtelee suuresti ominaisuuksista toiseen. Esimerkiksi tokenointijärjestelmä tukee lähes 200 kieltä (lähinnä siksi, että se käyttää Unicode-tekstisegmentointialgoritmia), ja mielipiteiden analyysi tukee 136 kieltä, mutta puheosan koodaus tukee vain 16: ta.

PyNLPI

PyNLPI: llä (lausutaan "ananas") on vain luonnollinen kielenkäsittelytoimintojen perusluettelo, mutta sillä on joitain todella hyödyllisiä tiedonmuunnos- ja prosessointitoimintoja NLP-datamuotoihin.

Suurin osa PyNLPI: n NLP-toiminnoista on tarkoitettu perustyöhön, kuten tokenisaatio tai n-gramman poiminta, sekä joitain NLP: ssä hyödyllisiä tilastollisia toimintoja, kuten Levenshtein-merkkijonojen välinen etäisyys tai Markov-ketjut. Nämä toiminnot on toteutettu puhtaassa Pythonissa mukavuuden vuoksi, joten niillä ei todennäköisesti ole tuotantotason suorituskykyä.

Mutta PyNLPI loistaa työskennellessä joidenkin eksoottisempien tietotyyppien ja -muotojen kanssa, jotka ovat syntyneet NLP-tilaan. PyNLPI pystyy lukemaan ja käsittelemään GIZA-, Moses ++-, SoNaR-, Taggerdata- ja TiMBL-tiedostomuotoja ja omistamaan koko moduulin työskentelemään FoLiA: n kanssa, XML-dokumenttimuodon kanssa, jota käytetään merkitsemään kieliresursseja, kuten ruumiita (käännöksessä tai muussa analyysissä käytettyjä tekstirakenteita). .

Haluat tavoittaa PyNLPI: n aina, kun olet tekemisissä kyseisten tietotyyppien kanssa.

Kylpylä

SpaCy, joka hyödyntää Pythonia mukavuuden ja Cythonin nopeuden puolesta, laskutetaan "teollisen vahvuuden luonnollisena kielenkäsittelynä". Sen luojat väittävät, että se vertaa suotuisasti NLTK: ta, CoreNLP: tä ja muita kilpailijoita nopeuden, mallin koon ja tarkkuuden suhteen. SpaCyn tärkein haittapuoli on, että se on suhteellisen uusi, joten se kattaa vain englannin ja muutamia muita (pääasiassa eurooppalaisia) kieliä. Tästä huolimatta SpaCy on jo saavuttanut version 2.2 tämän kirjoituksen jälkeen.

SpaCy sisältää suurimman osan kaikista kilpailevista kehyksistä löytyvistä ominaisuuksista: puheen merkitseminen, riippuvuuden jäsentäminen, nimetty kokonaisuuden tunnistus, tokenisaatio, lauseiden segmentointi, sääntöihin perustuvat vastaavuustoiminnot, sanavektorit ja paljon muuta. SpaCy sisältää myös optimointeja GPU-toiminnoille - sekä laskennan nopeuttamiseksi että tietojen tallentamiseksi GPU: lle kopioinnin välttämiseksi.

Spacyn dokumentaatio on erinomaista. Ohjattu asennustoiminto luo komentorivin asennustoiminnot myös Windowsille, Linuxille ja macOS: lle sekä erilaisille Python-ympäristöille (pip, conda jne.). Kielimallit asennetaan Python-paketteina, joten niitä voidaan seurata osana sovelluksen riippuvuusluetteloa.

Tekstilohko

TextBlob on ystävällinen käyttöliittymä Pattern- ja NLTK-kirjastoille, käärimällä molemmat kirjastot korkean tason helppokäyttöisiin rajapintoihin. TextBlobilla vietät vähemmän aikaa kamppailemalla Patternin ja NLTK: n monimutkaisuuksien kanssa ja enemmän aikaa saadaksesi tuloksia.

TextBlob tasoittaa tietä hyödyntämällä alkuperäisiä Python-objekteja ja syntaksia. Pikakäynnistysesimerkit osoittavat, miten käsiteltäviä tekstejä käsitellään yksinkertaisesti merkkijonoina, ja tavalliset NLP-menetelmät, kuten puheen puheen merkitseminen, ovat käytettävissä menetelminä näille merkkijono-objekteille.

Toinen TextBlobin etu on, että voit "nostaa konepeltiä" ja muuttaa sen toimivuutta kasvattaessasi itsevarmuutta. Monet oletuskomponentit, kuten mielipiteiden analysointijärjestelmä tai tokenizer, voidaan vaihtaa tarvittaessa. Voit myös luoda korkean tason objekteja, jotka yhdistävät komponentit - tämän tunteen analysaattorin, luokittelijan jne. - ja käyttää niitä uudelleen pienellä vaivalla. Tällä tavoin voit prototyypittää jotain nopeasti TextBlobilla ja tarkentaa sitä myöhemmin.

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