Java o Python per l'elaborazione del linguaggio naturale [chiuso]


112

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

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

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

aggiornato

Quello che voglio fare è estrarre informazioni utili sul prodotto da dati non strutturati (ad esempio, gli utenti fanno diverse forme di pubblicità su cellulari o laptop con una lingua inglese non molto standard)


47
Odio che questo tipo di domande non siano benvenute qui su SO. Penso che l'intento fosse quello di prevenire le guerre sante, ma questo contribuisce al contenuto IMO.
L0j1k

2
Se fosse formulato per dire "Quali sono le principali librerie NLP Java e Python e i loro punti di forza?" forse questo lo risolve? La risposta cambia nel tempo, ma trovo molto utili anche domande come questa.
Scott Smith

5
Vorrei anche che questo tipo di domande venissero accolte con favore su SO. Recentemente ho provato a esaminare i punti di forza della PNL in Python vs R, ed è stato immediatamente abbattuto. Non bueno per chi cerca di inquadrare i propri progetti nella lingua giusta.
Ksofiac

Risposte:


133

Java vs Python per NLP è una preferenza o una necessità. A seconda dell'azienda / dei progetti, dovrai utilizzare l'uno o l'altro e spesso non c'è molta scelta a meno che tu non stia guidando un progetto.

Oltre a NLTK(www.nltk.org), in realtà ci sono altre librerie per l'elaborazione del testo in python:

(per ulteriori informazioni, vedere https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search )

Perché Javace ne sono tonnellate di altri, ma ecco un altro elenco:

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

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

Se sei incerto, qual è la lingua da scegliere per la PNL, personalmente dico "qualsiasi lingua che ti fornirà l'analisi / l'output desiderato", vedi Quale lingua o strumenti imparare per l'elaborazione del linguaggio naturale?

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

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


Oltre agli strumenti di elaborazione del linguaggio, avresti davvero bisogno di machine learningstrumenti in cui incorporareNLP pipeline.

C'è un'intera gamma in PythoneJava , e ancora una volta dipende dalle preferenze e dal fatto che le librerie siano abbastanza user-friendly:

Librerie di machine learning in python:

(per ulteriori informazioni, vedere https://pypi.python.org/pypi?%3Aaction=search&term=machine+learning&submit=search )


Con il recente (2015) tsunami del deep learning nella PNL , forse potresti prendere in considerazione: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

Eviterò di elencare gli strumenti di deep learning per non favoritismo / neutralità.


Altre domande su Stackoverflow che richiedevano anche strumenti NLP / ML:


1
Grazie per aver fornito molte informazioni sugli strumenti di PNL e ML
Jin Ling

42

La domanda è molto aperta. Detto questo, piuttosto che sceglierne uno, di seguito è riportato un confronto a seconda della lingua che vorresti usare (poiché ci sono buone librerie disponibili in entrambe le lingue).

Pitone

In termini di Python, il primo posto che dovresti guardare è il 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 di facile utilizzo a oltre 50 corpora e risorse lessicali come WordNet, insieme a una suite di librerie di elaborazione del testo per classificazione, tokenizzazione, stemming, tagging, analisi e ragionamento semantico.

C'è anche del codice eccellente che puoi cercare che ha avuto origine dal progetto Natural Language Toolkit di Google basato su Python. Puoi trovare un collegamento a quel codice qui su GitHub .

Giava

Il primo posto in cui cercare sarebbe il Natural Language Processing Group di Stanford . Tutto il software distribuito è 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, file jar, un'API Java e codice sorgente.

Un'altra ottima opzione che vedi 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.


9
Risposta fantastica. Non capisco davvero perché questo tipo di domande sia guardato dall'alto in basso. +1
L0j1k

8
Sono completamente d'accordo. La domanda che è stata posta è generale. Detto questo, questi sono esattamente i tipi di domande che spesso mi trovo ad affrontare, in particolare quando sono nuovo in un'area.
Nathaniel Payne

1
In termini di librerie e strumenti basati su Java, un altro fantastico che potresti guardare è LingPipe. alias-i.com/lingpipe
Nathaniel Payne

2
@NathanielPayne: grazie mille per i tuoi suggerimenti. Questo mi dà una guida per iniziare la PNL.
Jin Ling
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.