AIML , o Artificial Intelligence Markup Language , es un dialecto XML para crear agentes de software de lenguaje natural .
Extensión de nombre de archivo | .aiml |
---|---|
Desarrollado por | Dr. Richard S. Wallace |
Versión inicial | 16 de julio de 2001 [1] |
Último lanzamiento | |
Tipo de formato | Inteligencia artificial |
Extendido desde | XML |
¿ Formato abierto ? | sí |
Sitio web | http://www.aiml.foundation/doc.html |
Historia
El dialecto XML llamado AIML fue desarrollado por Richard Wallace y una comunidad mundial de software libre entre 1995 [ cita requerida ] y 2002. AIML formó la base de lo que inicialmente fue una Eliza muy extendida llamada " ALICE ". ("Entidad informática de Internet lingüística artificial"), que ganó el Concurso anual del Premio Loebner en Inteligencia Artificial [3] en tres ocasiones, y también fue Campeón del Chatterbox Challenge [4] en 2004.
Dado que el conjunto ALICE AIML fue liberado bajo la GNU GPL , y porque la mayoría de los intérpretes AIML se ofrecen bajo un libre o licencia de código abierto , se han creado muchos "clones Alicebot" en base a la aplicación original del programa y su base de conocimientos AIML. Los conjuntos AIML gratuitos [5] en varios idiomas han sido desarrollados y puestos a disposición por la comunidad de usuarios. Hay intérpretes AIML disponibles en Java , Ruby , Python , C ++ , C # , Pascal y otros lenguajes (ver más abajo [ enlace muerto ] ). Están disponibles una especificación semiformal [6] y un esquema XML W3C para AIML [7] .
Desde principios de 2013, la fundación ALICE ha estado trabajando en un borrador de especificación para AIML 2.0. [8]
Elementos de AIML
AIML contiene varios elementos. Los más importantes 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: el patrón y los elementos de plantilla . Aquí hay una categoría simple:
CUAL ES SU NOMBRE Mi nombre es Michael NS Evanious.
Cuando se carga esta categoría, un bot de AIML responderá a la entrada "¿Cuál es su nombre?" Con la respuesta "Mi nombre es Michael NS Evanious".
Patrones
Un patrón es una cadena de caracteres destinados a coincidir con una o más entradas de usuario. Un patrón literal como
CUÁL ES TU NOMBRE
coincidirá sólo con una entrada, ignorando el caso: "cuál es tu nombre". Pero los patrones también pueden contener comodines, que coinciden con una o más palabras. Un patrón como
CUAL ES TU *
coincidirá con un número infinito de entradas, incluyendo "cuál es tu nombre", "cuál es tu talla de zapato", "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 simples de coincidencia de patrones , los intérpretes de AIML pueden proporcionar funciones de preprocesamiento para expandir abreviaturas, eliminar errores ortográficos, etc.
La sintaxis de AIML en sí 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 abandona accidentalmente. Se implementa un tránsito estatal con la etiqueta. De esta manera, 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
Mi nombre es John.
Una plantilla puede usar variables, como el ejemplo
Mi nombre es.
que sustituirá el nombre del bot en la oración, o
Me dijiste que tienesañ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 (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 un escape XML ):
¿CUÁL ES SU NOMBRE .]]> < pattern> COMO SE TE LLAMA cual es tu nombre
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 tu 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 esté hablando el bot. Entonces, por ejemplo, una plantilla puede usar etiquetas HTML para formatear, que los clientes que no admiten HTML pueden ignorar.
Referencias
- ^ "Comunicado de prensa: estándar AIML 1.0 aprobado (Fundación ALICE AI)" . alicebot.org . San Francisco, CA. 16 de julio de 2001. Archivado desde el original el 15 de julio de 2007 . Consultado el 1 de diciembre de 2013 .
- ^ "AIML 2.1 (Fundación AIML)" . aiml.foundation/ . Archivado desde el original el 14 de mayo de 2019 . Consultado el 19 de abril de 2020 .
- ^ "loebner.net - Informationen zum Thema loebner" . loebner.net . 26 de octubre de 2007. Archivado desde el original el 30 de diciembre de 2010 . Consultado el 10 de noviembre de 2010 .
- ^ "Desafío de Chatterbox" . chatterboxchallenge.com . Archivado desde el original el 25 de marzo de 2006 . Consultado el 10 de noviembre de 2010 .
- ^ "Juegos AIML gratuitos - aitoold.org" . aitools.org . 17 de mayo de 2006. Archivado desde el original el 9 de octubre de 2006.
- ^ "AIML 1.0.1 (Fundación ALICE AI)" . alicebot.org . 13 de octubre de 2011. Archivado desde el original el 18 de noviembre de 2013 . Consultado el 1 de diciembre de 2013 .
- ^ "AIML.xsd" . aitools.org . Archivado desde el original el 17 de marzo de 2006 . Consultado el 10 de noviembre de 2010 .
- ^ "Lanzamiento de la especificación preliminar de AIML 2.0" . alicebot.blogspot.com . 16 de enero de 2013. Archivado desde el original el 18 de mayo de 2013 . Consultado el 19 de junio de 2014 .