2014-04-07 4 views
89

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 diesbezüglich gefunden. Aber ich bin immer noch verloren bei der Auswahl welcher zu verwenden.Java oder Python für die Verarbeitung natürlicher Sprache

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

Aber wenn ich einige Textverarbeitung oder Informationsextraktion von unstrukturierten Daten (nur frei gebildet plain Englisch Text) tun soll, um einige nützliche Informationen zu erhalten, was ist die beste Option? Java oder Python? Passende Bibliothek?

Aktualisiert

Was ich will, ist zu tun, nützliche Produktinformationen zu extrahieren aus unstrukturierten Daten (zB Benutzer machen verschiedene Formen von Werbung über Handys oder Laptops mit nicht sehr Standardsprache Englisch)

+39

Ich hasse es, dass diese Art von Fragen nicht hier sind willkommen auf SO. Ich denke, die Absicht war, heilige Kriege zu verhindern, aber dies trägt zur inhaltlichen IMO bei. – L0j1k

+1

Wenn es sagen würde "Was sind die führenden Java und Python NLP-Bibliotheken und ihre relativen Stärken?" vielleicht löst das das? Die Antwort ändert sich im Laufe der Zeit, aber ich finde solche Fragen auch sehr nützlich. –

+3

Ich wünschte auch, diese Art von Fragen wurden auf SO begrüßt. Ich habe kürzlich versucht, 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

Antwort

37

Die Frage ist sehr offen. Das heißt, anstatt einen zu wählen, ist unten ein Vergleich abhängig von der Sprache, die Sie verwenden möchten (da es in beiden Sprachen gute Bibliotheken gibt).

Python

In Bezug auf die Python, der erste Ort, die Sie sehen sollten, ist die Python Natural Language Toolkit. Wie sie in ihrer Beschreibung bemerken, ist NLTK eine führende Plattform für die Erstellung von Python-Programmen für die Arbeit mit menschlichen Sprachdaten. Es bietet benutzerfreundliche Schnittstellen zu über 50 korpora- und lexikalischen Ressourcen wie WordNet sowie eine Reihe von Textverarbeitungsbibliotheken für Klassifizierung, Tokenisierung, Stammdaten, Tagging, Parsing und semantisches Denken.

Es gibt auch einen ausgezeichneten Code, den Sie nachschlagen können, der aus dem Natural Language Toolkit-Projekt von Google stammt, das auf Python basiert. Sie können hier einen Link zu diesem Code finden on GitHub.

Java

Der erste Platz wäre Stanford aussehen Natural Language Processing Group. Die gesamte Software, die dort vertrieben wird, ist in Java geschrieben. Alle neueren Distributionen erfordern Oracle Java 6+ oder OpenJDK 7+. Verteilungspakete enthalten Komponenten für den Aufruf von Befehlszeilen, JAR-Dateien, eine Java-API und Quellcode.

Eine weitere gute Option, die Sie hier in vielen Lernumgebungen sehen (allgemeine Option), ist Weka. Weka ist eine Sammlung von maschinellen Lernalgorithmen 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, Clustering, Assoziationsregeln und Visualisierung. Es ist auch gut geeignet, um neue Maschinenlernschemata zu entwickeln.

+5

Super Antwort. Ich verstehe wirklich nicht, warum diese Art von Fragen hier herabgesetzt wird. +1 – L0j1k

+7

Ich stimme voll und ganz zu. Die Frage, die gestellt wurde, ist allgemein. Das sind genau die Arten von Fragen, mit denen ich mich oft konfrontiert sehe, besonders wenn ich in einem Bereich neu bin. –

+1

In Bezug auf Java-basierte Bibliotheken und Tools, eine andere große, die Sie sich ansehen könnten, ist LingPipe. http://alias-i.com/lingpipe/ –

108

Java vs Python für NLP ist sehr eine Vorliebe oder Notwendigkeit. Je nach Unternehmen/Projekten müssen Sie das eine oder das andere verwenden und oft gibt es keine große Auswahl, es sei denn, Sie leiten ein Projekt.

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

(nähere Informationen siehe https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search)

Für Java, moment gibt es Tonnen von anderen, aber hier ist eine andere Liste:

Dies ist ein schöner Vergleich zum Basiskettenverarbeitung finden http://nltk.googlecode.com/svn/trunk/doc/howto/nlp-python.html

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

Wenn Sie unsicher sind, welche die Sprache für NLP gehen persönlich sage ich, „jede Sprache, die Sie die gewünschte Analyse/Ausgang geben“, Which language or tools to learn for natural language processing?

Hier ist ein schönes neues (2017) von NLP-Tools finden Sie unter: https://github.com/alvations/awesome-community-curated-nlp

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


Anders als Sprachverarbeitungstools, würden Sie sehr viel brauchen machine learning Werkzeuge in NLP Pipelines zu integrieren.

Es gibt eine ganze Reihe in Python und Java, und wieder ist es an Vorlieben und ob die Bibliotheken sind benutzerfreundlich genug:

Machine Learning Bibliotheken in Python:

(mehr siehe https://pypi.python.org/pypi?%3Aaction=search&term=machine+learning&submit=search)


Mit den jüngsten (2015) deep learning tsunami in NLP, betrachten Sie könnten möglicherweise: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

ich vermeiden, würde aus Nicht-Bevorzugung/Neutralität tief Lernmittel auflistet.


Andere Fragen Stackoverflow, der auch für NLP/ML-Tools gefragt:

+1

Vielen Dank für die vielen Informationen über NLP und ML-Tools –

Verwandte Themen