El lenguaje de marcado de inteligencia artificial ( AIML ) es un dialecto XML para la creación de 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 una versión muy extendida de Eliza llamada " ALICE " ("Artificial Linguistic Internet Computer Entity"), que ganó el concurso anual del Premio Loebner en Inteligencia Artificial [ 3 ] tres veces, y también fue el Campeón del Chatterbox Challenge [ 4 ] en 2004.
Debido a que el conjunto ALICE AIML se publicó bajo la GPL , y debido a que la mayoría de los intérpretes AIML se ofrecen bajo una licencia libre o de código abierto , se han creado muchos "clones de Alicebot" basados en la implementación original del programa y su base de conocimiento AIML. La comunidad de usuarios ha desarrollado y puesto a disposición conjuntos AIML gratuitos [ 5 ] en varios lenguajes. Hay intérpretes AIML disponibles en Java , Ruby , Python , C++ , C# , Pascal y otros lenguajes (ver más abajo ). Se dispone de una especificación semiformal [ 6 ] y un esquema XML del W3C para AIML [ 7 ] . Noel Bush figura como autor de la especificación formal, mientras que Richard S. Wallace aparece como creador de AIML, y el borrador de trabajo nombra a colaboradores como Thomas Ringate, Anthony Taylor y Jon Baer [ 8 ] .
Desde principios de 2013, la fundación ALICE ha estado trabajando en un borrador de especificación para AIML 2.0. [ 9 ]
Elementos de AIML
AIML contiene varios elementos. Los más importantes se describen con más detalle a continuación.
Categorías
En AIML, las categorías constituyen la unidad fundamental del conocimiento. Una categoría consta de al menos dos elementos adicionales: el patrón y la plantilla . He aquí una categoría sencilla:
<categoría> <patrón> ¿CUÁL ES TU NOMBRE? </patrón > <plantilla> Mi nombre es Michael N.S. Evanious. </plantilla> </categoría>Cuando se carga esta categoría, un bot de IAML responderá a la pregunta "¿Cuál es tu nombre?" con la respuesta "Mi nombre es Michael NS Evanious".
Patrones
Un patrón es una cadena de caracteres destinada a coincidir con una o más entradas del usuario. Un patrón literal como
CÓMO TE LLAMAS
coincidirá solo con una entrada, ignorando mayúsculas y minúsculas: "what is your name". 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 de AIML es un lenguaje de patrones muy simple, sustancialmente menos complejo que las expresiones regulares y, por lo tanto, inferior al nivel 3 de la jerarquía de Chomsky . Para compensar la simplicidad de sus capacidades de coincidencia de patrones , los intérpretes de AIML pueden proporcionar funciones de preprocesamiento para expandir abreviaturas, corregir errores ortográficos, etc.
La sintaxis AIML es al menos tan compleja como la de las máquinas de estados finitos y, por lo tanto, corresponde al menos al nivel 3 de la jerarquía de Chomsky . Esto se debe a que un estado se correlaciona con un tema . Para implementar este comportamiento, el tema debe tener un patrón "*" para asegurar que el estado no se abandone accidentalmente. El tránsito de estados se implementa con la etiqueta. De esta manera, el bot podrá "recordar" el tema tratado o incluso los privilegios del usuario obtenidos durante el chat.<think><setname="topic">state2</set></think>
Plantillas
Una plantilla especifica la respuesta a un patrón coincidente. Una plantilla puede ser tan simple como un texto literal, como
Mi nombre es John.
Una plantilla puede usar variables, como en el ejemplo
Mi nombre es <bot name="name"/>.
que sustituirá el nombre del bot en la oración, o
Me dijiste que tienes <get name="user-age"/> años.
que sustituirá la edad del usuario (si se conoce) en la frase.
Los elementos de la plantilla incluyen formato de texto básico, respuesta condicional (si-entonces/si no) y respuestas aleatorias.
Las plantillas también pueden redirigir a otros patrones, utilizando 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> <patrón> ¿CUÁL ES TU NOMBRE ? < / patrón> <plantilla> <![CDATA[Mi nombre es <bot name="name"/>.]]> </plantilla> </categoría > <categoría> <patrón> ¿ CÓMO TE LLAMAS ? </patrón > <plantilla> <srai> ¿ Cuál es tu nombre? </srai> </plantilla> </categoría>La primera categoría simplemente responde a la pregunta "¿Cuál es tu nombre?" con el nombre del bot. La segunda categoría, en cambio, indica que la pregunta "¿Cómo te llamas?" debe redirigirse a la categoría que coincida con la pregunta "¿Cuál es tu nombre?"; en otras palabras, afirma que ambas frases son equivalentes.
Las plantillas pueden contener otros tipos de contenido, que pueden ser procesados por la interfaz de usuario a través de la cual se comunica el bot. Por ejemplo, una plantilla puede usar etiquetas HTML para dar formato, las cuales pueden ser ignoradas por clientes que no admiten HTML.
Referencias
- ↑ "Comunicado de prensa: Aprobación del estándar AIML 1.0 (Fundación ALICE AI)" . alicebot.org . San Francisco, CA. 16 de julio de 2001. Archivado del original el 15 de julio de 2007. Consultado el 1 de diciembre de 2013 .
- 1 2 "AIML 2.1 (AIML Foundation)" . aiml.foundation/ . Archivado del original el 14 de mayo de 2019 . Recuperado el 11 de junio de 2022 .
- ↑ "loebner.net - Informationen zum Thema loebner" . loebner.net . 26 de octubre de 2007. Archivado del original el 30 de diciembre de 2010. Consultado el 10 de noviembre de 2010 .
- ↑ "Chatterbox Challenge" . chatterboxchallenge.com . Archivado del original el 25 de marzo de 2006. Consultado el 10 de noviembre de 2010 .
- ↑ "Conjuntos AIML gratuitos - aitools.org" . aitools.org . 17 de mayo de 2006. Archivado del original el 9 de octubre de 2006.
- ↑ "AIML 1.0.1 (Fundación ALICE AI)" . alicebot.org . 13 de octubre de 2011. Archivado del original el 18 de noviembre de 2013. Consultado el 1 de diciembre de 2013 .
- ↑ "AIML.xsd" . aitools.org . Archivado del original el 17 de marzo de 2006. Consultado el 10 de noviembre de 2010 .
- ↑ “AIML 1.0.1 Working Draft Specification (rev 006),” ALICE AI Foundation, octubre de 2001 — Noel Bush (Autor); Richard Wallace (Creador); Thomas Ringate, Anthony Taylor, Jon Baer (Colaboradores).
- ↑ "Se publica el borrador de la especificación AIML 2.0" . alicebot.blogspot.com . 16 de enero de 2013. Archivado del original el 18 de mayo de 2013. Consultado el 19 de junio de 2014 .
- Aplicaciones gratuitas de inteligencia artificial
- lenguajes de marcado XML