Attempto Controlled English (ACE) es un lenguaje natural controlado diseñado para la representación del conocimiento y el razonamiento sin ambigüedades. Permite a los usuarios escribir especificaciones formales, consultas y reglas en un subconjunto del inglés que puede traducirse automáticamente a lógica de primer orden (FOL) y otros lenguajes formales. ACE fue desarrollado en la Universidad de Zúrich, con sus orígenes a finales de la década de 1990, y desde entonces se ha utilizado en diversos dominios, incluidos la especificación de software, la ingeniería de ontologías y la respuesta a preguntas. El objetivo principal de ACE es tender un puente entre el texto legible por humanos y la lógica interpretable por máquinas, haciendo que los métodos formales sean accesibles para no lógicos mientras se preserva la precisión.
ACE no es un lenguaje de forma libre; es un subconjunto estrictamente definido del inglés con una gramática y un vocabulario fijos. Cada oración en ACE debe ajustarse a un conjunto predefinido de reglas sintácticas, lo que garantiza que cada oración tenga exactamente una interpretación lógica. Esto elimina la ambigüedad inherente al lenguaje natural, como las ambigüedades de alcance, la resolución de anáforas y la polisemia léxica. Por ejemplo, la oración "Every customer who owns a car likes it" no es ambigua en ACE, con el pronombre "it" refiriéndose claramente al coche que posee el cliente. El lenguaje admite construcciones como la cuantificación universal y existencial, la negación, las declaraciones condicionales y los verbos modales, todo expresado de una manera que refleja el inglés cotidiano.
Historia y Desarrollo
El desarrollo de ACE comenzó a finales de la década de 1990 en el Instituto de Lingüística Computacional de la Universidad de Zúrich, dirigido por Norbert E. Fuchs y su equipo. La primera versión, ACE 1.0, se lanzó en 1997, y fue diseñada como una herramienta para la representación del conocimiento en el contexto del proyecto Attempto, que tenía como objetivo crear una interfaz de lenguaje natural para la programación lógica. Con los años, ACE evolucionó a través de varias versiones, siendo ACE 6.0 un hito notable en 2007 que introdujo una gramática más completa y una traducción mejorada a la lógica de primer orden. El lenguaje también se extendió para admitir estructuras de representación del discurso, permitiendo textos de múltiples oraciones. En 2010, el proyecto Attempto lanzó ACE 6.1, que incluía un analizador y un traductor capaces de generar FOL, y versiones posteriores añadieron soporte para OWL (Lenguaje de Ontologías Web) y SWRL (Lenguaje de Reglas de la Web Semántica). El desarrollo estuvo activo hasta alrededor de 2015, después de lo cual el proyecto se mantuvo principalmente como software de código abierto.
Sintaxis y Semántica
La sintaxis de ACE se define mediante una gramática libre de contexto que especifica las estructuras de oración permitidas. La gramática cubre oraciones declarativas, preguntas y formas imperativas, pero con restricciones estrictas sobre el orden de las palabras y los tipos de frases. Por ejemplo, los adjetivos deben preceder a los sustantivos, y las cláusulas relativas deben seguir al sustantivo que modifican. El vocabulario también está restringido; solo se permiten ciertas palabras comunes en inglés, y todos los términos deben definirse en un léxico. La semántica de ACE es composicional, lo que significa que el significado de una oración se construye a partir de los significados de sus partes. La traducción a FOL es determinista, utilizando un conjunto de reglas que mapean estructuras sintácticas a fórmulas lógicas. Por ejemplo, la oración "No dog barks" se traduce a ¬∃x(dog(x) ∧ bark(x)). ACE también admite referencias anafóricas, pero con la regla de que un pronombre debe referirse al antecedente compatible más reciente, lo que es una simplificación del discurso del lenguaje natural.
Aplicaciones y Casos de Uso
ACE se ha aplicado en varios dominios prácticos. En ingeniería de software, se ha utilizado para escribir especificaciones formales de requisitos del sistema, permitiendo a las partes interesadas validar requisitos sin necesidad de comprender lógica formal. Por ejemplo, la especificación "If a user is logged in and clicks the delete button, then the system deletes the user's account" puede escribirse en ACE y verificarse automáticamente para detectar consistencia. En la Web Semántica, ACE se ha utilizado para redactar ontologías OWL, donde los expertos del dominio pueden expresar axiomas de forma legible. El analizador de ACE puede generar archivos OWL, que luego se utilizan en sistemas de razonamiento. Además, ACE se ha empleado en sistemas de respuesta a preguntas, donde las consultas en lenguaje natural se traducen a consultas lógicas que pueden ejecutarse contra una base de conocimiento. Un ejemplo notable es el uso de ACE en el proyecto de verbalización OWL, que tiene como objetivo hacer que las ontologías sean comprensibles para no expertos.
Relación con Otros Lenguajes Formales
ACE se compara a menudo con otros lenguajes naturales controlados y notaciones formales. A diferencia de lenguajes de programación como Prolog o Lisp, ACE está diseñado para ser leído y escrito por humanos sin entrenamiento especial. Es más expresivo que lenguajes de consulta típicos como SQL, ya que puede representar declaraciones lógicas complejas que involucran cuantificadores e implicaciones. Sin embargo, ACE es menos expresivo que la lógica de primer orden completa, ya que carece de ciertas características como la cuantificación de orden superior y la igualdad. En el contexto de inteligencia artificial, ACE sirve como un puente entre el procesamiento del lenguaje natural y el razonamiento formal, complementando enfoques como modelos de lenguaje grandes, que son potentes pero a menudo producen resultados ambiguos o inconsistentes. Mientras que los modelos de lenguaje grandes pueden generar texto que se asemeja a ACE, no garantizan consistencia lógica, mientras que ACE asegura un mapeo uno a uno con la lógica.
Limitaciones y Direcciones Futuras
A pesar de sus fortalezas, ACE tiene limitaciones. La gramática estricta puede ser engorrosa para los usuarios, ya que deben aprender las construcciones permitidas y evitar expresiones comunes en inglés que no están permitidas. El vocabulario es limitado, y agregar nuevos términos requiere actualizar el léxico. Además, la traducción a FOL puede producir fórmulas complejas que son difíciles de leer para los humanos, incluso si la oración original en ACE es simple. A partir de mediados de la década de 2010, el desarrollo de ACE se ha ralentizado, sin lanzamientos importantes después de 2015. Sin embargo, las ideas detrás de ACE han influido en otros proyectos de lenguaje natural controlado, como PENG y CLCE. En la era de IA generativa, hay un interés renovado en usar lenguajes controlados para restringir la salida de modelos de redes neuronales, asegurando que el texto generado sea lógicamente sólido. El trabajo futuro puede integrar ACE con técnicas de aprendizaje automático para convertir automáticamente el lenguaje natural en ACE, pero en el estado actual, tales sistemas no están ampliamente implementados.