Java ou Python pour le traitement du langage naturel [fermé]
j'aimerais 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 sur 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 un traitement de texte ou une extraction d'information à partir de données non structurées (juste du texte en anglais simple et libre) 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 renseignements utiles sur un produit à partir de données non structurées (p. ex. les utilisateurs font différentes formes de publicité sur les mobiles ou Ordinateurs portables avec la langue anglaise pas très standard)
2 réponses
Java vs Python pour NLP est une préférence ou une nécessité. Selon l'entreprise / les projets, vous aurez besoin d'utiliser l'un ou l'autre et souvent il n'y a pas beaucoup d'un choix à moins que vous dirigiez un projet.
autres que NLTK
(www.nltk.org), il existe en fait d'autres bibliothèques pour le traitement de texte dans python
:
- Textlob : http://textblob.readthedocs.org/en/dev/
- Gensim : http://radimrehurek.com/gensim/
- Pattern : http://www.clips.ua.ac.be/pattern
- Spacy :: http://spacy.io
- Orange : http://orange.biolab.si/features/
- Pineapple : https://github.com/proycon/pynlpl
(pour plus d'informations, voir https://pypi.python.org/pypi?%3Aaction=search&term=natural+langue+traitement&submit=rechercher )
pour Java
, il y en a 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 wrappers pour d'autres langues, python inclus)
- CogComp NLP : https://github.com/CogComp/cogcomp-nlp
c'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 PORTE 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 certain, Quelle est la langue à choisir pour la NLP, personnellement je dis, "toute langue qui vous donnera l'analyse/sortie désirée", voir quelle langue ou quels outils apprendre pour le traitement du langage naturel?
Voici une assez récente (2017) d'outils NLP: https://github.com/alvations/awesome-community-curated-nlp
Une ancienne liste des outils de TALN (2013): http://web.archive.org/web/20130703190201/http://yauhenklimovich.wordpress.com/2013/05/20/tools-nlp
à L'exception des outils de traitement linguistique, vous auriez grandement besoin de 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 si les bibliothèques sont assez conviviales:
bibliothèques D'apprentissage Machine en python:
- Sklearn (Scikit-learn): http://scikit-learn.org/stable/
- lait : http://luispedro.org/software/milk
- Scipy : http://www.scipy.org/
- Theano : http://deeplearning.net/software/theano/
- PyML : http://pyml.sourceforge.net/
- pyBrain : http://pybrain.org /
- Graphlab créer (outil commercial mais Licence académique gratuite pour 1 an): https://dato.com/products/create/
(pour plus d'informations, voir https://pypi.python.org/pypi?%3Aaction=search&term=machine+l'apprentissage&submit=rechercher )
- Weka : http://www.cs.waikato.ac.nz/ml/weka/index.html
- Mallet : http://mallet.cs.umass.edu/
- Mahout : https://mahout.apache.org/
avec le récent (2015) Deep learning tsunami in NLP , peut-être que vous pourriez considérer: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software
je vais éviter d'énumérer des outils d'apprentissage en profondeur de non-favoritisme / neutralité.
autres questions sur L'écoulement des stocks qui demandaient aussi des outils NLP/ML:
- 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 de la Langue Naturelle en Java (PNL)
- Existe-t-il une bonne bibliothèque de traitement du langage naturel
- Simple Traitement de la Langue Naturelle de Démarrage pour Java
- quelles bibliothèques offrent des méthodes NLP de base ou avancées?
- les dernières bonnes langues et les livres pour le traitement du langage naturel, les bases
- (TNS) Entité, d'Extraction, de Reconnaissance avec des outils libres tout en se nourrissant de l'Index Lucene
- (Avec PHP) la PNL outils de programmation à l'aide de 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 une, voici une comparaison en fonction de la langue que vous souhaitez utiliser (puisqu'il y a 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 construire des programmes Python pour travailler avec les données du langage humain. Il fournit des interfaces faciles à utiliser pour plus de 50 ressources corpora et lexicales telles que WordNet, ainsi qu'une suite de bibliothèques de traitement de texte pour la classification, la tokenization, le stemming, le tagging, le parsing, et le raisonnement sémantique.
il y a aussi de l'excellent code que vous pouvez consulter et qui provient du projet D'outils en langage naturel de Google basé sur Python. Vous pouvez trouver un lien vers ce code ici sur GitHub .
Java
Le premier endroit à regarder serait Stanford Traitement du Langage Naturel 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 comprennent des composants pour l'invocation en ligne de commande, des fichiers jar, une API Java et du code source.
un autre grande option que vous voyez dans beaucoup d'environnements d'apprentissage machine 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 regroupement, les règles d'association, et la visualisation. Il est également bien adapté au développement de nouveaux systèmes d'apprentissage automatique.