Mejor respuesta
En términos de clasificación de texto supervisado, hay varios:
- Asignación de Dirichlet latente supervisada (SLDA)
- Máquinas vectoriales de soporte (SVM)
- Regresión logística multinomial (máxima entropía)
- Bayes ingenuo (ver también multinomial NB)
- Redes neuronales
- Árboles de decisión
- Bosques aleatorios
- Algoritmos de impulso y embolsado
Respuesta
La triste verdad es que casi no existen algoritmos que tengan en cuenta el orden de las palabras y la estructura de las oraciones. La gran, gran, gran mayoría de los algoritmos se basan en palabras únicas, algunas veces pares de palabras y muy raras veces tripletas de palabras (unigramas, bigramas y trigramas respectivamente).
Dicho esto, sin considerar el orden de las palabras y contenido, muchos de estos algoritmos funcionan bastante bien. La regresión logística, los bayes ingenuos, las SVM y las combinaciones de estos tres funcionan de manera cercana al estado del arte para la mayoría de las tareas de clasificación de texto.
Dicho esto, existen alternativas. Específicamente, hay clases de redes neuronales que las tienen en cuenta. AFAIK, las redes neuronales recurrentes, recursivas y convolucionales aplicadas al texto explican esto hasta cierto punto. Dependiendo de la implementación, es probable que una red neuronal convolucional pierda información de orden más precisa que las dos RNN, pero esto ciertamente no es siempre el caso.
Se sabe que estos modelos generalmente producen una precisión superior en ciertos casos Específicamente, estos son casos en los que se trata de conjuntos de datos muy grandes. Como regla general, si está por debajo de ~ 1 millón de ejemplos, es mejor que utilice un modelo más simple, ya que es probable que estos modelos no aprendan en absoluto sobreajustan terriblemente en conjuntos de datos pequeños. Una vez más, hay excepciones para cada regla, pero esto es generalmente preciso.
También son MUY costosos computacionalmente y es poco probable que puedas entrenar esto en un una cantidad de tiempo razonable sin una configuración de GPU.