Java oder Python für die Verarbeitung natürlicher Sprache [geschlossen]

112

Ich würde gerne wissen, welche Programmiersprache für die Verarbeitung natürlicher Sprache besser ist. Java oder Python ? Ich habe viele Fragen und Antworten dazu gefunden. Aber ich bin immer noch verloren in der Wahl, welche ich verwenden soll.

Und ich möchte wissen, welche NLP-Bibliothek für Java verwendet werden soll, da es viele Bibliotheken gibt (LingPipe, GATE, OpenNLP, StandfordNLP). Für Python empfehlen die meisten Programmierer NLTK.

Aber was ist die beste Option, wenn ich Textverarbeitung oder Informationsextraktion aus unstrukturierten Daten (nur frei geformter englischer Klartext) durchführen möchte , um nützliche Informationen zu erhalten? Java oder Python? Geeignete Bibliothek?

Aktualisiert

Was ich tun möchte, ist, nützliche Produktinformationen aus unstrukturierten Daten zu extrahieren (z. B. machen Benutzer verschiedene Formen der Werbung für Handys oder Laptops mit nicht sehr normaler englischer Sprache).

Jin Ling
quelle
47
Ich hasse es, dass solche Fragen hier auf SO nicht willkommen sind. Ich denke, die Absicht war es, heilige Kriege zu verhindern, aber dies trägt zum Inhalt der IMO bei.
L0j1k
2
Wenn es so formuliert wäre: "Was sind die führenden Java- und Python-NLP-Bibliotheken und ihre relativen Stärken?" Vielleicht löst das das Problem? Die Antwort ändert sich im Laufe der Zeit, aber ich finde auch Fragen wie diese sehr nützlich.
Scott Smith
5
Ich wünschte auch, diese Art von Fragen wären auf SO willkommen. Ich habe kürzlich versucht, die NLP-Stärken in Python vs R zu untersuchen, und es wurde sofort abgeschossen. Nicht bueno für diejenigen, die versuchen, ihre Projekte in der richtigen Sprache zu gestalten.
Ksofiac

Antworten:

133

Java vs Python für NLP ist eine Präferenz oder Notwendigkeit. Abhängig von der Firma / den Projekten müssen Sie die eine oder die andere verwenden, und oft gibt es keine große Auswahl, es sei denn, Sie leiten ein Projekt.

Anders als NLTK(www.nltk.org), gibt es tatsächlich andere Bibliotheken für die Textverarbeitung in python:

(Weitere Informationen finden Sie unter https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search )

Denn es Javagibt Tonnen von anderen, aber hier ist eine andere Liste:

Dies ist ein guter Vergleich für die grundlegende Zeichenfolgenverarbeitung, siehe http://nltk.googlecode.com/svn/trunk/doc/howto/nlp-python.html

Ein nützlicher Vergleich von GATE vs UIMA vs OpenNLP finden Sie unter https://www.assembla.com/spaces/extraction-of-cost-data/wiki/Gate-vs-UIMA-vs-OpenNLP?version=4

Wenn Sie sich nicht sicher sind, welche Sprache für NLP verwendet werden soll, sage ich persönlich: "Jede Sprache, die Ihnen die gewünschte Analyse / Ausgabe liefert". Weitere Informationen finden Sie unter Welche Sprache oder Tools für die Verarbeitung natürlicher Sprache?

Hier ist ein ziemlich aktuelles (2017) NLP-Tool: https://github.com/alvations/awesome-community-curated-nlp

Eine ältere Liste von NLP-Tools (2013): http://web.archive.org/web/20130703190201/http://yauhenklimovich.wordpress.com/2013/05/20/tools-nlp


Abgesehen von Sprachverarbeitungswerkzeugen benötigen Sie dringend machine learningWerkzeuge, die Sie in NLPPipelines integrieren können.

Es gibt eine ganze Reihe in Pythonund Java, und wieder hängt es von den Vorlieben ab und ob die Bibliotheken benutzerfreundlich genug sind:

Bibliotheken für maschinelles Lernen in Python:

(Weitere Informationen finden Sie unter https://pypi.python.org/pypi?%3Aaction=search&term=machine+learning&submit=search )


Mit dem jüngsten (2015) Deep-Learning-Tsunami in NLP könnten Sie möglicherweise Folgendes berücksichtigen: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

Ich werde es vermeiden, Deep-Learning-Tools aus Gründen der Nicht-Bevorzugung / Neutralität aufzulisten.


Andere Stackoverflow-Fragen, die auch nach NLP / ML-Tools fragten:

Alvas
quelle
1
Vielen Dank für viele Informationen über NLP- und ML-Tools
Jin Ling
42

Die Frage ist sehr offen. Anstatt eine auszuwählen, finden Sie unten einen Vergleich in Abhängigkeit von der Sprache, die Sie verwenden möchten (da in beiden Sprachen gute Bibliotheken verfügbar sind).

Python

In Bezug auf Python sollten Sie sich zunächst das Python Natural Language Toolkit ansehen . Wie sie in ihrer Beschreibung bemerken, ist NLTK eine führende Plattform zum Erstellen von Python-Programmen für die Arbeit mit Daten in menschlicher Sprache. Es bietet benutzerfreundliche Schnittstellen zu über 50 Korpora und lexikalischen Ressourcen wie WordNet sowie eine Reihe von Textverarbeitungsbibliotheken für Klassifizierung, Tokenisierung, Stemming, Tagging, Parsing und semantisches Denken.

Es gibt auch einen hervorragenden Code, den Sie nachschlagen können und der aus dem Python-basierten Google Natural Language Toolkit-Projekt stammt. Einen Link zu diesem Code finden Sie hier auf GitHub .

Java

Der erste Ort, an dem Sie nachsehen sollten, wäre Stanfords Natural Language Processing Group . Die gesamte dort verteilte Software ist in Java geschrieben. Für alle neueren Distributionen ist Oracle Java 6+ oder OpenJDK 7+ erforderlich. Verteilungspakete enthalten Komponenten für den Befehlszeilenaufruf, JAR-Dateien, eine Java-API und Quellcode.

Eine weitere großartige Option, die Sie in vielen maschinellen Lernumgebungen hier sehen (allgemeine Option), ist Weka . Weka ist eine Sammlung von Algorithmen für maschinelles Lernen für Data Mining-Aufgaben. Die Algorithmen können entweder direkt auf einen Datensatz angewendet oder aus Ihrem eigenen Java-Code aufgerufen werden. Weka enthält Tools zur Datenvorverarbeitung, Klassifizierung, Regression, Clusterbildung, Zuordnungsregeln und Visualisierung. Es eignet sich auch gut zur Entwicklung neuer maschineller Lernschemata.

Nathaniel Payne
quelle
9
Tolle Antwort. Ich verstehe wirklich nicht, warum diese Art von Fragen hier herabgeschaut werden. +1
L0j1k
8
Ich stimme vollkommen zu. Die gestellte Frage ist allgemein. Dies sind jedoch genau die Arten von Fragen, mit denen ich häufig konfrontiert bin, insbesondere wenn ich neu in einem Bereich bin.
Nathaniel Payne
1
In Bezug auf Java-basierte Bibliotheken und Tools ist LingPipe ein weiteres großartiges Beispiel. alias-i.com/lingpipe
Nathaniel Payne
2
@ NathanielPayne: Vielen Dank für Ihre Vorschläge. Das gibt mir eine Anleitung zum Starten von NLP.
Jin Ling