danielsp13 / CorrectIt

CorrectIt: un corrector de exámenes escritos en lenguaje natural.
GNU General Public License v3.0
0 stars 0 forks source link

[M1 - Dev] Replantear procesamiento del texto de las Respuestas #57

Closed danielsp13 closed 1 year ago

danielsp13 commented 1 year ago

El propósito de #31 es incluir parte de la lógica de negocio de este proyecto, principalmente en la dirección de la historia de usuario #5 . Para ello, uno de lo primeros problemas a resolver es el mencionado en #34 , que consiste en procesar el texto de las respuestas con el objetivo de reducir la dimensión de las mismas, y posteriormente, aplicar el algoritmo de corrección de forma más eficiente, consiguiendo así agilidad y efectividad en esta tarea (que es lo que se espera).

El asunto está en que el desarrollo actual alcanzado (en cuanto al modelaje de esta parte del problema), no es lo suficiente bueno como para poder asegurar que realmente se está satisfaciendo la historia de usuario, por los siguientes motivos:

  1. La entidad TokensRespuesta, tiene como objetivo dividir el texto en palabras (tokens), obteniendo un conjunto más manejable que una cadena de caracteres. Además, realiza diversas tareas del procesamiento ya comentadas como eliminación de símbolos, palabras vacías, etc... En cualquier caso, no dejan de ser operaciones sobre un único atributo que tienen como resultado una lista inmutable, por lo que se debe considerar transformar este planteamiento en simplemente funciones, y no una clase.
  2. En relación con el anterior punto, el modelo propuesto realiza operaciones bastante repetitivas, que se podrían hacer directamente si se analiza primero el texto en vez de la lista de palabras: la conversión de mayúsculas a minúsculas, eliminación de símbolos y de acentos en vocales; y a continuación de esto obtener la lista de palabras, de la que se eliminarán las palabras vacías.

En definitiva, se debe definir un módulo que contenga funciones que desempeñen las mismas tareas realizando análisis sobre el texto y otras sobre la lista de palabras:

Se considerarán correctas ambas funciones si superan los tests ya propuestos, y en este caso, #34 quedaría correctamente resuelto.