Lenguaje de marcado de inteligencia artificial
AIML, o Lenguaje de marcado de inteligencia artificial, es un dialecto XML para crear agentes de software de lenguaje natural.
Historia
El dialecto XML llamado AIML fue desarrollado por Richard Wallace y una comunidad mundial de software libre entre 1995 y 2002. AIML formó la base de lo que inicialmente fue un Eliza muy extendido llamado "A.L.I.C.E.& #34; ("Artificial Linguistic Internet Computer Entity"), que ganó tres veces el Concurso anual del Premio Loebner en Inteligencia Artificial, y también fue Campeón del Chatterbox Challenge en 2004.
Porque A.L.I.C.E. El conjunto de AIML se lanzó bajo la GPL de GNU y, debido a que la mayoría de los intérpretes de AIML se ofrecen con una licencia gratuita o de código abierto, muchos "clones de Alicebot" se han creado en base a la implementación original del programa y su base de conocimiento AIML. La comunidad de usuarios ha desarrollado y puesto a disposición conjuntos gratuitos de AIML en varios idiomas. Hay intérpretes AIML disponibles en Java, Ruby, Python, C++, C#, Pascal y otros lenguajes (ver más abajo). Están disponibles una especificación semiformal y un Esquema XML W3C para AIML.
Desde principios de 2013, la fundación A.L.I.C.E ha estado trabajando en un borrador de especificación para AIML 2.0.
Elementos de AIML
AIML contiene varios elementos. Los más importantes de estos se describen con más detalle a continuación.
Categorías
Las categorías en AIML forman la unidad fundamental de conocimiento. Una categoría consta de al menos dos elementos más: los elementos patrón y plantilla. Aquí hay una categoría simple:
■categoría Identificado¿Cuál es tu nombre?■/pattern - No.Mi nombre es Michael N.S Evanious.▪/templatorio■/categoría
Cuando se carga esta categoría, un bot AIML responderá a la entrada "¿Cuál es su nombre?" con la respuesta "Mi nombre es Michael N.S Evanious."
Patrones
Un patrón es una cadena de caracteres destinados a coincidir con una o más entradas del usuario. Un patrón literal como
¿Cuál es tu nombre?
coincidirá solo con una entrada, ignorando mayúsculas y minúsculas: "cuál es su nombre". Pero los patrones también pueden contener comodines, que coinciden con una o más palabras. un patrón como
¿Cuál es tu...?
coincidirá con un número infinito de entradas, incluyendo "cuál es tu nombre", "cuál es tu talla de zapatos", "cuál es tu propósito en la vida", etc.
La sintaxis de patrones AIML es un lenguaje de patrones muy simple, sustancialmente menos complejo que las expresiones regulares y, como tal, menos del nivel 3 en la jerarquía de Chomsky. Para compensar las capacidades de coincidencia de patrones simples, los intérpretes de AIML pueden proporcionar funciones de preprocesamiento para expandir abreviaturas, eliminar errores ortográficos, etc.
La sintaxis de AIML en sí misma es al menos tan compleja como las máquinas de estados finitos y, como tal, al menos del nivel 3 en la jerarquía de Chomsky. Esto se debe a que un estado se correlaciona con un tema. Para implementar ese comportamiento, el tema debe tener un "*" Patrón para asegurarse de que el estado no se deje accidentalmente. Un tránsito estatal se implementa con el <pensar><establecer name="tema">state2</set></think>
Etiqueta. De esta forma, el bot podrá "recordar" el tema del que se habló o incluso los privilegios de usuario, que se obtienen durante el chat.
Plantillas
Una plantilla especifica la respuesta a un patrón coincidente. Una plantilla puede ser tan simple como un texto literal, como
Me llamo John.
Una plantilla puede usar variables, como el ejemplo
Mi nombre es "Nombre de pila="nombre"/ título.
que sustituirá el nombre del bot en la oración, o
Me dijiste que eras un nombre de usuario. años.
que sustituirá la edad del usuario (si se conoce) en la oración.
Los elementos de la plantilla incluyen formato de texto básico, respuesta condicional (if-then/else) y respuestas aleatorias.
Las plantillas también pueden redirigir a otros patrones, usando un elemento llamado srai (Reducción Simbólica en Inteligencia Artificial). Esto se puede usar para implementar la sinonimia, como en este ejemplo (donde se usa CDATA para evitar la necesidad de escape XML):
■categoría Identificado¿Cuál es tu nombre?■/pattern - No.[CDATA [Mi nombre es "nombre de pila="nombre"/ título]]▪/templatorio■/categoría■categoría Identificado¿Cómo se llama?■/pattern - No. Identificaciones¿Cuál es tu nombre?■/srai ▪/templatorio■/categoría
La primera categoría simplemente responde a una entrada "¿cuál es su nombre?" con una declaración del nombre del bot. La segunda categoría, sin embargo, dice que la entrada "cómo te llamas" debe redirigirse a la categoría que coincide con la entrada "cuál es su nombre"; en otras palabras, está diciendo que las dos frases son equivalentes.
Las plantillas pueden contener otros tipos de contenido, que pueden ser procesados por cualquier interfaz de usuario a través de la cual hable el bot. Entonces, por ejemplo, una plantilla puede usar etiquetas HTML para el formato, que los clientes que no admiten HTML pueden ignorar.
Contenido relacionado
Relé
Historia del hardware de computación
Blue Steel (misil)