2014-04-07 14 views
89

Mi piacerebbe sapere quale linguaggio di programmazione è migliore per l'elaborazione del linguaggio naturale. Java o Python? Ho trovato molte domande e risposte riguardo a questo. Ma sono ancora perso nella scelta di quale usare.Java o Python per l'elaborazione del linguaggio naturale

E voglio sapere quale libreria NLP utilizzare per Java poiché ci sono molte librerie (LingPipe, GATE, OpenNLP, StandfordNLP). Per Python, la maggior parte dei programmatori consiglia NLTK.

Ma se devo effettuare qualche elaborazione di testo o estrazione di informazioni da dati non strutturati (solo testo inglese semplice formato libero) per ottenere alcune informazioni utili, qual è l'opzione migliore? Java o Python? Libreria adatta?

Aggiornato

Quello che voglio fare è quello di estrarre utili informazioni sui prodotti da dati non strutturati (utenti, come marca diverse forme di pubblicità su cellulari o computer portatili con non linguaggio molto inglese standard)

+39

Odio che questo tipo di domande non sono i benvenuti qui su SO. Penso che l'intento fosse prevenire le guerre sante, ma questo contribuisce al contenuto IMO. – L0j1k

+1

Se è stato formulato per dire "Quali sono le principali librerie NLP Java e Python e i relativi punti di forza?" forse questo lo risolve? La risposta cambia nel tempo, ma trovo anche molto utili queste domande. –

+3

Vorrei anche che questo tipo di domande fossero ben accette su SO. Recentemente ho provato a sondare i punti di forza NLP in Python vs R, ed è stato immediatamente abbattuto. Non bueno per coloro che cercano di inquadrare i loro progetti nella lingua giusta. – Ksofiac

risposta

37

La questione è molto aperto. Detto questo, piuttosto che sceglierne uno, di seguito è riportato un confronto a seconda della lingua che si desidera utilizzare (poiché esistono buone librerie disponibili in entrambe le lingue).

Python

In termini di Python, il primo posto che si dovrebbe guardare è la Python Natural Language Toolkit. Come notano nella loro descrizione, NLTK è una piattaforma leader per la creazione di programmi Python per lavorare con i dati del linguaggio umano. Fornisce interfacce facili da usare per oltre 50 corpora e risorse lessicali come WordNet, oltre a una suite di librerie di elaborazione del testo per la classificazione, la tokenizzazione, lo stemming, l'etichettatura, l'analisi e il ragionamento semantico.

C'è anche un codice eccellente che puoi cercare che è nato dal progetto di Google Natural Language Toolkit basato su Python. È possibile trovare un collegamento a questo codice qui on GitHub.

Java

Il primo posto dove guardare sarebbe Stanford Natural Language Processing Group. Tutto il software che viene distribuito lì è scritto in Java. Tutte le distribuzioni recenti richiedono Oracle Java 6+ o OpenJDK 7+. I pacchetti di distribuzione includono componenti per il richiamo della riga di comando, i file jar, un'API Java e il codice sorgente.

Un'altra grande opzione che si vede in molti ambienti di apprendimento automatico qui (opzione generale), è Weka. Weka è una raccolta di algoritmi di apprendimento automatico per attività di data mining. Gli algoritmi possono essere applicati direttamente a un set di dati o richiamati dal proprio codice Java. Weka contiene strumenti per la pre-elaborazione dei dati, la classificazione, la regressione, il clustering, le regole di associazione e la visualizzazione. È anche adatto per lo sviluppo di nuovi schemi di apprendimento automatico.

+5

Risposta stupenda. Non capisco davvero perché questo tipo di domande siano viste qui. +1 – L0j1k

+7

Sono completamente d'accordo. La domanda che è stata posta è generale. Detto questo, questi sono proprio i tipi di domande a cui mi trovo spesso di fronte, in particolare quando sono nuovo in un'area. –

+1

In termini di librerie e strumenti basati su Java, un altro grande che si potrebbe guardare è LingPipe. http://alias-i.com/lingpipe/ –

108

Java vs Python per NLP è una preferenza o una necessità. A seconda della compagnia/dei progetti, è necessario utilizzare l'uno o l'altro e spesso non c'è molta scelta a meno che non si stia dirigendo un progetto.

diverso da NLTK (www.nltk.org), in realtà vi sono altre librerie per l'elaborazione di testo in python:

(per di più, vedi https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search)

Per Java, ci sei tonnellate di altri, ma qui c'è un altro elenco:

Questo è un bel confronto per l'elaborazione di base stringa, vedere http://nltk.googlecode.com/svn/trunk/doc/howto/nlp-python.html

Un confronto utile di GATE vs UIMA vs OpenNLP, vedi https://www.assembla.com/spaces/extraction-of-cost-data/wiki/Gate-vs-UIMA-vs-OpenNLP?version=4

Se siete incerti, che è la lingua di andare per la PNL , personalmente dico, "tutte le lingue che vi darà l'analisi desiderata/uscita", vedi Which language or tools to learn for natural language processing?

Ecco un piuttosto recente (2017) di strumenti di PNL: https://github.com/alvations/awesome-community-curated-nlp

Un elenco precedente di strumenti di NLP (2013): http://web.archive.org/web/20130703190201/http://yauhenklimovich.wordpress.com/2013/05/20/tools-nlp


Oltre a strumenti di elaborazione del linguaggio, si avrebbe molto bisogno machine learning strumenti a integrare nella NLP condutture.

C'è tutta una serie di Python e Java, e ancora una volta tocca a preferenze e se le librerie sono abbastanza user-friendly:

librerie Machine Learning in pitone:

(per di più, vedi https://pypi.python.org/pypi?%3Aaction=search&term=machine+learning&submit=search)


.515.053.691,36321 milioni

Con la recente (2015) deep learning tsunami in NLP, forse si potrebbe prendere in considerazione: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

eviterò messa in vendita di strumenti di apprendimento profonde da non favoritismi/neutralità.


Altre domande StackOverflow che hanno chiesto anche per NLP strumenti/ML:

+1

Grazie per aver fornito molte informazioni sugli strumenti di PNL e ML –

Problemi correlati