Pregunta

Necesitamos un módulo de clasificación de contenido. El clasificador bayesiano parece ser lo que estoy buscando. ¿Deberíamos ir por Orange o NLTK?

¿Fue útil?

Solución

Así como lo demuestra la documentación, la implementación de Naive Bayes en cada biblioteca es fácil de usar, entonces, ¿por qué no ejecutar sus datos con ambos y comparar los resultados?

Tanto Orange como NLTK son bibliotecas maduras y estables (más de 10 años en desarrollo para cada biblioteca) que se originaron en grandes universidades; Comparten algunas características comunes principalmente algoritmos de aprendizaje automático. Más allá de eso, son bastante diferentes en alcance, propósito e implementación.

Orange es el dominio agnóstico, no dirigido hacia una disciplina académica particular o dominio comercial, sino que se anuncia como minería de datos de pila completa y plataforma ML. Su enfoque está en el instrumentos ellos mismos y no la aplicación de esas herramientas en una disciplina particular.

Sus características incluyen IO, el algoritmo de análisis de datos y un lienzo de visualización de datos.

NLTK, por otro lado, comenzó como y sigue siendo un proyecto académico en un departamento de lingüística computacional de una gran universidad. La tarea que mencionó (clasificación de contenido del documento) y su algoritmo de elección (Naive Bayesian) están bastante justo en el núcleo de la funcionalidad de NLTK. NLTK tiene algoritmos de minería de datos/ML/de datos, pero es solo porque tienen una utilidad particular en lingüística computacional.

NLTK, por supuesto, incluye algunos algoritmos ML, pero solo porque tienen utilidad en lingüística computacional, junto con analizadores de documentos, tokenizadores, analizadores de parte del voz, etc., todos los cuales comprenden NLTK.

Quizás la implementación de Naive Bayes en Orange es igual de buena, aún elegiría la implementación de NLTK porque está claramente optimizada para la tarea particular que mencionó.

Existen numerosos tutoriales sobre NLTK y, en particular, por sus ingenuos Bayes para el uso de la clasificación de contenido. Una publicación de blog de Jim Plus y otro en streamhacker.com, por ejemplo, presente excelentes tutoriales para el uso de NLTK's Naive Bayes; El segundo incluye una discusión en línea por línea del código requerido para acceder a este módulo. Los autores de ambas publicaciones informan buenos resultados utilizando NLTK (92% en el primero, 73% en el segundo).

Otros consejos

No conozco naranja, pero +1 para nltk:

He utilizado sucesivamente las herramientas de clasificación en NLTK para clasificar el texto y los meta datos relacionados. Bayesian es el valor predeterminado, pero hay otras alternativas, como la máxima entropía. También al ser un kit de herramientas, puede personalizar como mejore, por ejemplo. Crear sus propias características (que es lo que hice para los meta datos).

NLTK también tiene un par de buenos libros, uno de los cuales está disponible bajo Creative Commons (así como O'Reilly).

NLTK es un kit de herramientas que admite un modelo estatal de procesamiento del lenguaje natural:

  1. Tokenizing: agrupar personajes como palabras. Esto abarca desde cosas de Regex triviales hasta lidiar con contracciones como "no"
  2. Etiquetado. Esto está aplicando etiquetas de parte de voz a los tokens (por ejemplo, "nn" para sustantivo, "vbg" para verbos gerundio). Esto generalmente se hace entrenando a un modelo (por ejemplo, Hidden Markov) en un corpus de entrenamiento (es decir, una gran lista de oraciones etiquetadas por las manos).
  3. Fragmentación/análisis. Esto está tomando cada oración etiquetada y extrayendo características en un árbol (por ejemplo, frases nominal). Esto puede ser de acuerdo con una gramática escrita a mano o una entrenada en un corpus.
  4. Extracción de información. Esto está atravesando el árbol y extrayendo los datos. Aquí es donde se haría su naranja específica = fruta.

NLTK admite WordNet, un gran diccionario semántico que clasifica las palabras. Por lo tanto, hay 5 definiciones de sustantivos para naranja (fruta, árbol, pigmento, color, río en Sudáfrica). Cada uno de estos tiene una o más 'rutas de hipernym' que son jerarquías de clasificaciones. Por ejemplo, el primer sentido de 'naranja' tiene dos caminos:

  • naranja/citrus/edible_fruit/fruit/reproductive_structure/plant_organ/plant_part/natural_object/whole/object/físico_entity/entidad

y

  • Orange/Citrus/Edible_Fruit/Produce/Food/Solid/Matter/Physical_entity/Entity

Dependiendo de su dominio de aplicación, puede identificar la naranja como fruta, una comida o una planta. Luego puede usar la estructura de árboles fragmentados para determinar más (quién hizo lo que le dio a la fruta, etc.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top