Java o Python para procesamiento de lenguaje natural [cerrado]

112

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 debo procesar un texto o extraer información de datos no estructurados (solo texto en inglés sin formato libre) 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 móviles o portátiles con un idioma inglés no muy estándar)

Jin Ling
fuente
47
Odio que este tipo de preguntas no sean bien recibidas aquí en SO. Creo que la intención era evitar las guerras santas, pero esto contribuye al contenido de la OMI.
L0j1k
2
Si estuviera redactado para decir "¿Cuáles son las principales bibliotecas de Java y Python NLP y sus ventajas relativas?" tal vez eso lo resuelva? La respuesta cambia con el tiempo, pero también encuentro muy útiles preguntas como esta.
Scott Smith
5
También me gustaría que este tipo de preguntas fueran bien recibidas en SO. Recientemente intenté sondear las fortalezas de la PNL en Python vs R, y fue derribado de inmediato. No es bueno para aquellos que intentan enmarcar sus proyectos en el lenguaje correcto.
Ksofiac

Respuestas:

133

Java vs Python para PNL es una preferencia o una necesidad. Dependiendo de la empresa o los proyectos, deberá utilizar uno u otro y, a menudo, no hay muchas opciones a menos que esté dirigiendo un proyecto.

Aparte de NLTK(www.nltk.org), en realidad existen otras bibliotecas para el procesamiento de texto enpython :

(para obtener más información, consulte https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search )

Porque Javahay toneladas de otros, pero aquí hay otra lista:

Esta es una buena comparación para el procesamiento básico de cadenas, 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 de cuál es el idioma para la PNL, personalmente digo, "cualquier idioma que le proporcione el análisis / resultado deseado", consulte ¿Qué idioma o herramientas aprender para el procesamiento del lenguaje natural?

Aquí hay una herramienta de PNL bastante reciente (2017): https://github.com/alvations/awesome-community-curated-nlp

Una lista más antigua 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 mucho machine learningherramientas para incorporar en las NLPcanalizaciones.

Hay una amplia gama en Pythony Java, y una vez más, depende de la preferencia y si las bibliotecas son lo suficientemente fáciles de usar:

Bibliotecas de aprendizaje automático en python:

(para obtener más información, consulte https://pypi.python.org/pypi?%3Aaction=search&term=machine+learning&submit=search )


Con el reciente tsunami de aprendizaje profundo (2015) en PNL , 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 de Stackoverflow que también solicitaron herramientas de PNL / ML:

alvas
fuente
1
Gracias por brindar mucha información sobre las herramientas de PNL y ML
Jin Ling
42

La pregunta tiene un final muy abierto. Dicho esto, en lugar de elegir uno, a continuación se muestra una comparación según el idioma que le gustaría utilizar (ya que hay buenas bibliotecas disponibles en ambos idiomas).

Pitón

En términos de Python, el primer lugar que debe mirar es el kit de herramientas de lenguaje natural de Python . Como señalan en su descripción, NLTK es una plataforma líder para crear programas Python que funcionen con datos del lenguaje humano. Proporciona interfaces fáciles de usar para más de 50 corpus y recursos léxicos como WordNet, junto con un conjunto de bibliotecas de procesamiento de texto para clasificación, tokenización, derivación, etiquetado, análisis y razonamiento semántico.

También hay un código excelente que puede buscar que se originó en el proyecto Natural Language Toolkit de Google que está 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 del lenguaje natural de Stanford . Todo el software que se distribuye allí está escrito en Java. Todas las distribuciones recientes requieren Oracle Java 6+ u OpenJDK 7+. Los paquetes de distribución incluyen componentes para la invocación de la línea de comandos, archivos jar, una API de Java y código fuente.

Otra gran opción que ves 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 se pueden llamar desde su propio código Java. Weka contiene herramientas para el preprocesamiento, clasificación, regresión, agrupamiento, reglas de asociación y visualización de datos. También es adecuado para desarrollar nuevos esquemas de aprendizaje automático.

Nathaniel Payne
fuente
9
Respuesta impresionante. Realmente no entiendo por qué este tipo de preguntas se desprecian aquí. +1
L0j1k
8
Concuerdo completamente. La pregunta que se hizo es general. Dicho esto, estos son precisamente los tipos de preguntas que a menudo me encuentro enfrentando, particularmente cuando soy nuevo en un área.
Nathaniel Payne
1
En términos de bibliotecas y herramientas basadas en Java, otra excelente que puede ver es LingPipe. alias-i.com/lingpipe
Nathaniel Payne
2
@NathanielPayne: Muchas gracias por sus sugerencias. Eso me da una guía para comenzar con la PNL.
Jin Ling