He usado LingPipe - una suite de bibliotecas Java para el análisis lingüístico del lenguaje humano - para la minería de texto (y otras relacionadas) tareas.
Es un paquete de software muy bien documentado, y el sitio contiene varios tutoriales que explican a fondo cómo hacer una determinada tarea con LingPipe, como named entity recognition. También hay un grupo de noticias, en el que puede publicar cualquier pregunta que tenga sobre el software (o tareas relacionadas con NLP), y tener una pronta respuesta por parte de los autores del paquete; y por supuesto, un blog.
El código fuente también es muy fácil de seguir y está bien documentado, lo cual, para mí, siempre es una gran ventaja.
En cuanto a los algoritmos de Aprendizaje automático, hay muchos, desde Naïve Bayes hasta Conditional Random Field. Por otro lado, para los algoritmos de comparación de diccionarios, tienen un ExactDicitonaryChunker, que es una implementación del algoritmo Aho-Corasich (un algoritmo muy, muy rápido para esta tarea).
En resumen, creo que es uno de los mejores paquetes de software NLP para Java (no he utilizado todos los paquetes que hay, así que no puedo decir que sea el mejor), y definitivamente lo recomiendo para la tarea que tienes a mano.
Tengo una pregunta relacionada encima en http://stackoverflow.com/questions/2293636/what-is-a-good-java-library-for-parts-of-speech -etiquetado – Glenn
Gracias: P. Debería ser agradable usar uno de esos etiquetadores POS con un amplio marco que cumple todos los requisitos de IR cuando se usan métodos ML. Lingpipe es muy bueno para los diccionarios, pero no es gratuito para las herramientas comerciales. –