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).
Antworten:
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 inpython
:(Weitere Informationen finden Sie unter https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search )
Denn es
Java
gibt 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 learning
Werkzeuge, die Sie inNLP
Pipelines integrieren können.Es gibt eine ganze Reihe in
Python
undJava
, 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:
quelle
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.
quelle