web-dev-qa-db-fra.com

Java ou Python pour le traitement en langage naturel

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

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

Mais si je dois faire un traitement de texte ou une extraction d’informations à partir de données non structurées (texte anglais brut et simplement formé) pour obtenir des informations utiles, quelle est la meilleure option? Java ou Python? Une bibliothèque appropriée?

Mise à jour

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

110
Jin Ling

Java vs Python pour la PNL est une préférence ou une nécessité. En fonction de la société/des projets, vous devrez utiliser l’un ou l’autre et, souvent, vous n’avez guère le choix, sauf si vous dirigez un projet.

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

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

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

Ceci est une comparaison intéressante 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 avez des doutes sur le langage à utiliser pour la PNL, personnellement, je dis "n'importe quel langage qui vous donnera l'analyse/le résultat souhaité", voir Quel langage ou outils à apprendre pour le traitement du langage naturel?

Voici une jolie récente (2017) des outils de la PNL: https://github.com/alvations/awesome-community-cured-nlp

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


Outre les outils de traitement de la langue, il vous faudrait des outils machine learning à incorporer dans les pipelines NLP.

Il y a toute une gamme dans Python et Java, et encore une fois, cela dépend des préférences et de la facilité d'utilisation des bibliothèques:

Bibliothèques d'apprentissage automatique en python:

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


Avec le récent (2015) tsunami d'apprentissage en profondeur dans la PNL , vous pourriez éventuellement envisager: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

J'éviterai d'énumérer des outils d'apprentissage en profondeur tirés du non-favoritisme/neutralité.


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

131
alvas

La question est très ouverte. Cela dit, plutôt que d’en choisir une, voici une comparaison en fonction de la langue que vous souhaitez utiliser (car de bonnes bibliothèques sont 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 Python permettant de travailler avec des données en langage humain. Il fournit des interfaces conviviales pour plus de 50 ressources de corpus et lexicales telles que WordNet. , ainsi qu’une suite de bibliothèques de traitement de texte pour la classification, la création de jetons, l’acquisition, l’affichage, le balisage, l’analyse et le raisonnement sémantique.

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

Java

Le premier endroit à regarder serait 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 requièrent Oracle Java 6+ ou OpenJDK 7+. Les packages de distribution incluent des composants pour l’appel de ligne de commande, des fichiers jar, une Java et une source code.

Une autre bonne option que vous voyez dans beaucoup d'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 classification, de règles d'association et de visualisation des données. également bien adapté au développement de nouveaux schémas d’apprentissage automatique.

42
Nathaniel Payne