webentwicklung-frage-antwort-db.com.de

NLTK gegen Stanford NLP

Ich habe vor kurzem mit dem NLTK-Toolkit begonnen, um wenige Lösungen mit Python zu erstellen.

Ich höre eine Menge Community-Aktivitäten in Bezug auf die Verwendung von Stanford NLP. Kann mir jemand sagen, was der Unterschied zwischen NLTK und Stanford NLP ist? Sind das zwei verschiedene Bibliotheken? Ich weiß, dass NLTK eine Schnittstelle zu stanford NLP hat, aber jeder kann ein paar grundlegende Unterschiede oder sogar mehr ins Detail bringen.

Kann stanford NLP mit Python verwendet werden?

16
RData

Kann mir jemand sagen, was der Unterschied zwischen NLTK und Stanford NLP ist? Sind das zwei verschiedene Bibliotheken? Ich weiß, dass NLTK über eine Schnittstelle zu Stanford NLP verfügt, aber jeder kann einige grundlegende Unterschiede oder sogar mehr ins Detail bringen.

(Ich gehe davon aus, dass Sie " Stanford CoreNLP " meinen.)

Sie sind zwei verschiedene Bibliotheken.

  • Stanford CoreNLP ist in Java geschrieben
  • NLTK ist eine Python-Bibliothek

Der Hauptfunktionsunterschied besteht darin, dass NLTK mehrere Versionen oder Schnittstellen zu anderen Versionen von NLP-Tools hat, während Stanford CoreNLP nur seine Version hat. NLTK unterstützt auch die Installation von Java-Projekten von Drittanbietern und enthält sogar Anweisungen zum Installieren einiger Stanford-NLP-Pakete im Wiki .

Beide haben gute Unterstützung für Englisch, wenn Sie jedoch mit anderen Sprachen zu tun haben:

Welches davon "am besten" ist, hängt von Ihrer spezifischen Anwendung und der erforderlichen Leistung ab (welche Funktionen Sie verwenden, Sprache, Vokabular, gewünschte Geschwindigkeit usw.).

Kann Stanford NLP mit Python verwendet werden?

Ja, es gibt eine Reihe von Schnittstellen und Paketen für die Verwendung von Stanford CoreNLP in Python (unabhängig von NLTK).

24
user812786

Es scheint, dass Sie neu bei NLP sind.

Ich habe kürzlich begonnen, das NLTK-Toolkit zu verwenden

Wenn Sie noch kein NLP-Neuling sind, ist es am besten, einfach anzufangen. Idealerweise würden Sie mit nltk beginnen. Ich bin relativ neu in der Verarbeitung natürlicher Sprache (einige Monate alt). Ich kann bestätigen, dass nltk für Anfänger besser ist, da es ein tolles und kostenloses Online-Buch hat , das dem Anfänger hilft, schnell zu lernen.

Wenn Sie sich wohl fühlen und tatsächlich ein Problem zu lösen haben, schauen Sie sich Stanford Core NLP an, um zu sehen, ob es besser ist, Ihr Problem zu lösen.

Wenn Sie sich an NLTK halten möchten, können Sie auch auf die Stanford CoreNLP-API unter [~ # ~] nltk [~ # ~] zugreifen.

Nun zu den Gemeinsamkeiten und Unterschieden:

Kann mir jemand sagen, was der Unterschied zwischen NLTK und Stanford NLP ist? Sind das 2 verschiedene Bibliotheken?

Beide bieten eine Verarbeitung in natürlicher Sprache. Einige der nützlichsten Teile von Stanford Core NLP sind der Part-of-Speech-Tagger, der Named-Entity-Recognizer, die Stimmungsanalyse und das Pattern-Learning.

Der genannte Entity Recognizer ist im Stanford Core NLP besser. Stanford Core NLP ist besser in grammatikalischen Funktionen wie dem Aufnehmen von Subjekten, Objekten und Vorhersagen (deshalb habe ich teilweise von nltk zu Stanford Core NLP gewechselt). Wie @ user812786 sagte, hat NLTK mehrere Schnittstellen zu anderen Versionen von NLP-Tools. NLTK ist auch besser zum Lernen von NLP. Wenn Sie mehrere Korpora verwenden müssen, verwenden Sie NLTK, da Sie leicht auf eine Vielzahl von Textkorpora und lexikalischen Ressourcen zugreifen können . Beide haben POS-Tagging und Stimmungsanalyse.

Kann Stanford NLP mit Python verwendet werden?

Ja absolut. Sie können StanfordNLP verwenden. Dabei handelt es sich um ein Python Paket zur Analyse der natürlichen Sprache, das das CoreNLP Java Paket aufrufen kann. Es gibt auch mehrere Python -Pakete, die den Stanford CoreNLP-Server verwenden

3
Tanya Gupta

Die Wahl hängt von Ihrem Anwendungsfall ab. NLTK eignet sich hervorragend für Vorverarbeitung von und tokenizing -Text. Es enthält auch einen guten POS - Tagger. Standford Core NLP für nur Tokenizing/POS-Tagging ist ein bisschen übertrieben, da Standford NLP mehr Ressourcen erfordert.
Ein grundlegender Unterschied ist jedoch, dass Sie syntaktische Abhängigkeiten nicht mit NLTK aus der Box analysieren können. Sie müssen eine Grammatik angeben, die sehr langwierig sein kann, wenn die Textdomäne nicht eingeschränkt ist. Während Standford NLP einen probabilistischen Parser für allgemeine Texte als herunterladbares Modell bietet, der ziemlich genau ist. Es hat auch NER (Named Entity Recognition) und mehr eingebaut. Ich würde auch empfehlen, einen Blick auf Spacy zu werfen, das in Python geschrieben ist, einfach zu bedienen und viel schneller ist als CoreNLP. 

3

Ich würde dieser Antwort hinzufügen, dass, wenn Sie Datum/Uhrzeit-Ereignisse analysieren möchten, StanfordCoreNLP SuTime enthält, was der beste verfügbare Datumszeit-Parser ist. Die Unterstützung für beliebige Texte wie "Nächster Montagnachmittag" ist in keinem anderen Paket enthalten. 

0

NLTK kann für die Lernphase verwendet werden, um einen natürlichen Sprachprozess von Grund auf zu erlernen und durchzuführen. Standford NLP bietet Ihnen ein hohes Maß an Flexibilität, um Aufgaben schnell und einfach zu erledigen.

Wenn Sie schnell und produktiv arbeiten möchten, können Sie sich für Standford NLP entscheiden.

0
Rahul Rawat