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:
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.
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:
Análisis sobre el texto. considerar una función realice un análisis léxico del texto, es decir:
Convierta las mayúsculas del texto en minúsculas.
Elimine los símbolos (símbolos de puntuación, exclamaciones, interrogaciones, etc...)
Elimine los acentos.
Análisis sobre lista de palabras. considerar una función que:
Tras obtener el conjunto de palabras realizando el análisis sobre el texto, se deben eliminar aquellas que no son relevantes (stopwords).
Se considerarán correctas ambas funciones si superan los tests ya propuestos, y en este caso, #34 quedaría correctamente resuelto.
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:
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.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:
Análisis sobre el texto. considerar una función realice un análisis léxico del texto, es decir:
Análisis sobre lista de palabras. considerar una función que:
Se considerarán correctas ambas funciones si superan los tests ya propuestos, y en este caso, #34 quedaría correctamente resuelto.