Java ou Python pour le traitement du langage Naturel [fermé]
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 réponses à ce sujet. Mais je suis toujours perdu dans le choix de l'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 du traitement de texte ou des informations extraction à partir dedonnées non structurées (juste du texte anglais simple formé gratuitement) pour obtenir des informations utiles, quelle est la meilleure option? Java ou Python? Bibliothèque appropriée?
Mise à Jour
Ce que je veux faire, c'est extraire des informations utiles sur les produits à 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)
2 answers
Java vs Python pour la PNL est 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 dirigiez un projet.
, Autres que NLTK
(www.nltk.org), il y a effectivement d'autres bibliothèques pour un traitement de texte dans python
:
- TextBlob: http://textblob.readthedocs.org/en/dev/
- Gensim: http://radimrehurek.com/gensim /
- Modèle: http://www.clips.ua.ac.be/pattern
- Spacy:: http://spacy.io
- Orange: http://orange.biolab.si/features/
- Ananas: https://github.com/proycon/pynlpl
(pour en savoir plus, 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:
- Freeling: http://nlp.lsi.upc.edu/freeling/
- OpenNLP: http://opennlp.apache.org/
- LingPipe: http://alias-i.com/lingpipe/
- Stanford CoreNLP: http://stanfordnlp.github.io/CoreNLP / (livré avec des wrappers pour d'autres langages, python inclus)
- PNL CogComp: https://github.com/CogComp/cogcomp-nlp
Ceci est une belle comparaison pour le traitement de chaîne de base, 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 n'êtes pas sûr, quelle est la langue à utiliser pour la PNL, personnellement, je dis: "toute langue qui vous donnera l'analyse/sortie souhaitée", voir Quelle langue ou quels outils apprendre pour le traitement du langage naturel?
Voici un assez récent (2017) des outils PNL: https://github.com/alvations/awesome-community-curated-nlp
Une liste plus ancienne de PNL outils (2013): http://web.archive.org/web/20130703190201/http://yauhenklimovich.wordpress.com/2013/05/20/tools-nlp
En dehors des outils de traitement du langage, vous auriez vraiment besoin machine learning
outils à intégrer dans les pipelines NLP
.
Il y a toute une gamme dans Python
et Java
, et encore une fois, c'est à la préférence et à la question de savoir si les bibliothèques sont suffisamment conviviales:
Bibliothèques d'apprentissage automatique dans python:
- Je ne sais pas si c'est le cas. http://scikit-learn.org/stable /
- Lait: http://luispedro.org/software/milk
- Scipy: http://www.scipy.org/
- Théano: http://deeplearning.net/software/theano/
- PyML: http://pyml.sourceforge.net/
- pyBrain: http://pybrain.org /
- Graphlab Create (Outil commercial mais licence académique gratuite pendant 1 an): https://dato.com/products/create /
(pour plus d'informations, voir https://pypi.python.org/pypi?%3Aaction=search&term=machine + apprentissage & soumettre = recherche)
- Weka: http://www.cs.waikato.ac.nz/ml/weka/index.html
- Maillet: http://mallet.cs.umass.edu /
- Mahout: https://mahout.apache.org/
Avec le récent (2015) tsunami d'apprentissage en profondeur dans la PNL, vous pourriez peut-être envisager: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software
J'éviterai d'énumérer les outils d'apprentissage en profondeur par non-favoritisme / neutralité.
Autres questions de Stackoverflow qui ont également demandé la PNL / ML outils:
- Apprentissage automatique et de Traitement du Langage Naturel
- Quels sont les bons points de départ pour quelqu'un qui s'intéresse au traitement du langage naturel?
- Traitement du langage naturel
- Traitement du langage naturel en Java (PNL)
- Existe-t-il une bonne bibliothèque de traitement du langage naturel
- Démarrage simple du traitement du langage Naturel pour Java
- Quoi les bibliothèques offrent des méthodes PNL de base ou avancées?
- Dernières bonnes langues et livres pour le traitement du langage naturel, les bases
- (Pour NER) Extraction/Reconnaissance d'entités avec des outils gratuits tout en alimentant l'index Lucene
- (Avec PHP) Outils de programmation PNL utilisant PHP?
- (Avec Ruby) https://stackoverflow.com/questions/3776361/ruby-nlp-libraries
La question est très ouverte. Cela dit, plutôt que d'en choisir un, voici 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 la Python Langage Naturel Toolkit. Comme ils le notent dans leur description, NLTK est une plate-forme leader pour la construction de programmes Python pour travailler avec des données de 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, le stemming, le tagging, l'analyse et le raisonnement sémantique.
Il y a aussi un excellent code que vous pouvez rechercher 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 Stanford Traitement de la Langue Naturelle le Groupe. 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 paquets de distribution incluent des composants pour l'invocation en 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 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 pour le prétraitement des données, la classification, la régression, le clustering, les règles d'association et la visualisation. Il est également bien adapté pour développer de nouveaux schémas d'apprentissage automatique.