miércoles, 30 de noviembre de 2016

Taller de MoMo: Cómo añadir reglas (ii) - Pasito a pasito...

¿La repetición de conversaciones ya no tiene misterios para ti? Si todavía tienes dudas, tal vez debas echarle un vistazo a nuestro tutorial anterior, pero si ya eres capaz de guardar conversaciones y repetirlas como si no hubiera un mañana, probablemente ha llegado el momento de pasar a un nuevo nivel.

Continuando con el ejemplo anterior, supongamos que nos hemos fijado la meta de que nuestro bot pueda responder a frases como:

Si Carlos tiene ocho coches y Daniel tiene cuatro coches, ¿cuántos coches tienen entre los dos?

Todo un reto, ¿verdad? Tenemos que extraer como mínimo dos datos y admitir bastante variabilidad, a no ser que queramos crear una regla que diga que la respuesta es doce y pasar a otra cosa.

Si escribimos la regla de corrido, lo más probable es que nos equivoquemos, pero es normal, ¡es algo muy complicado!

Probablemente tengamos que repetir esta conversación una y otra vez, así que lo primero que tendremos que hacer es guardar esta conversación siguiendo las instrucciones de nuestro tutorial anterior.

Ahora vamos a cerrar el programa y abriremos el archivo rules.xml con las reglas de nuestro bot. Normalmente estará en la siguiente carpeta:

MomoDesktop/bots/Pepito_ES

donde tendremos que sustituir Pepito por el nombre de nuestro bot.

Si tenemos problemas para localizar este archivo tal vez podamos buscar simplemente el archivo rules.xml con nuestro explorador de archivos favorito.

Bien, ahora tenemos que abrir este archivo y dirigirnos a la primera línea, donde insertaremos la siguiente regla:

<rule>
    <input>coches</input>
    <output script="forget()">Ya veo por dónde vas.</output>
</rule>


¿Por qué lo hacemos así? Bueno, hay un par de buenos motivos:

1. Al colocar la regla al principio del archivo nos aseguramos de que no haya conflicto con ninguna otra regla. Si esta regla no se ejecuta, es porque no coincide con la entrada.

2. Si solemos trabajar convirtiendo las reglas de una hoja de cálculo en el formato xml, esta es una operación que requiere un precioso tiempo que perdemos.

Al escribir la regla en el archivo rules.xml, la actualización es casi inmediata. Solo tenemos que cerrar y volver a abrir MoMo o, todavía más rápido, volver a cargar el personaje seleccionándolo en el menú Bots. Un proceso que dura solo unos segundos en lugar del pesado Copiar-Pegar-Guardar-Convertir que había que hacer antes.

Por supuesto, cuando tengamos nuestra flamante nueva regla terminada, no hay problema en copiar nuestra valiosa regla a la hoja de cálculo y continuar el desarrollo ahí.

Y bueno, para resolver este problema concreto, la clave está en avanzar poquito a poco. Por ejemplo, la mitad del problema parece estar resuelto con la siguiente regla:

<rule>
    <input>~nombreMasculino tiene <wildcard length="1" name="$name1$" /></input>
    <output script="forget()">$nombreMasculino$ tiene $name1$.</output>
</rule>


El resultado con esto, parece ir tomando forma, ¿qué habrá que hacer para continuar?

Solo una última nota, tal vez te extrañe el script que se ha incluido en la regla:
script="forget()". ¿Realmente hace falta? La respuesta es que no, sencillamente lo hemos incluido para indicar un espacio por si necesitas escribir un script, pero puede borrar este comando con total y absoluta tranquilidad.

No hay comentarios:

Publicar un comentario en la entrada