Java ou Python pour le traitement du langage naturel [fermé]

112

Je voudrais savoir quel langage de programmation est le meilleur pour le traitement du langage naturel. Java ou Python ? J'ai trouvé beaucoup de questions et de réponses à ce sujet. Mais je suis toujours perdu dans le choix de celui à utiliser.

Et je veux savoir quelle bibliothèque NLP utiliser pour Java car il existe de nombreuses bibliothèques (LingPipe, GATE, OpenNLP, StandfordNLP). Pour Python, la plupart des programmeurs recommandent NLTK.

Mais si je dois effectuer un traitement de texte ou une extraction d'informations à partir de données non structurées (juste du texte en anglais simple et gratuit) pour obtenir des informations utiles, quelle est la meilleure option? Java ou Python? Bibliothèque appropriée?

Actualisé

Ce que je veux faire, c'est extraire des informations utiles sur le produit à partir de données non structurées (par exemple, les utilisateurs font différentes formes de publicité sur les mobiles ou les ordinateurs portables avec une langue anglaise pas très standard)

Jin Ling
la source
47
Je déteste que ce genre de questions ne soit pas le bienvenu ici sur SO. Je pense que l'intention était d'empêcher les guerres saintes, mais cela contribue au contenu de l'OMI.
L0j1k
2
S'il était libellé comme suit: "Quelles sont les principales bibliothèques PNL Java et Python et leurs atouts relatifs?" peut-être que cela résout le problème? La réponse change avec le temps, mais je trouve aussi des questions comme celle-ci très utiles.
Scott Smith
5
Je souhaite également que ce type de questions soit le bienvenu sur SO. J'ai récemment essayé d'étudier les forces de la PNL dans Python vs R, et cela a été immédiatement abattu. Ce n'est pas fait pour ceux qui essaient de cadrer leurs projets dans la bonne langue.
Ksofiac

Réponses:

133

Java vs Python pour NLP est vraiment une préférence ou une nécessité. Selon l'entreprise / les projets, vous devrez utiliser l'un ou l'autre et souvent il n'y a pas beaucoup de choix à moins que vous ne dirigiez un projet.

Outre NLTK(www.nltk.org), il existe en fait d'autres bibliothèques pour le traitement de texte dans python:

(pour en savoir plus, voir https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search )

Car Java, il y en a des tonnes d'autres, mais voici une autre liste:

Ceci est une belle comparaison pour le traitement de base des chaînes, voir http://nltk.googlecode.com/svn/trunk/doc/howto/nlp-python.html

Une comparaison utile de GATE vs UIMA vs OpenNLP, voir https://www.assembla.com/spaces/extraction-of-cost-data/wiki/Gate-vs-UIMA-vs-OpenNLP?version=4

Si vous ne savez pas quelle langue utiliser pour la PNL, je dis personnellement "toute langue qui vous donnera l'analyse / le résultat souhaité", voir Quelle langue ou quels outils apprendre pour le traitement du langage naturel?

Voici un assez récent (2017) des outils de PNL: https://github.com/alvations/awesome-community-cured-nlp

Une ancienne liste d'outils PNL (2013): http://web.archive.org/web/20130703190201/http://yauhenklimovich.wordpress.com/2013/05/20/tools-nlp


Outre les outils de traitement du langage, vous auriez vraiment besoin d' machine learningoutils à intégrer dans les NLPpipelines.

Il y a toute une gamme dans Pythonet Java, et encore une fois, cela dépend de vos préférences et de la convivialité des bibliothèques:

Bibliothèques d'apprentissage automatique en python:

(pour en savoir plus, voir https://pypi.python.org/pypi?%3Aaction=search&term=machine+learning&submit=search )


Avec le récent tsunami d'apprentissage en profondeur (2015) en PNL , vous pourriez peut-être envisager: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

J'éviterai de lister les outils d'apprentissage profond par non-favoritisme / neutralité.


Autres questions Stackoverflow qui demandaient également des outils NLP / ML:

alvas
la source
1
Merci d'avoir donné beaucoup d'informations sur les outils PNL et ML
Jin Ling
42

La question est très ouverte. Cela dit, plutôt que d'en choisir un, vous trouverez ci-dessous une comparaison en fonction de la langue que vous souhaitez utiliser (car il existe de bonnes bibliothèques disponibles dans les deux langues).

Python

En termes de Python, le premier endroit que vous devriez regarder est le Python Natural Language Toolkit . Comme ils le notent dans leur description, NLTK est une plate-forme de premier plan pour la création de programmes Python pour travailler avec des données en langage humain. Il fournit des interfaces faciles à utiliser vers plus de 50 corpus et ressources lexicales telles que WordNet, ainsi qu'une suite de bibliothèques de traitement de texte pour la classification, la tokenisation, la recherche de racines, le marquage, l'analyse et le raisonnement sémantique.

Il existe également un excellent code que vous pouvez rechercher et qui provient du projet Natural Language Toolkit de Google basé sur Python. Vous pouvez trouver un lien vers ce code ici sur GitHub .

Java

Le premier endroit à regarder serait le groupe de traitement du langage naturel de Stanford . Tous les logiciels qui y sont distribués sont écrits en Java. Toutes les distributions récentes nécessitent Oracle Java 6+ ou OpenJDK 7+. Les packages de distribution incluent des composants pour l'appel de ligne de commande, des fichiers jar, une API Java et du code source.

Une autre excellente option que vous voyez dans de nombreux environnements d'apprentissage automatique ici (option générale) est Weka . Weka est une collection d'algorithmes d'apprentissage automatique pour les tâches d'exploration de données. Les algorithmes peuvent être appliqués directement à un ensemble de données ou appelés à partir de votre propre code Java. Weka contient des outils de prétraitement, de classification, de régression, de clustering, de règles d'association et de visualisation des données. Il est également bien adapté pour développer de nouveaux schémas d'apprentissage automatique.

Nathaniel Payne
la source
9
Réponse géniale. Je ne comprends vraiment pas pourquoi ce genre de questions est méprisé ici. +1
L0j1k
8
Je suis complètement d'accord. La question qui a été posée est générale. Cela dit, ce sont précisément les types de questions auxquelles je me trouve souvent confronté, en particulier lorsque je suis nouveau dans un domaine.
Nathaniel Payne
1
En termes de bibliothèques et d'outils basés sur Java, LingPipe est un autre excellent outil que vous pourriez examiner. alias-i.com/lingpipe
Nathaniel Payne
2
@NathanielPayne: Merci beaucoup pour vos suggestions. Cela me donne un guide pour démarrer la PNL.
Jin Ling