web-dev-qa-db-fra.com

NLTK vs Stanford NLP

J'ai récemment commencé à utiliser la boîte à outils NLTK pour créer quelques solutions à l'aide de Python.

J’entends beaucoup d’activités communautaires concernant l’utilisation de stanford NLP. Quelqu'un peut-il me dire quelle est la différence entre NLTK et Stanford NLP? Sont-ils 2 bibliothèques différentes? Je sais que NLTK possède une interface avec stanford NLP, mais est-ce que n'importe qui peut éclaircir quelques différences fondamentales ou même plus en détail.

Stanford NLP peut-il être utilisé avec Python?

16
RData

Quelqu'un peut-il me dire quelle est la différence entre NLTK et Stanford NLP? Sont-ils 2 bibliothèques différentes? Je sais que NLTK a une interface avec la PNL de Stanford, mais est-ce que n'importe qui peut éclaircir quelques différences fondamentales ou même plus en détail.

(Je suppose que vous voulez dire " Stanford CoreNLP _".)

Ce sont deux bibliothèques différentes.

  • Stanford CoreNLP est écrit en Java
  • NLTK est une bibliothèque Python

La principale différence fonctionnelle est que NLTK possède plusieurs versions ou interfaces avec d'autres versions d'outils NLP, tandis que Stanford CoreNLP ne dispose que de leur version. NLTK prend également en charge l’installation de projets Java tiers et inclut même instructions pour l’installation de packages de PNL de Stanford sur le wiki .

Les deux supportent bien l'anglais, mais si vous utilisez d'autres langues:

Cela dit, le choix "meilleur" dépendra de votre application spécifique et des performances requises (fonctionnalités que vous utilisez, langue, vocabulaire, vitesse souhaitée, etc.).

Est-ce que Stanford NLP peut être utilisé avec Python?

Oui, il existe un certain nombre d'interfaces et de packages permettant d'utiliser Stanford CoreNLP en Python (indépendant de NLTK).

24
user812786

Le choix dépendra de votre cas d'utilisation. NLTK est idéal pour le texte de pré-traitement et tokenizing. Il comprend également un bon tagueur POS. Standford Core NLP pour le tokenizing/le marquage POS est un peu excessif, car la PNL de Standford nécessite davantage de ressources.
Mais une différence fondamentale est que vous ne pouvez pas analyser les dépendances syntaxiques avec NLTK. Vous devez spécifier une grammaire pour ce qui peut être très fastidieux si le domaine de texte n'est pas restreint. Tandis que Standford NLP fournit un analyseur probabiliste pour le texte général en tant que modèle téléchargeable, ce qui est assez précis. Il a également construit en NER (reconnaissance d'entité nommée) et plus. Aussi, je recommanderai de jeter un oeil à Spacy , qui est écrit en python, facile à utiliser et beaucoup plus plus rapide que CoreNLP. 

3
Pradip Pramanick

J'ajouterais à cette réponse que si vous souhaitez analyser des événements de date/heure, StanfordCoreNLP contient SuTime, le meilleur analyseur de date/heure disponible. La prise en charge de textes arbitraires tels que "Lundi après-midi suivant" n’est présente dans aucun autre paquet. 

0
Pradeep Banavara