Morangos esquartejados e outros recursos da tradução automática: para dar outro passo em direção às cozinhas automatizadas, você precisa ensinar a técnica a entender as receitas escritas na linguagem humana e na lógica humana. Para fazer isso, eles precisam ser transformados. Sob o corte, o texto reflete sobre o problema que nasceu com uma xícara de café durante a discussão de um tópico relacionado.

Cozinhas automatizadas. Etapas necessárias
Utensílios de cozinha inteligentes facilitam o processo de cozimento, mas as pessoas ainda fazem a maior parte do trabalho: lavar, cortar e colocar alimentos neles, misturar etc. E como eu gostaria de dizer: “Pote, cozinhe”, e para que tudo se lavasse, corte, misturasse, e o usuário só tivesse que esperar pelo sinal sonoro e ir fazer uma refeição.
Agora, as cozinhas automáticas estão aparecendo apenas em escala industrial, mas isso atingirá o nível doméstico muito em breve. Para fazer isso, você precisa resolver vários grupos de problemas, e essas soluções devem ser acessíveis.
O primeiro grupo de tarefas é dar à cozinha a capacidade de agir independentemente do usuário.
Este problema, por exemplo, pode ser resolvido introduzindo na cozinha um
sistema de manipuladores , um
transportador ;
O segundo grupo de tarefas é introduzir a visão por computador e um sistema de sensores na cozinha para determinar automaticamente o grau de prontidão de um prato ou parte dele.
O terceiro grupo de tarefas é a interface de gerenciamento. A tarefa pode ser realizada através do aplicativo em smartphones, bem como assistentes de voz.
E, finalmente, o quarto grupo - a tarefa da lógica do comportamento da cozinha. Como ensinar a cozinha a cozinhar? Por exemplo, um cozinheiro robô é treinado por uma pessoa - um chef profissional. Colocando sensores em suas mãos, ele mostra lentamente como fazê-lo. A máquina então reproduz suas ações, nos mínimos detalhes, até apertar as mãos. Obviamente, durante o processamento, movimentos extras devem ser removidos, mas se o programador perder alguma coisa, o chef do robô parará um dia para coçar o nariz inexistente.
Além disso, para ensinar ao robô uma receita, os movimentos devem ser repetidos várias vezes. Mesmo se você ensinar movimentos individuais ao robô, que ele poderá combinar, o tempo para esse treinamento levará muito tempo. Sem mencionar a estrita conformidade com a receita e, aparentemente, os ingredientes calibrados: permitir que o robô tire os olhos da batata é uma tarefa complexa de engenharia separada. E depois de cozinhar, você ainda precisa lavar o fogão e a louça.
Uma receita é um código.
Se você voltar ao estado atual, ou seja, para levar em consideração o componente econômico da questão, as dificuldades de desenvolvimento etc., fica claro que, no futuro próximo, só poderemos ensinar eletrodomésticos inteligentes a ler a receita e aplicá-la. Isso requer a conversão da receita em código. Mas o software clássico Java ou C é pouco adequado aqui - eles podem descrever a receita, mas se o usuário quiser fazer alterações, ele precisará entrar em contato com o suporte técnico ou se inscrever em cursos de programação. Além disso, o código clássico é muito formal. Por exemplo, se os ingredientes disserem “cogumelos secos”, os frescos não entrarão na culinária. Para complicar ainda mais a tarefa, o fato de as receitas da culinária nacional serem apresentadas em diferentes idiomas naturais.
E gostaria de dar ao usuário a oportunidade de encontrar uma receita interessante para ele na Web, fazer o download e a cozinha robótica - interpretá-la e aplicar corretamente. A tarefa máxima é a capacidade da cozinha por conta própria, com base nas preferências culinárias do usuário, de procurar e oferecer opções. De um modo bom, as receitas culinárias não devem incluir apenas uma lista de ingredientes crus e métodos de cozimento, mas também as condições ambientais em que os produtos crescem. O prato pertence à culinária nacional de acordo com muitos critérios, incluindo métodos específicos de cozinha, utensílios, ferramentas, etc. Transformar todos esses dados em um formato digital adequado ou, provavelmente, interpretá-los, será uma tarefa difícil.
Então, quais idiomas podem ser usados para fazer receitas?
RDF
As tecnologias existentes para a representação formalizada do conhecimento se enquadram em vários grupos de estruturas.
Isso inclui a abordagem da Web Semântica com suas tecnologias
OWL e
RDF . As coleções online de conjuntos de dados relacionados usando ferramentas da Web Semântica também são conhecidas como Dados Vinculados. Recentemente, em Habré, havia
um artigo dedicado a esse conceito, portanto, não vamos nos concentrar nele. Muitos projetos de digitalização são criados com base na idéia de usar alguma
ontologia superior , que pode ser expandida por
ontologistas em um campo específico do conhecimento.
Considere o caso do uso e aplicação dessas ferramentas para digitalizar a culinária nacional. A principal idéia do RDF é que a Internet está se afastando do armazenamento de informações percebidas apenas pelos seres humanos, tornando-se uma rede mundial de processos em interação. Como o nome indica, o RDF é a base para expressar informações de recursos. Primeiro de tudo, sobre documentos da web e várias organizações. Seu formalismo é baseado na idéia de classes e propriedades estáticas. Surge a pergunta: quão razoável é considerar a receita como uma entidade, e não como um processo complexo com argumentos, cálculo de tempo, subprocessos recebidos, etc. Para a receita, isso claramente não será suficiente.
Schema.org
A segunda abordagem é a iniciativa
Schema.org , um esforço colaborativo da comunidade online para criar, manter e promover esquemas para estruturar dados na Internet. Essa iniciativa visa fornecer um vocabulário padronizado para metadados comuns publicados em recursos da web. Os recursos da Web relacionados à culinária podem usar os metadados da classe Recipe, que são armazenados por
referência . A seguir, é apresentado um exemplo de código de receita fornecido pelo Google:
<script type=> { : http: //schema.org/, : , : , : [ https: //example.com/photos/1x1/photo.jpg ], : { : , : }, : , : , : { : , : , : }, : , : , : , : { : , : , : , : }, : [ , , , , , , , , , ], : } </script>
O vocabulário e o formato adotados pelo
Schema.org concentram-se principalmente na apresentação de metadados de alto nível em documentos da web. No entanto, um gráfico semântico adequadamente normalizado requer uma representação muito mais explícita dos conceitos. A maioria dos valores de string nos campos
Schema.org são textos naturais que requerem uma interpretação cognitiva humana. Esse texto não pode ser lido diretamente por sistemas digitais sem ferramentas especiais de processamento de
linguagem natural , que geralmente são propensas a erros. A título de ilustração, a tradução automática do Google é adequada para um item de linha da lista de ingredientes no exemplo de receita acima:
'fresh strawberries, quartered'
A tradução para russo dá um significado semântico completamente errado:
' , '
com “esquartejado”, usado no sentido de “moradia”, como em “Nossas tropas estavam alojadas em Boston”, em vez de “Cortado em quatro”.
A ausência de papéis claramente definidos dos objetos e uma identificação explícita de métodos tornam a tarefa de tradução automática da receita muito mais difícil.
Para nossa tarefa futurista de receitas digitais - um cenário em que uma máquina robótica pode seguir as instruções de cozimento, uma simples linha de texto não pode ser uma solução.
Considere uma descrição típica de um ingrediente:
'8 Granny Smith apples — peeled, cored and sliced'

É óbvio que esta linha de texto contém muitas informações classificadoras: o ingrediente bruto como uma classe, uma variedade específica de maçãs, o número em pedaços, uma lista de métodos que devem ser aplicados a cada parte para usar o ingrediente normalmente: remover sementes, descascar, cortar um objeto em partes de uma certa formulários.
O formalismo do
Schema.org não
é expressivo o suficiente para gravar o processo de cozimento em algum código do programa. Para digitalizar corretamente as receitas da culinária robótica, precisamos separar a descrição do ingrediente da lógica
A terceira abordagem é a modelagem cognitiva de receitas.
A maneira tradicional de escrever uma receita é começar com os ingredientes e operações que você deve concluir. Esse estilo de ordem e descrição é conhecido como imperativo ou processual. Um estilo declarativo ou funcional de descrever a lógica de um processo geralmente começa no topo da pirâmide de execução, o resultado útil esperado que queremos alcançar.
Considere a seguinte apresentação simplificada da receita clássica de sopa de cogumelos russa. As setas indicam os subprocessos (às vezes alternativos) necessários para o processo pai.

A interpretação cognitiva pode ser confusa, mesmo quando tentamos definir uma receita. O termo "receita" tem vários significados contextuais. Pode ser definido em um sentido geral como uma maneira de obter o resultado desejado. Quando usado no contexto do cozimento, indica um conjunto de instruções para a preparação de um prato culinário. Assim, esse conceito pode ser considerado como um objeto com certas propriedades, como os ingredientes e o tempo necessários. Como alternativa, pode ser considerado como um processo tecnológico que possui alguns dados iniciais, passa por uma série de etapas que devem ser concluídas e leva a determinados resultados. A receita também inclui o tempo necessário para concluir as etapas e uma descrição dos utensílios necessários.
Desde 2006, a fim de desenvolver um formalismo ideal para expressar a semântica complexa de uma linguagem natural, foi criado o projeto
Knowdy , focado no gerenciamento de dados gráficos.
Knowdy Project
O Knowdy é um projeto de software de código aberto de um grupo de pesquisa linguística em São Petersburgo, envolvido no desenvolvimento de um banco de dados de gráficos ultrarrápido que permite trabalhar direta e eficientemente com gráficos conceituais, ignorando qualquer visualização intermediária, como tabelas SQL. O mecanismo de banco de dados é implementado em C e pode ser usado como um serviço de rede e como uma biblioteca independente para o ambiente incorporado.
Após vários anos de pesquisa e desenvolvimento, a equipe de pesquisa e desenvolvimento criou um formato de dados especial para o Knowdy DB, denominado GSL (sigla em inglês, General Semantics Language). O GSL é otimizado para armazenamento compacto de gráficos conceituais. É usado para armazenar dados, enviar mensagens e trocar informações. Esse formato não é muito detalhado, como XML, e um pouco mais compacto que o JSON. A linguagem aceita alguns recursos das expressões S do Lisp, mas com uma grande modificação da semântica, pois você precisa ter em mente que os gráficos não são listas. A descrição entre colchetes no GSL é de particular importância, permitindo que os usuários expressem não apenas agrupamentos de vários níveis, mas também operações CRUD no sistema de armazenamento de banco de dados.
Na descrição da GSL, o processo é codificado como uma função da primeira classe, que pode ser nomeada ou pode ser anônima, suporta herança da função base, possui argumentos e subprocessos que podem funcionar em paralelo. Os processos abaixo descrevem alguma lógica da mesma receita para a sopa russa de cogumelos.
{!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}}}}}
O R4S usa uma terceira abordagem. Permite imaginar uma receita com o grau necessário de formalismo, para descrever a essência e a ação. Uma receita gravada dessa maneira no banco de dados pode ser baixada e aplicada rapidamente pela tecnologia. Nos dispositivos de nosso desenvolvimento, onde as receitas são suportadas, elas são gravadas no formato GSL. Os planos são treinar a rede neural para registrar receitas dos povos do mundo, o que simplificará o intercâmbio de receitas e fornecerá uma base tecnológica para cozinhas automatizadas completas.
Muitas vezes encontramos tarefas aparentemente triviais, cuja implementação não é tão simples. Qual idioma você acha que pode ser usado para escrever receitas, por um lado acessíveis a usuários de todo o mundo e, por outro lado, entendidas e interpretadas por máquinas?