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)
Respuestas:
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
Java
hay 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 learning
herramientas para incorporar en lasNLP
canalizaciones.Hay una amplia gama en
Python
yJava
, 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:
fuente
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.
fuente