Tengo un problema de clasificación de texto multiclase en el que tengo muy pocos documentos para cada clase. Las clases están desequilibradas, pero quiero ser capaz de predecir la clase cuando tengo al menos 200 - 300 documentos. ¿Qué métodos sugieren? Además, los documentos son de un dominio especializado, por lo que no creo que el aprendizaje por transferencia funcione. ¿Recomendarías la incrustación de palabras cuando se trabaja con texto de dominio especializado?
Respuestas
¿Demasiados anuncios?Yo ejecutaría una red neuronal secuencial en python con keras: https://keras.io/getting-started/sequential-model-guide/
La idea es vectorizar sus textos primero con las palabras. Por ejemplo:
I have a dream about yesterday
I want to sleep
Te daría la lista de palabras: 'I, have, a, dream, about, yesterday, want, to, sleep'
Entonces estas palabras serán sus características:
I have a dream about yesterday want to sleep
1 1 1 1 1 1 1 0 0 0
2 1 0 0 0 0 0 1 1 1
con su objetivo y:
classA classB
1 1 0
2 0 1
entonces puedes eliminar todas las palabras detenidas con algunas técnicas, para reducir la cantidad de vectores en tu algoritmo, y luego ejecutar la red neuronal. Al final tendrás un gran vector para cada clase conocida, donde cada palabra tiene un número de ocurrencia en esa clase, con muchos ceros.
Esto será caro para la memoria, pero bastante exitoso.
Yo siempre recomendaría que se utilizaran las variables pre-entrenadas usando un corpus grande porque esos parámetros pre-entrenados son una especie de priorización y regularización.
Incluso si su tarea es muy específica, es muy probable que la extracción de características de bajo nivel o el aprendizaje de patrones se puedan compartir. Para evitar algunas trampas, puede fijar algunos parámetros, como la capa de incrustación (o algunas capas inferiores). Como la mayoría de las incrustaciones no serán reentrenadas y sólo las palabras de su tarea específica serán reentrenadas, las incrustaciones no reentrenadas pueden entrar en conflicto con las reentrenadas.