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.