Traitement du langage naturel
Question est peut-être ( environ 100%) subjectif, mais j'ai besoin de conseils. Quel est le meilleur langage pour le traitement de la langue naturelle ? Je sais que Java et C++, mais il est plus simple de le faire. Pour être plus précis, j'ai besoin de faire des textes de beaucoup de sites et d'obtenir des informations.
- La question n'est pas "quelle langue est mieux pour la PNL", mais "quelle bibliothèque en C++ ou en Java est plus adapté à mon projet". Donc, nouvelle question se pose: quelle est la tâche que vous souhaitez résoudre, c'est à dire quelles informations vont obtenir à partir de sites?
- La PNL est l'un des plus compliqué/impliqués moderne de problèmes informatiques, et vous vous demandez si il ya un moyen facile de faire cela? Eh bien, pourquoi pensez-vous qu'il est fait le " dur " de la sorte?
- J'ai besoin de trouver des informations sur les produits sur les sites, les prix, les spécifications et ainsi de suite, de boutiques en ligne. J'ai demandé parce que certains amis me suggérer Python et Clojure.
- voir stackoverflow.com/questions/22904025/...
Vous devez vous connecter pour publier un commentaire.
Comme je l'ai dit dans les commentaires, la question n'est pas sur un langue, mais sur adapté bibliothèque. Et il y a beaucoup de La PNL bibliothèques en Java et en C++. Je crois que vous devez inspecter certains d'entre eux (dans les deux langues) et puis, quand vous saurez que l'abondance de bibliothèques, de créer une sorte de "gros plan", comment mettre en œuvre votre tâche. Donc, ici, je vais juste vous donner quelques liens avec une brève explication de ce qui est quoi.
Java
PORTE - c'est exactement ce que son nom signifie - Architecture Générale de Traitement de Texte. Application à la PORTE est un pipeline. Vous mettez le traitement du langage des ressources comme des générateurs de jetons, POS-taggeurs, les analyseurs morphologiques, etc. sur et exécuter le processus. Le résultat est représenté comme un ensemble de annotations - les méta-informations, attaché à la paix de texte (par exemple, un jeton). En plus d'un bon nombre de les plugins (y compris les plugins d'intégration avec d'autres ressources PNL comme WordNet ou Stanford Parser), il a de nombreux dictionnaires prédéfinis (villes, noms, etc.) et de son propre regex comme langue JAPE. La PORTE est livré avec son propre IDE (PORTE Développeur), où vous pouvez essayer votre pipeline de l'installation, puis de l'enregistrer et charger à partir du code Java.
UIMA - ou de l'Information non structurée de Gestion des Applications. Il est très similaire à la PORTE en termes d'architecture. Il représente également un pipeline et produit un ensemble d'annotations. Comme la PORTE, il a visual IDE, où vous pouvez essayer votre future application. La différence est que UIMA concerne principalement l'extraction d'information, tandis que la PORTE effectue de traitement de texte, sans prise en compte explicite de son but. Aussi UIMA est livré avec le REPOS simple serveur.
OpenNLP - ils s'appellent eux-mêmes de l'organisation du centre pour les projets open source sur la PNL, et c'est la définition la plus appropriée. Direction principale du développement est d'utiliser des algorithmes d'apprentissage automatique pour la plus générale, la PNL tâches comme la partie du discours de marquage, la reconnaissance des entités nommées, la résolution de coréférence et ainsi de suite. Il dispose également d'une bonne intégration avec UIMA, de sorte que ses outils sont également disponibles.
Stanford de la PNL - probablement le meilleur choix pour les ingénieurs et les chercheurs avec la PNL et ML connaissances. À la différence des bibliothèques comme la PORTE et UIMA, il n'a pas pour objectif de fournir autant d' outils que possible, mais à la place se concentre sur idiomatiques modèles. E. g. vous n'avez pas complet dictionnaires, mais vous pouvez vous entraîner algorithme probabiliste pour la créer! En plus de ses CoreNLP de composants, qui fournit les plus largement utilisés des outils comme la segmentation, POS tagging, TNS, etc., il a plusieurs très intéressante sous-projets. E. g. leur La dépendance cadre vous permet d'extraire complète de la structure de la phrase. Qui est, vous pouvez, par exemple, permet d'extraire facilement les informations sur le sujet et d'objet d'un verbe en question, ce qui est beaucoup plus difficile en utilisant d'autres outils de TALN.
C++
UIMA - oui, il y a complète des implémentations de Java et en C++.
Stanford Parser - certains Stanford projets seulement en Java, d'autres uniquement en C++, et certains d'entre eux sont disponibles dans les deux langues. Vous pouvez trouver beaucoup d'entre eux ici.
Api
Un certain nombre d'Api de service web effectuer spécifiques de traitement du langage, y compris:
L'alchimie de l'API - l'identification de la langue, la reconnaissance des entités nommées, l'analyse des sentiments et beaucoup plus! Jetez un oeil à leur page principale - c'est tout à fait auto-descriptif.
OpenCalais - ce service tente de construire géant graphique de tout. Vous transmettre une URL de la page web et il enrichit cette page de texte avec trouvé entités, ainsi que les relations entre eux. Par exemple, vous faire passer une page avec "Steve Jobs" et il retourne "Apple Inc." (grosso modo) en collaboration avec la probabilité que ce soit le même Steve Jobs.
Autres recommandations
Et oui, vous devriez certainement jeter un oeil à Python NLTK. Il n'est pas seulement un puissant et facile à utiliser la PNL de la bibliothèque, mais aussi une partie de l'excellente scientifique de la pile créé par une communauté amicale.
Mise à jour (2017-11-15): 7 ans plus tard, il y a encore plus impressionnant, les outils, les frais des algorithmes et des tâches intéressantes. Une description détaillée peut être trouvée ici:
https://tomassetti.me/guide-natural-language-processing/
Python et NLTK
ScalaNLP, qui est un Traitement de la Langue Naturelle bibliothèque écrite en Scala, semble approprié pour votre travail.
Je recommanderais Python et NLTK.
Quelques conseils et des notes que j'pouvez déterminer à partir de mon expérience de son utilisation:
Si l'apprentissage d'un nouveau langage de programmation est un obstacle, vous pouvez vérifier openNLP pour Java http://incubator.apache.org/opennlp/