2010-02-20 28 views
11

Quiero saber cuál es el mejor marco de código abierto basado en Java para Text Mining, para usar botg Machine Learning y dictionary Methods.Java Open Source Text Mining Frameworks

Estoy usando Mallet pero no hay mucha documentación y no sé si se ajustará a todos mis requisitos.

+1

Tengo una pregunta relacionada encima en http://stackoverflow.com/questions/2293636/what-is-a-good-java-library-for-parts-of-speech -etiquetado – Glenn

+0

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. –

Respuesta

4

Aunque no es un marco de minería de textos especializado, Weka tiene una serie de clasificadores generalmente empleados en tareas de minería de textos tales como: SVM, kNN, NaiveBayes multinomial, entre otros.

También tiene algunos filtros que procesar con datos textuales como el filtro StringToWordVector que puede realizar la transformación TF/IDF. Para obtener más información, visite el sitio web Weka wiki.

+0

El problema es que necesito realizar un Reconocimiento de entidad con nombre (NER), y Weka no proporciona características para extraer características de palabras, como características ortográficas y morfológicas. Pero será genial si puedo usar los métodos de Weka en IR. –

+1

Creo que la página de Wikipedia sobre el tema tiene algunos enlaces a algunos paquetes para NER. También me encontré con el proyecto UIMA de Apache, quizás lo encuentres útil: http://incubator.apache.org/uima/index.html – Amro

+0

Sí, lo sé UIMA. Pero no proporciona métodos ML. Es una solución perfecta para sistemas que hacen NER con enfoques basados ​​en diccionarios. No sé cómo integrar métodos ML en UIMA. –

2

Quizás eche un vistazo a Java Open Source NLP and Text Mining tools.

+0

Ya he visto este sitio web, es realmente agradable, gracias. Pero estaba pidiendo tu opinión de la experiencia. Ya he probado algunos de ellos, pero no sé cuál es el mejor. O incluso si tengo que usar uno, dos o tal vez más marcos para llevar a cabo mi tarea. –

+0

@ukrania Disculpa, no soy la persona adecuada entonces. Buena suerte. –

0

Utilizamos lucene para procesar transmisiones en vivo desde Internet. Tiene una API nativa de Java.

http://lucene.apache.org/java/docs/

continuación, puede utilizar mahout que es un montón de algoritmos de aprendizaje machien que operan en la parte superior de Lucene.

http://lucene.apache.org/mahout/

+0

¿Es posible usar mahout para realizar NER? –

2

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.

+1

@JG Gracias por su consejo :). Estoy haciendo mi sistema para la investigación. ¿Debo pagar algo incluso si hago una herramienta comercial? ¿Cuáles son las limitaciones? –

2

posible que ya saben acerca de GATE: http://gate.ac.uk/

... pero eso es lo que hemos utilizado (en mi trabajo día) durante un montón de diferentes problemas de minería de texto. Es bastante flexible y abierto.

+0

@PSpeed ​​Sí, ya lo sé. GATE es muy similar a UIMA. En realidad, GATE fue el primero en surgir. Sin embargo, no sé si es posible realizar métodos ML con GATE. ¿Sabes algo sobre eso? –

+0

Creo que GATE también es más flexible ... encontramos que UIMA es muy limitado. No tengo experiencia específica con ML, pero parecía que si alguien estaba trabajando en ella, entonces GATE sería una plataforma probable. Es donde podría comenzar si estuviera escribiendo algo así ... pero no he buscado ningún proyecto específico. – PSpeed

+0

Parece que ha habido al menos algo de trabajo en ML y GATE: http://gate.ac.uk/gate/doc/plugins.html#Machine_Learning – PSpeed

1

Creé un reconocedor de entidades con nombre de entropía máxima para datos CoNLL usando OpenNLP MaxEnt http://sourceforge.net/projects/maxent/ para un curso una vez.

Requerido una gran cantidad de preprocesamiento de datos con scripts perl personalizados sin embargo, obtienen todas las características extraídas en buenos vectores numéricos.

6

Honestamente creo que las diversas respuestas que aquí se presentan son muy buenas. Sin embargo, para cumplir mis requisitos he elegido usar Apache UIMA con ClearTK. Es compatible con varios métodos de ML y no tengo ningún problema de licencias. Además, puedo hacer envoltorios para otras metodologías ML, y aprovecho el marco UIMA, que está muy bien organizado y es rápido.

Gracias a todos por sus interesantes respuestas.

Best Regards, Ukrania