Hemos pasado ya la fase de Elaboración y ya tenemos los dos casos de uso principales. Que erán:
- Entrenar el componente
- Reconocer un texto a través del componente
Asi que, con estos dos casos de uso tenemos la base de arquitectura de la aplicación. El cual es uno de los objetivos de la fase de Elaboración.
¿Qué ha pasado en esta fase? problemas....como en todo proyecto...
Tecnologico: como se ha usado c++/cli, había que pasar una función de callback desde c++/cli a c++ puro y duro. Y claro, en debug no pasada nada con ese tipo de formato, no casca, y el relase si casca si no se dice explicitamente el tipo de formato (stdcall o cdecl).
Otro asunto, fue el entrenamiento de la red neuronal. No bajaba el error de la red de 0.18. ¿No aprendía la red?. Al final, hubo que normalizar las entradas a la red a valores en el rango [-0.1 y 1.0]. Y claro, todo esto, ha aumentado mis estimaciones sobre sobre la finalización de esta fase.
Y claro, ya lo dicen los textos, cuando la tecnología es nueva y el campo de trabajo es nuevo, el tiempo se dispara.
¿Riesgos detectados?
La red neurnal, solamente reconoce aquellos textos que las palabras estén en orden. Por ejemplo, si entrenamos la red con un texto, y luego invertimos las palabras de orden, la red no reconocera el texto. Con lo cual, es un problema. Ya que un texto puedo estar en distinto orden y significar los mismo, y sin embarlo la red necesita que esten en orden.
¿Posibles soluciones para mitigar el riesgo? Idear algo para que las palabras entren a la red de forma ordenada. Una forma sería ordenar las palabras por su longitud. Es decir, contando el número de letras de cada palabra, asi, las de longitud 1 entrarían en la neurona de entrada 1, las de longitud 2 a la neurona segunda. Esto reduciria de 50 neuronas de entrada a 10 como mucho. Habría que hacer pruebas. O idear otra forma.
Aquí está el fichero de Rational Rose donde se diseño primeramente los casos de uso, realización de casos de uso, diagramas de secuencia,...
Y como manda, la fase de Elaboración,
aquí está un ejecutable de la arquitectura. Solo hay que pulsar el botón "Iniciar Entrenamiento" y pasar a la otra pestaña para que el componente reconozca los temas.
Un pantallazo se puede ver aquí.
