Attempto Controlled English ( ACE ) es un lenguaje natural controlado , es decir, un subconjunto del inglés estándar con una sintaxis restringida y una semántica restringida descrita por un pequeño conjunto de reglas de construcción e interpretación. [1] Ha estado en desarrollo en la Universidad de Zurich desde 1995. En 2013, se anunció la versión 6.7 de ACE. [2]
ACE puede servir como representación de conocimiento , especificación y lenguaje de consulta , y está destinado a profesionales que desean utilizar notaciones formales y métodos formales, pero que pueden no estar familiarizados con ellos. Aunque ACE parece perfectamente natural (puede ser leído y comprendido por cualquier hablante de inglés), en realidad es un lenguaje formal . [1]
ACE y sus herramientas relacionadas se han utilizado en los campos de especificaciones de software , demostración de teoremas , asistentes de prueba , resúmenes de texto , ontologías , reglas, consultas, documentación médica y planificación .
A continuación se muestran algunos ejemplos sencillos:
Las reglas de construcción de ACE requieren que cada sustantivo sea introducido por un determinante ( a , cada , no , algunos , al menos 5 ,...). Con respecto a la lista de ejemplos anterior, las reglas de interpretación de ACE deciden que (1) se interpreta como universalmente cuantificado , mientras que (2) se interpreta como existencialmente cuantificado . Oraciones como "Las mujeres son humanas" no siguen la sintaxis ACE y, en consecuencia, no son válidas.
Las reglas de interpretación resuelven las referencias anafóricas [ ancla rota ] en (3): el empate y eso de la segunda oración se refieren a un nuevo empate de la primera oración, mientras que su y el hombre de la segunda oración se refieren a un hombre de la primera oración. . Por tanto, un texto ACE es una entidad coherente de oraciones anafóricamente vinculadas.
Attempto Parsing Engine (APE) traduce textos ACE sin ambigüedades en estructuras de representación del discurso (DRS) que utilizan una variante del lenguaje de lógica de primer orden . [3] Un DRS se puede traducir a otros lenguajes formales , por ejemplo AceRules con varias semánticas, [4] OWL , [5] y SWRL . Traducir un texto ACE a (un fragmento de) lógica de primer orden permite a los usuarios razonar sobre el texto, por ejemplo, verificarlo , validarlo y consultarlo .
Como descripción general de la versión actual 6.6 de ACE, esta sección:
El vocabulario de ACE comprende:
La gramática de ACE define y limita la forma y el significado de las oraciones y textos de ACE. La gramática de ACE se expresa como un conjunto de reglas de construcción. El significado de las oraciones se describe como un pequeño conjunto de reglas de interpretación. Una guía de solución de problemas describe cómo utilizar ACE y cómo evitar errores.
Un texto ACE es una secuencia de oraciones declarativas que pueden estar interrelacionadas anafóricamente. Además, ACE admite preguntas y comandos.
Una oración simple afirma que algo es el caso: un hecho, un evento, un estado.
Las oraciones ACE simples tienen la siguiente estructura general:
Cada oración tiene un sujeto y un verbo. Los complementos (objetos directos e indirectos) son necesarios para los verbos transitivos ( insertar algo ) y los verbos ditransitivos ( dar algo a alguien ), mientras que los adjuntos (adverbios, frases preposicionales) son opcionales.
Todos los elementos de una oración simple se pueden desarrollar para describir la situación con más detalle. Para especificar más los sustantivos cliente y tarjeta , podríamos añadir adjetivos:
sustantivos posesivos y de frases preposicionales:
o variables como aposiciones:
Otras modificaciones de sustantivos son posibles mediante oraciones relativas:
que se describen a continuación ya que forman una oración compuesta. También podemos detallar el evento de inserción, por ejemplo añadiendo un adverbio:
o equivalente:
o, agregando frases preposicionales:
Podemos combinar todas estas elaboraciones para llegar a:
Las oraciones compuestas se construyen recursivamente a partir de oraciones más simples mediante coordinación , subordinación , cuantificación y negación . Tenga en cuenta que las oraciones compuestas ACE se superponen con lo que los lingüistas llaman oraciones compuestas y oraciones complejas.
La coordinación por y es posible entre oraciones y entre frases del mismo tipo sintáctico.
Tenga en cuenta que la coordinación de los sintagmas nominales una tarjeta y un código representa un objeto plural.
La coordinación por o es posible entre oraciones, frases verbales y cláusulas relativas.
La coordinación por y y o se rige por el orden vinculante estándar de la lógica, es decir, y se une más fuerte que o . Se pueden utilizar comas para anular el orden de enlace estándar. Así la frase:
significa que el cliente inserta una VisaCard y un código, o alternativamente una MasterCard y un código.
Hay cuatro constructos de subordinación: oraciones relativas, oraciones si-entonces , modalidad y subordinación de oraciones.
Oraciones relativas que comienzan con quién , cuál y que permiten agregar detalles a los sustantivos:
Con la ayuda de oraciones si-entonces podemos especificar situaciones condicionales o hipotéticas:
Tenga en cuenta la referencia anafórica a través del pronombre it en la parte entonces a la frase nominal a card en la parte if .
La modalidad nos permite expresar posibilidad y necesidad:
La subordinación de oraciones se presenta en varias formas:
La cuantificación nos permite hablar de todos los objetos de una determinada clase ( cuantificación universal ), o denotar explícitamente la existencia de al menos un objeto de esta clase ( cuantificación existencial ). La ocurrencia textual de un cuantificador universal o existencial abre su alcance que se extiende hasta el final de la oración, o en coordinaciones hasta el final de la respectiva oración coordinada.
Para expresar que todos los clientes involucrados insertan tarjetas podemos escribir
Esta frase significa que cada cliente inserta una tarjeta que puede ser o no igual a la insertada por otro cliente. Para especificar que todos los clientes inserten la misma tarjeta, por poco realista que parezca la situación, podemos escribir:
o equivalente:
Para indicar que cada tarjeta es insertada por un cliente escribimos:
o, algo indirectamente:
La negación nos permite expresar que algo no es así:
Para negar algo para todos los objetos de una determinada clase se utiliza no :
o no hay :
Para negar una declaración completa se usa la negación de oraciones:
Estas formas de negación son negaciones lógicas, es decir, afirman que es probable que algo no sea así. La negación como fracaso establece que un estado de cosas no se puede probar, es decir, no hay información sobre si el estado de cosas es así o no.
ACE admite dos formas de consultas: consultas sí/no y consultas wh .
Sí/no : las consultas preguntan por la existencia o no existencia de una situación específica. Si especificamos:
entonces podemos preguntar:
para obtener una respuesta positiva. Tenga en cuenta que las oraciones interrogativas siempre terminan con un signo de interrogación.
Con la ayuda de consultas wh , es decir, consultas con palabras de consulta, podemos consultar un texto para obtener detalles de la situación especificada. Si especificamos:
podemos preguntar por cada elemento de la oración a excepción del verbo.
Las consultas también se pueden construir mediante una secuencia de oraciones declarativas seguidas de una oración interrogativa, por ejemplo:
ACE también admite comandos. Algunos ejemplos:
Una orden siempre consta de una frase nominal (el destinatario), seguida de una coma, seguida de una frase verbal no coordinada. Además, un comando debe terminar con un signo de exclamación.
Para limitar la ambigüedad del lenguaje natural completo, ACE emplea tres medios simples:
En el lenguaje natural, las oraciones relativas combinadas con coordinaciones pueden introducir ambigüedad:
En ACE la frase tiene el significado inequívoco de que el cliente abre una cuenta, como lo refleja la paráfrasis:
Para expresar la alternativa (aunque poco realista) que significa que la tarjeta abre una cuenta, el pronombre relativo debe repetirse, produciendo así una coordinación de oraciones relativas:
Esta oración es inequívocamente equivalente en significado a la paráfrasis:
No todas las ambigüedades pueden eliminarse de manera segura de ACE sin volverlo artificial. Para interpretar de manera determinista oraciones ACE que de otro modo serían sintácticamente correctas, utilizamos un pequeño conjunto de reglas de interpretación. Por ejemplo, si escribimos:
luego con un código se adjunta al verbo inserts , pero no a una tarjeta . Sin embargo, probablemente esto no sea lo que queríamos decir. Para expresar que el código está asociado con la tarjeta, podemos emplear la regla de interpretación de que una oración relativa siempre modifica la frase nominal inmediatamente anterior y reformular la entrada como:
dando la paráfrasis:
o—para especificar que el cliente inserta una tarjeta y un código—como:
Normalmente los textos ACE constan de más de una frase:
Para expresar que todas las apariciones de tarjeta y código deben significar la misma tarjeta y el mismo código, ACE proporciona referencias anafóricas a través del artículo definido:
Durante el procesamiento del texto ACE, todas las referencias anafóricas se reemplazan por la frase nominal accesible más reciente y específica que concuerde en género y número. Como ejemplo de "más reciente y más específico", supongamos que a un analizador ACE se le proporciona la oración:
Entonces:
se refiere a la segunda carta, mientras que:
Se refiere a la primera carta.
No se puede hacer referencia anafóricamente a las frases nominales dentro de oraciones si-entonces , oraciones cuantificadas universalmente, negaciones, modalidades y oraciones subordinadas desde oraciones posteriores, es decir, dichas frases nominales no son "accesibles" desde el siguiente texto. Así para cada una de las oraciones:
No podemos referirnos a una tarjeta con:
Las referencias anafóricas también son posibles mediante pronombres personales:
o mediante variables:
Las referencias anafóricas mediante artículos definidos y variables se pueden combinar:
Tenga en cuenta que los nombres propios como SimpleMat siempre se refieren al mismo objeto.