La programación en lenguaje natural ( NLP ) es una forma de programación asistida por ontologías en términos de oraciones en lenguaje natural , por ejemplo, inglés . [1] Un documento estructurado con contenido, secciones y subsecciones para explicaciones de oraciones forma un documento de PNL, que en realidad es un programa de computadora . Los lenguajes naturales y las interfaces de usuario de lenguaje natural incluyen Inform 7 , un lenguaje de programación natural para hacer ficción interactiva, Shakespeare , un lenguaje de programación natural esotérico al estilo de las obras de William Shakespeare.y Wolfram Alpha , un motor de conocimiento computacional, que utiliza entrada de lenguaje natural. [ cita requerida ] Algunos métodos para la síntesis de programas se basan en la programación en lenguaje natural. [2]
Interpretación
La unidad de declaración más pequeña en PNL es una oración. Cada oración se expresa en términos de conceptos de la ontología subyacente, atributos en esa ontología y objetos nombrados en letras mayúsculas . En un texto de PNL, cada oración se compila sin ambigüedades en una llamada a procedimiento en el lenguaje de programación de alto nivel subyacente , como MATLAB , Octave , SciLab , Python , etc.
Los lenguajes simbólicos como Wolfram Language son capaces de interpretar el procesamiento de consultas mediante frases. Esto puede permitir solicitudes interactivas como la implementada en Wolfram Alpha . [3] [4] La diferencia entre estos y PNL es que este último construye un solo programa o una biblioteca de rutinas que se programan a través de oraciones en lenguaje natural usando una ontología que define las estructuras de datos disponibles en un lenguaje de programación de alto nivel.
Un texto de ejemplo de un programa de lenguaje natural en inglés es el siguiente:
Si U_ es 'smc01-control', haga lo siguiente. Defina los pesos de superficie Alfa como "[0.5, 0.5]". Inicialice la matriz Phi como una 'matriz unitaria'. Defina J como la 'matriz de inercia' de Spc01. Calcule la matriz J2 como la inversa de J. Calcule el error de velocidad de posición Ve y el error de velocidad angular Oe del estado dinámico X, referencia de guía Xnow. Defina la superficie de deslizamiento de la junta G2 a partir del error de velocidad de posición Ve y el error de velocidad angular Oe utilizando los pesos superficiales Alpha. Calcule la función de signo suavizado SG2 a partir de la superficie de deslizamiento de la junta G2 con umbral de signo 0.01. Calcule la fuerza dinámica especial F a partir del estado dinámico X y los pesos superficiales Alfa. Calcule el par de control T y la fuerza de control U de la matriz J2, pesos superficiales Alfa, fuerza dinámica especial F, función de signo suavizado SG2. Termina las acciones condicionales.
que define un esquema de control de retroalimentación utilizando un método de control de modo deslizante .
Paradigma de software
La programación en lenguaje natural es un método de escritura de software de arriba hacia abajo. Sus etapas son las siguientes:
- Definición de una ontología - taxonomía - de conceptos necesarios para describir tareas en el tema abordado. Cada concepto y todos sus atributos se definen en palabras de lenguaje natural. Esta ontología definirá las estructuras de datos que la PNL puede usar en oraciones.
- Definición de una o más frases de alto nivel en términos de conceptos de la ontología. Estas frases se utilizan posteriormente para invocar las actividades más importantes del tema.
- Definición de cada una de las oraciones de nivel superior en términos de una secuencia de oraciones.
- Definiendo cada una de las oraciones de nivel inferior en términos de otras oraciones o por una oración simple de la forma Ejecutar código "...". donde ... representa un código en términos del lenguaje de programación de alto nivel asociado.
- Repitiendo el paso anterior hasta que no queden oraciones sin definir. Durante este proceso, cada una de las oraciones puede clasificarse para pertenecer a una sección del documento que se producirá en formato HTML o Latex para formar el programa final en lenguaje natural.
- Probar el significado de cada oración ejecutando su código usando objetos de prueba.
- Proporcionar una biblioteca de llamadas a procedimientos (en el lenguaje de alto nivel subyacente) que se necesitan en las definiciones de código de algunos significados de oraciones de bajo nivel.
- Proporcionar un título, datos de autor y compilar las oraciones en un archivo HTML o LaTex .
- Publicar el programa en lenguaje natural como una página web en Internet o como un archivo PDF compilado a partir del documento LaTex.
Valor de publicación de programas y documentos en lenguaje natural
Un programa en lenguaje natural es una descripción formal precisa de algún procedimiento que creó su autor. Es legible por humanos y también puede ser leído por un agente de software adecuado. Por ejemplo, un agente asistente personal de software puede leer una página web en formato PNL a una persona y puede pedirle al agente que ejecute algunas frases, es decir, que lleve a cabo alguna tarea o responda una pregunta. Hay un agente lector disponible para la interpretación en inglés de documentos de PNL basados en HTML que una persona puede ejecutar en su computadora personal .
Contribución de los programas de lenguaje natural al conocimiento de las máquinas
Una clase de ontología es un programa de lenguaje natural que no es un concepto en el sentido en que los humanos usan conceptos. Los conceptos de una PNL son ejemplos (muestras) de conceptos humanos genéricos. Cada oración en un programa de lenguaje natural es (1) indica una relación en un modelo mundial o (2) lleva a cabo una acción en el entorno o (3) lleva a cabo un procedimiento computacional o (4) invoca un mecanismo de respuesta en respuesta a una pregunta.
Un conjunto de oraciones de PNL, con una ontología asociada definida, también se puede utilizar como un pseudocódigo que no proporciona los detalles en ningún lenguaje de programación de alto nivel subyacente. En tal aplicación, las oraciones utilizadas se convierten en abstracciones de alto nivel (conceptualizaciones) de procedimientos informáticos que son independientes del lenguaje informático y de la máquina.
Ver también
- Lenguaje natural controlado
- Lenguaje libre de contexto
- Lenguaje específico de dominio (o DSL)
- Programación del usuario final
- Representación del conocimiento
- Procesamiento natural del lenguaje
- Generación de código fuente
- Lenguaje de programación de muy alto nivel
- Lenguajes de programación con sintaxis similar al inglés
- AppleScript
- Intento de inglés controlado
- COBOL
- ClearTalk
- FLOW-MATIC
- HyperTalk
- Informar 7
- JOSS
- SenseTalk
- Software AG
- Transcripción
- Lenguaje de consulta estructurado (o SQL)
- xTalk
Referencias
- ^ Miller, LA (1981). "Programación en lenguaje natural: estilos, estrategias y contrastes". Revista de sistemas de IBM . 20 (2): 184–215. doi : 10.1147 / sj.202.0184 .
- ^ Desai, Aditya, et al. " Programa de síntesis utilizando lenguaje natural ". Actas de la 38ª Conferencia Internacional de Ingeniería de Software. ACM, 2016.
- ^ Wolfram Alpha - cómo funciona (parte 2) Computer Weekly, 4 de junio de 2009
- ^ Wolfram Alpha calcula las respuestas Tech Crunch, 8 de marzo de 2009
Bibliografía
- Libros
- Programación en lenguaje natural de agentes y dispositivos robóticos: publicación para agentes y humanos en inglés por SM Veres, ISBN 978-0-9558417-0-5 , Londres, junio de 2008.
- Dijkstra, Edsger W. (1979). "Sobre la estupidez de la" programación en lenguaje natural " ". Construcción del programa . Apuntes de conferencias en informática. 69 . págs. 51–53. doi : 10.1007 / bfb0014656 . ISBN 3-540-09251-X.
- Lieberman, Henry; Liu, Hugo (2006). "Estudios de viabilidad para la programación en lenguaje natural" . Desarrollo del usuario final . Serie de interacción persona-computadora. 9 . págs. 459–473 . doi : 10.1007 / 1-4020-5386-x_20 . ISBN 978-1-4020-4220-1.
- Halpern, Mark (1990). "Lenguaje natural y redundancia en la programación". Binding Time: Seis estudios en tecnología y entorno de programación . Serie Ablex en ciencia computacional. Libros de intelecto. ISBN 9780893916916.
- Ponencias en conferencias
- Veres, SM; Molnar, L. (2010). "Documentos para agentes inteligentes en inglés". Inteligencia artificial y aplicaciones . doi : 10.2316 / p.2010.674-122 . ISBN 978-0-88986-817-5.
- Control de modo deslizante de naves espaciales autónomas. (mitad escrita en inglés) por SM Veres y NK Lincoln, Proc. TAROS'2008, Towards Autonomous Robotic Systems , Edimburgo, 1 a 3 de septiembre de 2008.
- Veres, Sandor M. (2010). "Sistemas de control autónomos con capacidad de misión en los océanos, en el aire y en el espacio". Tecnología de la información inspirada en el cerebro . Estudios en Inteligencia Computacional. 266 . págs. 1-10. doi : 10.1007 / 978-3-642-04025-2_1 . ISBN 978-3-642-04024-5.
- Pulido-Prieto, Oscar; Juárez-Martínez, Ulises (2017). "Una encuesta de tecnologías de programación naturalista". Encuestas de computación ACM . 50 (5): 1–35. doi : 10.1145 / 3109481 . S2CID 2078759 .
- Síntesis de programas a partir de especificaciones de lenguaje natural
- Raza, Mohammad, Sumit Gulwani y Natasa Milic-Frayling. " Síntesis del programa composicional a partir del lenguaje natural y los ejemplos ". IJCAI. 2015.
- Green, Cordell. " Un resumen del sistema de síntesis del programa de la ISP ". IJCAI. Vol. 5. 1977.
enlaces externos
- Inglés Script (inactivo desde 2016)
- Programación en inglés sencillo Lenguaje de programación que utiliza oraciones en inglés en ASCII.
- SEMPER : un conjunto de herramientas para entrenar analizadores semánticos
- sEnglish - "Escribir programas en inglés"
- sysbrain.org - Comunidad de usuarios de CAT de sEnglish, MATLAB y Cognitive Agents Toolbox ("ha sido [...] renovado")
- wy-lang.org - "Lenguaje de programación para los chinos antiguos"
- ¿Qué tan natural debería ser una interfaz natural? - pensamientos sobre lo "natural" de la interfaz Ubiquity (inactiva desde 2009)
- Metafor convierte el inglés en código (inactivo desde 2005)
- Formato, sistema, métodos y aplicaciones de representación del conocimiento informático : patente de EE. UU. Con respecto a: hipervínculos a archivos XML .who / qué / dónde / cuándo / cómo que incorporan NL