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)
Réponses:
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 danspython
:(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 learning
outils à intégrer dans lesNLP
pipelines.Il y a toute une gamme dans
Python
etJava
, 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:
la source
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.
la source