Le principali librerie Python per NLP

Se volete affrontare un progetto di ML in ambito NLP, usando il linguaggio Python potete far conto su queste librerie:

Questi pacchetti gestiscono un’ampia gamma di compiti quali part-of-speech (POS) tagging, sentiment analysis, document classification, topic modeling, e molti altri. Certo si possono trovare molte altre risorse in ambito NLP, ma queste librerie rappresentano dei pilastri solidi su cui costruire le vostre attività di language analysis.

Ti chiedi se le devi usare tutte?

La risposta è ovviamente NO, dipende da qual’è l’obiettivo del tuo progetto. Puoi tuttavia tener conto di:

  • NLTK è un ottimo ambiente per prendere confidenza con NLP e come strumento di ricerca. La sua struttura modulare lo rende ottimale per imparare ed esplorare i concetti chiave in ambito NLP, mentre risulta non adatto per progetti in ambiente di produzione.
  • TextBlob è costruito a partire da NLTK, ed è più facilmente accessibile. Questa libreria è ideale per applicazioni di prototipazione veloce o di produzione che non richiedono prestazioni altamente ottimizzate.
  • Stanford’s CoreNLP è una libreria Java con wrapper Python. Lo si trova utilizzato in molti sistemi di produzione esistenti a causa della sua velocità.
  • SpaCy è una nuova libreria NLP progettata per essere veloce, snella e produttiva. Non è ampiamente adottato, ma se stai costruendo una nuova applicazione, dovresti provarlo.
  • Gensim è la più comunemente usata per topic modeling e similarity detection. Non è una libreria NLP “general-purpose”, ma per i compiti per i quali è stata pensata ha delle ottime prestazioni.

NLTK

Non si può parlare di NLP in Python senza menzionare NLTK. È la più famosa libreria NLP di Python, e ha portato a incredibili scoperte sul campo. NLTK è responsabile di aver affrontato e risolto molti problemi di analisi del testo e per questo merita menzione. NLTK è anche popolare in ambito accademico e per la ricerca. Sul suo proprio sito web, NLTK sostiene di essere una “libreria incredibile per giocare con il linguaggio naturale”.

Purtroppo NLTK ha oltre 50 corpora e lessici, 9 stemmers e decine di algoritmi da scegliere. Si può definire un parco divertimenti per ricercatori in ambito accademico. Questo è anche uno dei principali difetti di NLTK. È pesante e non sempre facile da afferrare, ed ha una curva di apprendimento non ottimale. L’altro grosso difetto è che è lento e non pronto per applicazioni in ambito produzione.

Se vuoi approfondire

  • NLTK Book – Corso completo sull’elaborazione di linguaggio naturale in Python con NLTK.
  • Dive into NLTK – Tutorial dettagliato in 8 puntate sull’utilizzo di NLTK per l’elaborazione di testo.

TextBlob

TextBlob si appoggia sulla solida base di NLTK e integra un altro pacchetto chiamato Pattern. TextBlob rende semplice l’elaborazione del testo fornendo un’interfaccia intuitiva a NLTK. È un’aggiunta benvenuta ad una struttura già consolidata di librerie NLP di Python perché ha una curva di apprendimento dolce e vanta una sorprendente quantità di funzionalità. TextBlob è una libreria che rende facile e divertente fare analisi del testo. Molti ricercatori si appoggiano su TextBlob per la prima prototipazione dei loro progetti NLP.

Se vuoi approfondire

Stanford CoreNLP

Stanford CoreNLP è una suite di strumenti “production-ready” per la natural analysis. Comprende part-of-speech (POS) tagging, entity recognition, pattern learning, parsing e molto di più. CoreNLP è scritto in Java, non in Python. Puoi ottenere questo con i wrapper Python fatti dalla comunità. Molte organizzazioni utilizzano CoreNLP per implementazioni di produzione. È veloce, preciso e in grado di supportare diverse lingue principali.

Se vuoi approfondire

spaCy

SpaCy è il nuovo arrivato nell’arena e sta facendo “rumore”. Viene commercializzato come una libreria  Python dedicata a NLP di tipo “business-ready” orientata verso le prestazioni. SpaCy è minimale e piace perché non ti inonda con opzioni come NLTK. La sua filosofia è quella di presentare un algoritmo (il migliore) per ogni scopo. Non è necessario fare scelte e puoi concentrarti sull’essere produttivi.

E’ costruita su Cython, è risulta molto veloce. Le persone hanno chiamato spaCy “all’avanguardia”, ed è difficile non essere d’accordo. La sua principale debolezza è che attualmente supporta solo l’inglese, quindi se la vostra ricerca è in altre lingue questa libreria non fa per voi. spaCy è la più recente libreria nel campo NLP, quindi la sua comunità di supporto non è così grande come quelle delle altre librerie. Tuttavia, il suo approccio alla NLP è talmente convincente che potrebbe soppiantare NLTK.

Se stai creando una nuova applicazione o riorganizzando una vecchia (e hai solo bisogno di un supporto inglese), ti consiglio vivamente di provare spaCy.

Se vuoi approfondire

gensim

Come dicono gli anglosassoni “Last but not least”, c’è Gensim. Gensim non è per tutte le tipologie di progetti NLP, ma ciò che fa, lo fa al meglio. Gensim è una libreria ben ottimizzata per l’analisi in ambito: topic modeling e document similarity. Tra le librerie che ho citato è la più specializzata. Si rivela uno strumento prezioso da aggiungere al tuo repertorio. I suoi algoritmi di topic modeling, come la sua implementazione di Latent Dirichlet Allocation (LDA), sono i migliori sul mercato. Inoltre, è robusto, efficiente e scalabile. Inoltre, l’analisi di semantica sub-campo (o la modellazione di argomenti) è una delle aree più interessanti dell’elaborazione moderna della lingua naturale

.

Se vuoi approfondire

1 anno ago