software - Java o Python para procesamiento de lenguaje natural
nlp stanford framework (2)
Java vs Python para NLP es en gran medida una preferencia o necesidad. Dependiendo de la compañía / proyectos, necesitará usar uno u otro y, a menudo, no hay muchas opciones a menos que esté encabezando un proyecto.
Además de NLTK (www.nltk.org), en realidad hay otras bibliotecas para el procesamiento de texto en python
:
- TextBlob : http://textblob.readthedocs.org/en/dev/
- Gensim : http://radimrehurek.com/gensim/
- Patrón : http://www.clips.ua.ac.be/pattern
- Spacy :: http://spacy.io
- Naranja : http://orange.biolab.si/features/
- Pineapple : https://github.com/proycon/pynlpl
(para obtener más información, consulte https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search )
Para Java
, hay toneladas de otras, pero aquí hay otra lista:
- 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/ (viene con envoltorios para otros idiomas, incluido Python)
- CogComp NLP : https://github.com/CogComp/cogcomp-nlp
Esta es una buena comparación para el procesamiento de cadenas básicas, consulte http://nltk.googlecode.com/svn/trunk/doc/howto/nlp-python.html
Una comparación útil de GATE vs UIMA vs OpenNLP, consulte https://www.assembla.com/spaces/extraction-of-cost-data/wiki/Gate-vs-UIMA-vs-OpenNLP?version=4
Si no está seguro, cuál es el idioma para la PNL, personalmente le digo: "cualquier idioma que le proporcione el análisis / resultado deseado", consulte ¿Qué idioma o herramientas se deben aprender para el procesamiento del lenguaje natural?
Aquí hay una muy reciente (2017) de herramientas NLP: https://github.com/alvations/awesome-community-curated-nlp
Una lista anterior de herramientas de PNL (2013): http://web.archive.org/web/20130703190201/http://yauhenklimovich.wordpress.com/2013/05/20/tools-nlp
Además de las herramientas de procesamiento de lenguaje, necesitaría herramientas de machine learning
para incorporar en las tuberías de NLP
.
Existe un amplio rango en Python
y Java
, y una vez más depende de las preferencias y si las bibliotecas son lo suficientemente amigables para el usuario:
Bibliotecas de Machine Learning en python:
- Sklearn ( Scikit -learn): http://scikit-learn.org/stable/
- Leche : 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 Create (herramienta comercial pero licencia académica gratuita por 1 año): https://dato.com/products/create/
(para obtener más información, consulte https://pypi.python.org/pypi?%3Aaction=search&term=machine+learning&submit=search )
- Weka : http://www.cs.waikato.ac.nz/ml/weka/index.html
- Mallet : http://mallet.cs.umass.edu/
- Mahout : https://mahout.apache.org/
Con el reciente tsunami de aprendizaje profundo (2015) en NLP , posiblemente podría considerar: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software
Evitaré enumerar las herramientas de aprendizaje profundo por no favoritismo / neutralidad.
Otras preguntas sobre Stackoverflow que también solicitaron herramientas NLP / ML:
- Aprendizaje automático y procesamiento del lenguaje natural
- ¿Cuáles son buenos puntos de partida para alguien interesado en el procesamiento del lenguaje natural?
- Procesamiento natural del lenguaje
- Procesamiento de lenguaje natural en Java (NLP)
- ¿Hay una buena biblioteca de procesamiento de lenguaje natural?
- Inicio simple de procesamiento de lenguaje natural para Java
- ¿Qué bibliotecas ofrecen métodos PNL básicos o avanzados?
- Últimos buenos lenguajes y libros para el procesamiento del lenguaje natural, los conceptos básicos
- (Para NER) Extracción / reconocimiento de entidad con herramientas gratuitas mientras se alimenta el índice Lucene
- (Con PHP) Herramientas de programación NLP usando PHP?
- (Con Ruby) https://stackoverflow.com/questions/3776361/ruby-nlp-libraries
Me gustaría saber qué lenguaje de programación es mejor para el procesamiento del lenguaje natural. Java o Python ? He encontrado muchas preguntas y respuestas al respecto. Pero todavía estoy perdido al elegir cuál usar.
Y quiero saber qué biblioteca NLP usar para Java, ya que hay muchas bibliotecas (LingPipe, GATE, OpenNLP, StandfordNLP). Para Python, la mayoría de los programadores recomiendan NLTK.
Pero si tengo que hacer algo de procesamiento de texto o extracción de información a partir de datos no estructurados (solo texto en inglés sin formato) para obtener información útil, ¿cuál es la mejor opción? Java o Python? Biblioteca adecuada?
Actualizado
Lo que quiero hacer es extraer información útil del producto a partir de datos no estructurados (por ejemplo, los usuarios hacen diferentes formas de publicidad sobre teléfonos móviles o portátiles con un inglés no muy estándar)
La pregunta es muy abierta. Dicho esto, en lugar de elegir uno, a continuación se muestra una comparación según el idioma que desee utilizar (ya que hay buenas bibliotecas disponibles en ambos idiomas).
Pitón
En términos de Python, el primer lugar que debe considerar es el Python Natural Language Toolkit . Como señalan en su descripción, NLTK es una plataforma líder para construir programas de Python para trabajar con datos de lenguaje humano. Proporciona interfaces fáciles de usar a más de 50 recursos corporales y léxicos como WordNet, junto con un conjunto de bibliotecas de procesamiento de textos para clasificación, tokenización, derivación, etiquetado, análisis sintáctico y razonamiento semántico.
También hay algunos códigos excelentes que puede buscar originados en el proyecto de Google Native Language Toolkit basado en Python. Puede encontrar un enlace a ese código aquí en GitHub .
Java
El primer lugar para buscar sería el Grupo de procesamiento de lenguaje natural de Stanford. Todo el software que se distribuye allí está escrito en Java. Todas las distribuciones recientes requieren Oracle Java 6+ o OpenJDK 7+. Los paquetes de distribución incluyen componentes para la invocación de línea de comandos, archivos jar, una API de Java y un código fuente.
Otra gran opción que se ve en muchos entornos de aprendizaje automático aquí (opción general) es Weka . Weka es una colección de algoritmos de aprendizaje automático para tareas de minería de datos. Los algoritmos se pueden aplicar directamente a un conjunto de datos o llamar desde su propio código Java. Weka contiene herramientas para el preprocesamiento de datos, clasificación, regresión, clustering, reglas de asociación y visualización. También es adecuado para desarrollar nuevos esquemas de aprendizaje automático.