Traducimos la receta al idioma multicooker

Fresas cuarteadas y otras características de la traducción automática: para dar un paso más hacia cocinas automatizadas, debe enseñar la técnica para comprender las recetas escritas en lenguaje humano y en lógica humana. Para hacer esto, necesitan ser transformados. Debajo del corte, el texto reflexiona sobre el problema que surgió de una taza de café durante la discusión de un tema relacionado.



Cocinas automatizadas. Etapas necesarias


Los electrodomésticos de cocina inteligentes facilitan el proceso de cocción, pero las personas aún hacen la mayor parte del trabajo: lavar, cortar y poner comida, mezclar, etc. Y como me gustaría decir: "Olla, cocinar", y así todo se lavó, cortó, mezcló, y el usuario solo tuvo que esperar la señal de sonido e ir a comer.
Ahora las cocinas automáticas solo aparecen a escala industrial, pero esto alcanzará un nivel de hogar muy pronto. Para hacer esto, debe resolver varios grupos de problemas, y estas soluciones deben ser asequibles.

El primer grupo de tareas es dar a la cocina la capacidad de actuar independientemente del usuario.
Este problema, por ejemplo, puede resolverse introduciendo en la cocina un sistema de manipuladores , un transportador ;

El segundo grupo de tareas es introducir la visión por computadora y un sistema de sensores en la cocina para determinar automáticamente el grado de preparación de un plato o parte del mismo.

El tercer grupo de tareas es la interfaz de gestión. La tarea se puede realizar a través de la aplicación en teléfonos inteligentes, así como en asistentes de voz.

Y finalmente, el cuarto grupo: la tarea de la lógica de comportamiento de la cocina. ¿Cómo enseñar a cocinar la cocina? Por ejemplo, un cocinero robot es entrenado por una persona, un chef profesional. Poniendo sensores en sus manos, lentamente muestra cómo hacerlo. Luego, la máquina reproduce sus acciones, hasta el más mínimo detalle, hasta darle la mano. Por supuesto, durante el procesamiento, se deben eliminar los movimientos adicionales, pero si el programador pierde algo, el chef robot se detendrá un día para rascarse la nariz inexistente.

Además, para enseñarle al robot una receta, los movimientos deben repetirse varias veces. Incluso si le enseñas al robot movimientos individuales, que luego puede combinar, entonces el tiempo para tal entrenamiento tomará mucho tiempo. Sin mencionar el cumplimiento más estricto de la receta y, aparentemente, de los ingredientes calibrados: permitir que el robot separe sus ojos de las papas es una tarea de ingeniería compleja por separado. Y después de cocinar, aún debe lavar la estufa y los platos.

Una receta es un código.


Si vuelve al estado actual de las cosas, es decir Para tener en cuenta el componente económico del problema, las dificultades de desarrollo, etc., queda claro que en el futuro previsible solo podemos enseñar a los electrodomésticos inteligentes cómo leer la receta y aplicarla. Esto requiere convertir la receta en código. Pero el software clásico Java o C no es adecuado aquí: pueden describir la receta, pero si el usuario desea hacer algún cambio, deberá ponerse en contacto con el soporte técnico o inscribirse en los cursos de programación. Además, el código clásico es demasiado formal. Por ejemplo, si los ingredientes dicen "hongos secos", los frescos no se cocinarán. Lo que complica aún más la tarea es el hecho de que las recetas de las cocinas nacionales se presentan en diferentes idiomas naturales.

Y me gustaría darle al usuario la oportunidad de encontrar una receta que le interese en la Web, descargarla y la cocina robótica: interpretarla correctamente y aplicarla. La tarea máxima es la capacidad de la cocina por sí sola, en función de las preferencias culinarias del usuario, para buscar y ofrecer opciones. Las buenas recetas de cocina no solo deben incluir una lista de ingredientes crudos y métodos de cocción, sino también las condiciones ambientales en las que crecen los productos. Un plato pertenece a la cocina nacional según muchos criterios, incluidos métodos de cocina específicos, utensilios, herramientas, etc. Transformar todos estos datos en una forma digital adecuada o, muy probablemente, interpretarlos será una tarea difícil.

Entonces, ¿qué idiomas se pueden usar para hacer recetas?

RDF


Las tecnologías existentes para la representación formal del conocimiento se dividen en varios grupos de estructuras.

Estos incluyen el enfoque de la Web Semántica con sus tecnologías OWL y RDF . Las colecciones en línea de conjuntos de datos relacionados que utilizan herramientas web semánticas también se conocen como datos vinculados. Recientemente en Habré hubo un artículo dedicado a este concepto, por lo tanto, no nos centraremos en él. Muchos proyectos de digitalización se basan en la idea de utilizar una ontología superior , que los ontólogos pueden ampliar en un campo específico de conocimiento.

