Tengo un corpus de texto con los temas correspondientes. Por ejemplo, "A rapper Tupac was shot in LA"
y fue etiquetado como ["celebrity", "murder"]
. Entonces, básicamente, cada vector de entidades puede tener muchas etiquetas (no la misma cantidad. El primer vector de entidades puede tener 3 etiquetas, la segunda 1, la tercera 5).
Si tuviera una sola etiqueta correspondiente a cada texto, probaría un clasificador Naive Bayes , pero no sé realmente cómo proceder si puedo tener muchas etiquetas.
¿Hay alguna forma de transformar Naive Bayes en un problema de clasificación de múltiples etiquetas (si hay un mejor enfoque, por favor hágamelo saber)?
PD: pocas cosas sobre los datos que tengo.
- aproximadamente 10.000 elementos en el conjunto de datos
- el texto tiene aproximadamente 2-3 oraciones
- máximo 7 etiquetas por texto
machine-learning
text-mining
Salvador Dalí
fuente
fuente
Respuestas:
Para empezar, Naive Bayes probablemente no sea apropiado aquí. Asume independencia entre las entradas (de ahí el "ingenuo") y las palabras en una oración son muy dependientes.
Pero, suponiendo que realmente quiera ejecutar con NB como algoritmo para comenzar su experimentación, hay dos opciones que consideraría:
Sin gracia: muchos clasificadores NB
Este sería un enfoque alternativo. Haz un corupus de todas las palabras observadas como tu vector de entradas. Haga un corpus de todas las etiquetas que se observan como su vector de salidas. Un clasificador NB con múltiples salidas es el equivalente a tener múltiples clasificadores NB con una salida cada uno (así que haga lo que sea más fácil de implementar en cualquier marco de software que esté usando). Trate cada elemento como una muestra de entrenamiento donde una entrada dada (una palabra) es
1
si esa palabra está presente y0
si esa palabra no lo está. Use el mismo esquema binario para la salida.Este bruto fuerza la aplicación del clasificador NB a sus datos, y le permite encontrar el significado al seguir explotando el enorme conjunto de clasificadores que le quedarán.
Más elegante: procese sus datos
Este es el enfoque que recomendaría si desea ejecutar con un clasificador NB de múltiples clases.
Su objetivo aquí es descubrir cómo asignar cada conjunto de etiquetas a una sola clase. Estoy seguro de que hay algún tipo de esquema de agrupamiento o análisis de red (quizás ["celebridad"] vinculada a ["asesinato"] podría convertirse en un segmento ["libertinaje"]) que mapeará sensiblemente sus etiquetas en un solo grupo. Si trata las etiquetas como nodos y dos etiquetas dadas juntas como enlaces, entonces querrá examinar los algoritmos de detección de la comunidad (que es donde comenzaría). Pero, si solo quiere que algo funcione, entonces sería suficiente algún tipo de pirateo de las etiquetas que convierte una lista de etiquetas solo en la etiqueta que se ve más comúnmente en su conjunto de datos.
Este método carga el trabajo de limpieza de sus datos y facilitaría la comprensión de la salida del clasificador NB.
fuente