¿Cuál es una buena manera de clasificar los documentos de texto contra un modelo de tema arbitrario?

El problema con los enfoques de clasificación de texto es que funcionan mejor si para cada categoría tiene al menos algunos documentos de capacitación. Luego, cada vez que agregue una nueva categoría, también debe proporcionar documentos etiquetados para esta categoría a fin de crear un modelo de capacitación para ella.

Sugiero que utilice el enfoque de indexación de temas en su lugar. La diferencia con la clasificación de texto es que las categorías de candidatos aquí son todas aquellas que aparecen de una forma u otra en el texto del documento, por ejemplo, a través de sinónimos. Los modelos luego se crearon para “temas típicos” y “temas no típicos”. Por lo tanto, no necesitará tantos datos de entrenamiento, y el enfoque es flexible en términos de crecimiento de vocabulario.

Hice un doctorado sobre este tema y trabajé con colecciones similares. Puede usar mi herramienta de código abierto llamada Maui, está escrita en Java: http://maui-indexer.googlecode.com/
Deberá transformar su lista de categorías en un vocabulario controlado en formato RDF, que puede ser una tarea de formateo simple, o puede ampliarla para agregar sinónimos y términos relacionados a las categorías enumeradas.

Avíseme si decide usar Maui y si tiene alguna pregunta al respecto.

¿Cuántos datos de entrenamiento etiquetados tienes?

Como está buscando un enfoque que funcione de manera inmediata y que sea rápido, haga lo siguiente:

  1. Convierta cada documento en una bolsa de palabras. Use una gran cantidad de datos (sin etiquetar) para calcular la frecuencia del documento para cada palabra. ( http://en.wikipedia.org/wiki/Tf%… )
  2. Para cada documento con etiquetas de clase, conviértalo en una bolsa de palabras con puntajes tf-idf.
  3. Para cada documento y etiqueta de clase, haga un ejemplo de entrenamiento binario: ¿Este documento se asigna a esta clase?
  4. Use Vowpal Wabbit ( http://hunch.net/~vw/ ) para aprender un clasificador binario por clase. (Alternativamente, puede aprender un SVM lineal entrenado con SGD: leon.bottou.org/projects/sgd. El entrenamiento de un SVM lineal se puede hacer rápidamente).

Esta reducción binaria es particularmente sensata porque puede haber más de una clase por documento.

Esto debería ser bueno por ahora. Si está interesado en refinarlo, debe usar datos sin etiquetar. Luego aprende una representación sobre documentos usando estos datos sin etiquetar. Esto se llama aprendizaje semi-supervisado, pero es diferente de lo que Ian está hablando. Ver M. Ranzato , M. Szummer. “Aprendizaje semi-supervisado de representaciones de documentos compactos con redes profundas” (2008), que aún no tiene implementaciones públicas. (Nota: estamos trabajando en la construcción de uno).

El enfoque más simple es usar un clasificador bayesiano usando palabras individuales en el documento. Podrías mirar palabras individuales o pares de palabras, aunque he escuchado que realmente no obtienes mucho beneficio con los pares de palabras (sin embargo, esto ha sido discutido por otros, ver comentarios).

Un truco inteligente es utilizar el aprendizaje semi-supervisado. Tiene un conjunto de documentos etiquetados y un conjunto sin etiquetar (a menudo mucho más grande).

Usted entrena su algoritmo basado en el conjunto etiquetado, y luego lo usa para encontrar el documento en el conjunto de entrenamiento sobre el que está más seguro. Luego, el algoritmo lo etiqueta en consecuencia y luego lo agrega al conjunto etiquetado, vuelve a entrenar y repite.

De esta manera, efectivamente “arranca” su pequeño conjunto de entrenamiento, en un conjunto de entrenamiento mucho más grande.

Otro enfoque relacionado, si tiene la capacidad de etiquetar manualmente los documentos a pedido, es capacitarse en su conjunto de datos etiquetados y luego encontrar el documento del que es menos seguro. Rotúlelo manualmente, agréguelo a su conjunto de entrenamiento y repita.

Soñé ambas técnicas yo mismo, pero son lo suficientemente obvias como para dudar de que sean enfoques originales.

More Interesting

¿Es posible combinar dos algoritmos no supervisados ​​en serie para maximizar la precisión?

¿Qué significa realmente el aprendizaje automático en términos reales?

¿Qué tan popular y extendido es el aprendizaje automático en África?

¿Cómo se puede aplicar RL (método de gradiente de política) al problema de selección de subconjunto, donde cada prueba consiste en seleccionar un subconjunto de elementos de un conjunto más grande?

Cómo aprender machine learning para construir startups

¿Qué pasos son necesarios para construir un sistema de aprendizaje profundo para el análisis de sentimientos, tomando como datos de entrada de las redes sociales?

¿Alguien ha usado ML para hacer un diseño * no trivial * de algoritmos CS de bajo nivel (ver comentarios)?

¿Por qué es importante aprender el descenso de gradiente en el aprendizaje automático?

¿Qué universidades de la India son buenas para realizar investigaciones en el aprendizaje por refuerzo?

¿Qué es el procesamiento de señales y cómo se relaciona con el aprendizaje automático?

Durante la limpieza de datos cuando tiene un número decimal que representa el número de personas, ¿debe redondear hacia arriba o hacia abajo? Además, ¿qué sucede si el número total de todos los números redondeados no coincide con el número total de personas, es un error?

Cómo comenzar mi investigación sobre el aprendizaje por refuerzo si no soy bueno en Python

¿Cómo detectamos las anamolias que causan la caída de la máquina y la pérdida de producción en la fabricación?

¿Qué teoría debería aprender a crear un algoritmo para clasificar los textos automáticamente?

Cómo comenzar a trabajar en un proyecto de análisis de sentimientos