Considere el caso del uso y la aplicación de estas herramientas para digitalizar las cocinas nacionales. La idea principal de RDF es que Internet se está alejando del almacenamiento de información percibida solo por los humanos, convirtiéndose en una red mundial de procesos de interacción. Como su nombre lo indica, RDF es la base para expresar información de recursos. En primer lugar, sobre documentos web y diversas organizaciones. Su formalismo se basa en la idea de clases y propiedades estáticas. Surge la pregunta: ¿qué tan razonable es considerar la receta como una entidad, y no como un proceso complejo con argumentos, cálculo de tiempo, subprocesos entrantes, etc. Para la receta esto claramente no será suficiente.

Schema.org


El segundo enfoque es la iniciativa Schema.org , un esfuerzo de colaboración de la comunidad en línea para crear, mantener y promover esquemas para estructurar datos en Internet. Esta iniciativa tiene como objetivo proporcionar un vocabulario estandarizado para metadatos comunes publicados en recursos web. Los recursos web relacionados con la cocina pueden usar los metadatos de la clase Receta almacenados por referencia . El siguiente es un código de receta de muestra proporcionado por Google:

<script type="application/ld+json"> { "@context": "<a href=" http: //schema.org/">http://schema.org/</a>", "@type": "Recipe", "name": "Strawberry-Mango Mesclun Recipe", "image": [ "<a href=" https: //example.com/photos/1x1/photo.jpg">https://example.com/photos/1x1/photo.jpg</a>" ], "author": { "@type": "Person", "name": "scoopnana" }, "datePublished": "2008-03-03", "description": "Mango, strawberries, and sweetened dried cranberries are a vibrant addition to mixed greens tossed with an oil and balsamic vinegar dressing. ", "aggregateRating": { "@type": "AggregateRating", "ratingValue": "5", "reviewCount": "52" }, "prepTime": "PT15M", "totalTime": "PT14M", "recipeYield": "12 servings", "nutrition": { "@type": "NutritionInformation", "servingSize": "1 bowl", "calories": "319 cal", "fatContent": "20.2 g" }, "recipeIngredient": [ "1/2 cup sugar", "3/4 cup canola oil", "1 teaspoon salt", "1/4 cup balsamic vinegar", "8 cups mixed salad greens", "2 cups sweetened dried cranberries", "1/2 pound fresh strawberries, quartered", "1 mango — peeled, seeded, and cubed", "1/2 cup chopped onion", "1 cup slivered almonds" ], "recipeInstructions": "\n1. Place the sugar, oil, salt, and vinegar in a jar with a lid.Seal jar, and shake vigorously to mix.\n2.In a large bowl, mix salad greens, sweetened dried cranberries, strawberries, mango, and onion.To serve, toss with dressing and sprinkle with almonds. " } </script> 

El vocabulario y el formato adoptados por Schema.org se centran principalmente en la presentación de metadatos de alto nivel en documentos web. Sin embargo, un gráfico semántico correctamente normalizado requiere una representación de conceptos mucho más explícita. La mayoría de los valores de cadena en los campos de Schema.org son textos naturales que requieren una interpretación cognitiva humana. Este texto no puede ser leído directamente por sistemas digitales sin herramientas especiales de procesamiento de lenguaje natural , que a menudo son propensas a errores. A modo de ilustración, la traducción automática de Google es adecuada para una línea de pedido de la lista de ingredientes en el ejemplo de receta anterior:

 'fresh strawberries, quartered' 

La traducción al ruso da un significado semántico completamente erróneo:

 ' , ' 

con "descuartizado", utilizado en el sentido de "vivienda", como en "Nuestras tropas se alojaron en Boston", en lugar de "Cortar en cuatro".

La ausencia de roles claramente definidos de los objetos y una identificación explícita de los métodos hace que la tarea de traducción automática de la receta sea mucho más difícil.

Para nuestra tarea futurista para recetas digitales, un escenario en el que una máquina robótica podría seguir las instrucciones de cocción, una simple línea de texto no puede ser una solución.

Considere una descripción típica de un ingrediente:

 '8 Granny Smith apples — peeled, cored and sliced' 



Es obvio que esta línea de texto contiene mucha información de clasificación: el ingrediente crudo como clase, una variedad específica de manzanas, el número en pedazos, una lista de métodos que deben aplicarse a cada parte para usar el ingrediente normalmente: quitar semillas, pelar, cortar un objeto en partes de un determinado formas

El formalismo de Schema.org no es lo suficientemente expresivo como para escribir el proceso de cocción en algún código de programa. Para digitalizar adecuadamente las recetas para la cocina robótica, necesitamos separar la descripción del ingrediente de la lógica.

El tercer enfoque es el modelado de recetas cognitivas.


La forma tradicional de escribir una receta es comenzar con los ingredientes y las operaciones que debe completar. Este estilo de orden y descripción se conoce como imperativo o de procedimiento. Un estilo declarativo o funcional de describir la lógica de un proceso generalmente comienza desde la parte superior de la pirámide de ejecución, el resultado útil esperado que queremos lograr.

Considere la siguiente presentación simplificada de la receta clásica de sopa de champiñones rusa. Las flechas indican los subprocesos (a veces alternativos) necesarios para el proceso padre.



La interpretación cognitiva puede ser confusa incluso cuando intentamos definir una receta. El término "receta" tiene varios significados contextuales. Se puede definir en un sentido general como una forma de obtener el resultado deseado. Cuando se usa en el contexto de la cocina, denota un conjunto de instrucciones para preparar un plato culinario. Por lo tanto, este concepto puede considerarse como un objeto con ciertas propiedades, como los ingredientes y el tiempo necesarios. Como alternativa, puede considerarse como un proceso tecnológico que tiene algunos datos iniciales, pasa por una serie de pasos que deben completarse y conduce a ciertos resultados. La receta también incluye el tiempo necesario para completar los pasos y una descripción de los utensilios necesarios.

Desde 2006, para desarrollar un formalismo óptimo para expresar la semántica compleja de un lenguaje natural, se ha creado el proyecto Knowdy , enfocado en la gestión de datos gráficos.

Proyecto Knowdy


Knowdy es un proyecto de software de código abierto de un grupo de investigación lingüística en San Petersburgo que se dedica al desarrollo de una base de datos de gráficos ultrarrápida que le permite trabajar de manera directa y eficiente con gráficos conceptuales, evitando las vistas intermedias, como las tablas SQL. El motor de base de datos se implementa en C y se puede usar como un servicio de red y como una biblioteca independiente para el entorno integrado.

Después de varios años de investigación y desarrollo, el equipo de investigación y desarrollo ideó un formato de datos especial para Knowdy DB llamado GSL (acrónimo General Semantics Language). GSL está optimizado para el almacenamiento compacto de gráficos conceptuales. Se utiliza para almacenar datos, enviar mensajes e intercambiar información. Este formato no es demasiado detallado, como XML, y es un poco más compacto que JSON. El lenguaje acepta algunas características de las expresiones S de Lisp, pero con una gran modificación de la semántica, ya que debe tener en cuenta que los gráficos no son listas. La descripción entre corchetes en GSL es de particular importancia, ya que permite a los usuarios expresar no solo agrupaciones de varios niveles, sino también operaciones CRUD dentro del sistema de almacenamiento de la base de datos.

En la descripción de GSL, el proceso está codificado como una función de la primera clase, que puede ser nombrada o puede ser anónima, admite la herencia de la función base, tiene argumentos y subprocesos que pueden funcionar en paralelo. Los procesos a continuación describen cierta lógica de la misma receta para la sopa de champiñones rusa.

 {!proc prepare mushroom soup mix [_gloss {ru    }] {is cooking by boiling} {arg cut-mushrooms {do prepare mushroom mix}} {arg cut-potatoes {do prepare potato mix}} {arg cut-onions {do prepare onion mix}} {do _put [_gloss {ru       .}] {obj _all} {target-loc container}}} {!proc prepare mushroom mix [_gloss {ru   }] {arg clean-mushrooms {do clean mushrooms}} {do _cut [_gloss {ru    .}] {obj clean-mushrooms} {form slice {size 1.5 {unit cm}}}}} 

R4S utiliza un tercer enfoque. Le permite imaginar una receta con el grado necesario de formalismo, para describir tanto la esencia como la acción. La tecnología puede descargar y aplicar rápidamente una receta escrita de esta manera en la base de datos. En los dispositivos de nuestro desarrollo, donde se admiten recetas, se graban en formato GSL. Los planes son capacitar a la red neuronal para grabar recetas de los pueblos del mundo, lo que simplificará el intercambio de recetas y proporcionará una base tecnológica para cocinas automatizadas completas.

A menudo nos encontramos con tareas aparentemente triviales, cuya implementación no es tan simple. ¿Qué idioma crees que se puede usar para escribir recetas, por un lado accesible para usuarios de todo el mundo, y por otro, entendido e interpretado por máquinas?

Source: https://habr.com/ru/post/es425023/


All Articles