La programación en lenguaje natural ( PLN ) es una forma de programación asistida por ontología 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 PLN, que en realidad es un programa de computadora . La programación en lenguaje natural no debe confundirse con la interfaz de lenguaje natural o el control de voz donde primero se escribe un programa y luego se comunica a través del lenguaje natural utilizando una interfaz agregada. En PLN, la funcionalidad de un programa se organiza solo para la definición del significado de las oraciones. Por ejemplo, la PLN se puede utilizar para representar todo el conocimiento de un robot autónomo. Una vez hecho esto, sus tareas pueden ser programadas por sus usuarios para que el robot pueda ejecutarlas de forma autónoma mientras mantiene las reglas de comportamiento prescritas según lo determinado por el usuario del robot. Estos robots se denominan robots transparentes [2] ya que su razonamiento es transparente para los usuarios y esto desarrolla confianza en los robots. El uso del lenguaje natural y las interfaces de usuario en lenguaje natural incluyen Inform 7 , un lenguaje de programación natural para crear 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 entradas en lenguaje natural. [ cita requerida ] Algunos métodos para la síntesis de programas se basan en la programación en lenguaje natural. [3]
Interpretación
La unidad de enunciado más pequeña en PNL es una oración. Cada oración se enuncia en términos de conceptos de la ontología subyacente, atributos de esa ontología y objetos nombrados en letras mayúsculas . En un texto de PNL, cada oración se compila de manera inequívoca en una llamada a un 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 realizar un procesamiento interpretado de consultas mediante sentencias, lo que permite realizar peticiones interactivas como la implementada en Wolfram Alpha . [4] [5] La diferencia entre estos y el NLP es que este último construye un único programa o una biblioteca de rutinas que se programan mediante sentencias de lenguaje natural utilizando 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 idioma inglés es el siguiente:
Si U_ es 'smc01-control', haga lo siguiente. Defina los pesos de superficie Alpha como "[0.5, 0.5]". Inicialice la matriz Phi como una 'matriz de unidad'. 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 a partir del estado dinámico X, referencia de guía Xnow. Defina la superficie de deslizamiento de la articulación G2 a partir del error de velocidad de posición Ve y el error de velocidad angular Oe utilizando los pesos de superficie Alpha. Calcule la función de signo suavizado SG2 a partir de la superficie de deslizamiento de la articulación G2 con umbral de signo 0.01. Calcule la fuerza dinámica especial F a partir del estado dinámico X y los pesos de superficie Alpha. Calcule el par de control T y la fuerza de control U a partir de la matriz J2, pesos de superficie Alpha, fuerza dinámica especial F, función de signo suavizado SG2. Termine las acciones condicionales.
que define un esquema de control de retroalimentación utilizando un método de control de modo deslizante .
Paradigma del 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 del lenguaje natural. Esta ontología definirá las estructuras de datos que el PLN puede utilizar en oraciones.
- Definición de una o más oraciones de nivel superior en términos de conceptos de la ontología. Estas oraciones 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.
- Definir cada una de las oraciones de nivel inferior en términos de otras oraciones o mediante 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.
- Repetir el paso anterior hasta que no queden oraciones sin definir. Durante este proceso, cada una de las oraciones se puede clasificar para pertenecer a una sección del documento que se va a 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 utilizando objetos de prueba.
- Proporcionar una biblioteca de llamadas a procedimientos (en el lenguaje de alto nivel subyacente) que son necesarias en las definiciones de código de algunos significados de oraciones de bajo nivel.
- Proporcionar un título, datos del 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 de lenguaje natural es una descripción formal precisa de algún procedimiento que su autor creó. Es legible para humanos y también puede ser leído por un agente de software adecuado. Por ejemplo, una página web en formato NLP puede ser leída por un agente de asistente personal de software para una persona y esta puede pedirle que ejecute algunas oraciones, es decir, que lleve a cabo alguna tarea o responda una pregunta. Existe un agente de lectura disponible para la interpretación en inglés de documentos NLP 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 los conceptos. Los conceptos en un lenguaje natural son ejemplos (muestras) de conceptos humanos genéricos. Cada oración en un programa de lenguaje natural (1) enuncia una relación en un modelo del mundo 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 sentencias de procesamiento del lenguaje natural, con una ontología asociada definida, también se puede utilizar como pseudocódigo que no proporciona los detalles en ningún lenguaje de programación de alto nivel subyacente. En una aplicación de este tipo, las sentencias 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.
Inteligencia artificial en la programación en lenguaje natural
Los investigadores han comenzado a experimentar con entornos de programación de lenguaje natural que utilizan indicaciones en lenguaje sencillo y luego utilizan IA (específicamente, modelos de lenguaje grandes) para convertir el lenguaje natural en código formal. Por ejemplo, Spatial Pixel creó un entorno de programación de lenguaje natural para convertir el lenguaje natural en código P5.js a través de la API de OpenAI. En 2021, OpenAI desarrolló un entorno de programación de lenguaje natural para su modelo de lenguaje grande de programación llamado Codex.
Véase 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 del lenguaje natural
- Generación de código fuente
- Lenguaje de programación de muy alto nivel
- Lenguajes de programación con sintaxis similar al inglés
- Script de Apple
- Intento de control del inglés
- COBOL
- Hablar claro
- FLUJO-MATICO
- Hiperconversación
- Informar 7
- JOSÉ
- Hablar con sentido
- Software AG
- Transcripción
- Lenguaje de consulta estructurado (o SQL)
- xHablar
Referencias
- ^ Miller, LA (1981). "Programación en lenguaje natural: estilos, estrategias y contrastes". IBM Systems Journal . 20 (2): 184–215. doi :10.1147/sj.202.0184.
- ^ Desarrollo de robots fiables y confiables. "robots transparentes" }
- ^ Desai, Aditya, et al. "Síntesis de programas mediante lenguaje natural". Actas de la 38.ª Conferencia internacional sobre 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 de programas . Apuntes de clase en informática. Vol. 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 de usuario final . Serie de interacción hombre-ordenador. Vol. 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 programación". Binding Time: Six Studies in Programming Technology & Milieu . Serie Ablex en ciencia computacional. Intellect Books. ISBN 9780893916916.
- Ponencias en congresos
- 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. (escrito a medias en inglés) por SM Veres y NK Lincoln, Proc. TAROS'2008, Towards Autonomous Robotic Systems , Edimburgo, 1–3 de septiembre de 2008.
- Veres, Sandor M. (2010). "Sistemas de control autónomos capaces de cumplir misiones 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. Vol. 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). "Un estudio de tecnologías de programación naturalista". ACM Computing Surveys . 50 (5): 1–35. doi :10.1145/3109481. S2CID 2078759.
- Síntesis de programas a partir de especificaciones en lenguaje natural
- Raza, Mohammad, Sumit Gulwani y Natasa Milic-Frayling. "Síntesis de programas compositivos a partir de lenguaje natural y ejemplos". IJCAI. 2015.
- Green, Cordell. "Un resumen del sistema de síntesis del programa PSI". IJCAI. Vol. 5. 1977.
Enlaces externos
- Escritura inglesa (inactiva desde 2016)
- Programación en inglés sencillo Lenguaje de programación que utiliza oraciones en inglés en ASCII.
- SEMPRE – un conjunto de herramientas para entrenar analizadores semánticos
- sysbrain.com – Editor en C++/ROS para programación de robots para desarrollar robots transparentes.
- wy-lang.org – “Lenguaje de programación para los antiguos chinos”
- ¿Hasta qué punto debe ser natural una interfaz natural? – Reflexiones sobre cuán “natural” es 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 estadounidense relativa a hipervínculos a archivos XML .who/what/where/when/how que incorporan NL