Geviertelte Erdbeeren und andere Merkmale der maschinellen Übersetzung: Um einen weiteren Schritt in Richtung automatisierter Küchen zu machen, müssen Sie die Technik lehren, um Rezepte zu verstehen, die in menschlicher Sprache und in menschlicher Logik geschrieben sind. Dazu müssen sie transformiert werden. Unter dem Schnitt reflektiert der Text das Problem, das bei einer Tasse Kaffee während der Diskussion eines verwandten Themas entstanden ist.

Automatisierte Küchen. Notwendige Stufen
Intelligente Küchengeräte erleichtern den Kochvorgang, aber die meisten Arbeiten werden noch ausgeführt: Waschen, Schneiden und Einlegen von Lebensmitteln, Mischen usw. Und wie ich nur sagen möchte: "Topf, kochen", und so dass sich alles von selbst wusch, schnitt, mischte und der Benutzer nur auf das Tonsignal warten und zum Essen gehen musste.
Jetzt erscheinen automatische Küchen nur noch im industriellen Maßstab, aber dies wird sehr bald ein Haushaltsniveau erreichen. Dazu müssen Sie mehrere Problemgruppen lösen, und diese Lösungen sollten erschwinglich sein.
Die erste Gruppe von Aufgaben besteht darin, der Küche die Möglichkeit zu geben, unabhängig vom Benutzer zu handeln.
Dieses Problem kann zum Beispiel gelöst werden, indem ein
System von Manipulatoren , ein
Förderband , in die Küche eingeführt wird;
Die zweite Gruppe von Aufgaben besteht darin, Computer Vision und ein Sensorsystem in der Küche einzuführen, um automatisch den Bereitschaftsgrad eines Gerichts oder eines Teils davon zu bestimmen.
Die dritte Aufgabengruppe ist die Verwaltungsschnittstelle. Die Aufgabe kann durch die Anwendung auf Smartphones sowie Sprachassistenten realisiert werden.
Und schließlich die vierte Gruppe - die Aufgabe der Küchenlogik des Verhaltens. Wie bringt man der Küche das Kochen bei? Zum Beispiel wird ein Roboterkoch von einer Person geschult - einem professionellen Koch. Er legt Sensoren an seine Hände und zeigt langsam, wie es geht. Die Maschine reproduziert dann ihre Aktionen bis ins kleinste Detail bis hin zum Händeschütteln. Natürlich sollten während der Verarbeitung zusätzliche Bewegungen entfernt werden, aber wenn der Programmierer etwas verpasst, wird der Roboterkoch eines Tages anhalten, um sich an der nicht vorhandenen Nase zu kratzen.
Um dem Roboter ein Rezept beizubringen, müssen die Bewegungen außerdem mehrmals wiederholt werden. Selbst wenn Sie dem Roboter einzelne Bewegungen beibringen, die er dann kombinieren kann, wird die Zeit für ein solches Training viel Zeit in Anspruch nehmen. Ganz zu schweigen von der strikten Einhaltung des Rezepts und anscheinend kalibrierter Zutaten: Es ist eine separate komplexe technische Aufgabe, dem Roboter zu ermöglichen, seine Augen aus Kartoffeln herauszusuchen. Und nach dem Kochen müssen Sie noch den Herd und das Geschirr spülen.
Ein Rezept ist ein Code.
Wenn Sie jetzt zum Stand der Dinge zurückkehren - d. H. Um die wirtschaftliche Komponente des Problems, Entwicklungsschwierigkeiten usw. zu berücksichtigen, wird klar, dass wir in absehbarer Zukunft nur intelligenten Haushaltsgeräten beibringen können, wie man das Rezept liest und anwendet. Dies erfordert die Konvertierung des Rezepts in Code. Aber klassische Software Java oder C ist hier kaum geeignet - sie können das Rezept beschreiben, aber wenn der Benutzer Änderungen daran vornehmen möchte, muss er sich entweder an den technischen Support wenden oder sich für Programmierkurse anmelden. Außerdem ist der klassische Code zu formal. Wenn in den Zutaten beispielsweise „getrocknete Pilze“ angegeben sind, werden frische Pilze nicht zum Kochen gebracht. Eine weitere Komplikation der Aufgabe ist die Tatsache, dass Rezepte der nationalen Küche in verschiedenen natürlichen Sprachen präsentiert werden.
Aber ich möchte dem Benutzer die Möglichkeit geben, ein für ihn interessantes Rezept im Internet zu finden, es herunterzuladen und in der Roboterküche - interpretieren Sie es richtig und wenden Sie es an. Die maximale Aufgabe ist die Fähigkeit der Küche, basierend auf den kulinarischen Vorlieben des Benutzers selbst nach Optionen zu suchen und diese anzubieten. Gute Kochrezepte sollten nicht nur eine Liste der Rohstoffe und Kochmethoden enthalten, sondern auch die Umgebungsbedingungen, unter denen die Produkte wachsen. Ein Gericht gehört nach vielen Kriterien zur nationalen Küche, einschließlich spezifischer Kochmethoden, Utensilien, Werkzeuge usw. Es wird eine schwierige Aufgabe sein, all diese Daten in eine richtige digitale Form umzuwandeln oder höchstwahrscheinlich zu interpretieren.
Also, welche Sprachen können verwendet werden, um Rezepte zu machen?
RDF
Bestehende Technologien zur formalisierten Darstellung von Wissen fallen in mehrere Gruppen von Strukturen.
Dazu gehört der Semantic Web-Ansatz mit seinen
OWL- und
RDF- Technologien. Online-Sammlungen verwandter Datensätze mit Semantic Web-Tools werden auch als verknüpfte Daten bezeichnet. Kürzlich gab es auf Habré
einen Artikel über dieses Konzept, daher werden wir uns nicht darauf konzentrieren. Viele Digitalisierungsprojekte basieren auf der Idee, eine
höhere Ontologie zu verwenden , die von
Ontologen in einem bestimmten Wissensbereich erweitert werden kann.
Betrachten Sie den Fall der Verwendung und Anwendung dieser Werkzeuge zur Digitalisierung der nationalen Küche. Die Hauptidee von RDF ist, dass sich das Internet von der Speicherung von Informationen, die nur vom Menschen wahrgenommen werden, wegbewegt und zu einem weltweiten Netzwerk interagierender Prozesse wird. Wie der Name schon sagt, ist RDF die Basis zum Ausdrücken von Ressourceninformationen. Zunächst zu Webdokumenten und verschiedenen Organisationen. Sein Formalismus basiert auf der Idee statischer Klassen und Eigenschaften. Es stellt sich die Frage: Wie vernünftig ist es, das Rezept als eine Einheit und nicht als einen komplexen Prozess mit Argumenten, Zeitberechnung, eingehenden Unterprozessen usw. zu betrachten. Für das Rezept wird dies eindeutig nicht ausreichen.
Schema.org
Der zweite Ansatz ist die Initiative
Schema.org , eine gemeinsame Anstrengung der Online-Community zur Erstellung, Pflege und Förderung von Programmen zur Strukturierung von Daten im Internet. Diese Initiative zielt darauf ab, ein standardisiertes Vokabular für allgemeine Metadaten bereitzustellen, die in Webressourcen veröffentlicht werden. Kochbezogene Webressourcen können die als
Referenz gespeicherten Metadaten der Rezeptklasse verwenden. Das Folgende ist ein Beispielrezeptcode, der von Google bereitgestellt wird:
<script type=> { : http: //schema.org/, : , : , : [ https: //example.com/photos/1x1/photo.jpg ], : { : , : }, : , : , : { : , : , : }, : , : , : , : { : , : , : , : }, : [ , , , , , , , , , ], : } </script>
Das Vokabular und Format von
Schema.org konzentriert sich hauptsächlich auf die Darstellung von Metadaten auf hoher Ebene in Webdokumenten. Ein richtig normalisierter semantischer Graph erfordert jedoch eine viel explizitere Darstellung von Konzepten. Die meisten Zeichenfolgenwerte in
Schema.org- Feldern sind natürliche Texte, die eine menschliche kognitive Interpretation erfordern. Solche Texte können von digitalen Systemen nicht direkt gelesen werden, ohne spezielle Werkzeuge zur Verarbeitung
natürlicher Sprache , die häufig fehleranfällig sind. Zur Veranschaulichung eignet sich die maschinelle Übersetzung von Google für eine Werbebuchung aus der Liste der Zutaten im obigen Rezeptbeispiel:
'fresh strawberries, quartered'
Die Übersetzung ins Russische hat eine völlig falsche semantische Bedeutung:
' , '
mit "geviertelt", verwendet im Sinne von "Wohnen", wie in "Unsere Truppen waren in Boston untergebracht", anstatt "In vier Teile schneiden".
Das Fehlen klar definierter Rollen von Objekten und eine explizite Identifizierung von Methoden erschweren die maschinelle Übersetzung des Rezepts erheblich.
Für unsere futuristische Aufgabe für digitale Rezepte - ein Szenario, in dem eine Robotermaschine Kochanweisungen befolgen könnte - kann eine einfache Textzeile keine Lösung sein.
Betrachten Sie eine typische Beschreibung einer Zutat:
'8 Granny Smith apples — peeled, cored and sliced'

Es ist offensichtlich, dass diese Textzeile viele klassifizierende Informationen enthält: die Rohzutat als Klasse, eine bestimmte Apfelsorte, die Anzahl in Stücken, eine Liste von Methoden, die auf jedes Teil angewendet werden sollten, um die Zutat normal zu verwenden: Entfernen von Samen, Schälen, Schneiden eines Objekts in Teile einer bestimmten Formen.
Der Formalismus von
Schema.org ist nicht ausdrucksstark genug, um den Kochvorgang in einen Programmcode zu schreiben. Um Rezepte für das Roboterkochen richtig zu digitalisieren, müssen wir die Beschreibung der Zutat von der Logik trennen
Der dritte Ansatz ist die kognitive Rezeptmodellierung.
Die traditionelle Art, ein Rezept zu schreiben, besteht darin, mit den Zutaten und Vorgängen zu beginnen, die Sie ausführen müssen. Dieser Ordnungs- und Beschreibungsstil wird als Imperativ oder prozedural bezeichnet. Ein deklarativer oder funktionaler Stil zur Beschreibung der Logik eines Prozesses beginnt normalerweise am oberen Rand der Ausführungspyramide, dem erwarteten nützlichen Ergebnis, das wir erzielen möchten.
Betrachten Sie die folgende vereinfachte Darstellung des klassischen russischen Pilzsuppenrezepts. Pfeile geben die Unterprozesse (manchmal alternative) an, die für den übergeordneten Prozess benötigt werden.

Die kognitive Interpretation kann verwirrend sein, selbst wenn wir versuchen, ein Rezept zu definieren. Der Begriff „Rezept“ hat mehrere kontextbezogene Bedeutungen. Es kann allgemein definiert werden, um das gewünschte Ergebnis zu erzielen. Wenn es im Zusammenhang mit dem Kochen verwendet wird, bezeichnet es eine Reihe von Anweisungen für die Zubereitung eines kulinarischen Gerichts. Somit kann dieses Konzept als ein Objekt mit bestimmten Eigenschaften betrachtet werden, wie z. B. den erforderlichen Bestandteilen und der Zeit. Alternativ kann es als ein technologischer Prozess betrachtet werden, der einige Anfangsdaten enthält, eine Reihe von Schritten durchläuft, die abgeschlossen werden müssen, und zu bestimmten Ergebnissen führt. Das Rezept enthält auch die Zeit, die zum Ausführen der Schritte benötigt wird, und eine Beschreibung der erforderlichen Utensilien.
Seit 2006 wurde das
Knowdy- Projekt mit dem Schwerpunkt auf der Verwaltung von Diagrammdaten erstellt, um einen optimalen Formalismus für die
Darstellung der komplexen Semantik einer natürlichen Sprache zu entwickeln.
Knowdy-Projekt
Knowdy ist ein Open-Source-Softwareprojekt einer Sprachforschungsgruppe in St. Petersburg, das sich mit der Entwicklung einer ultraschnellen Diagrammdatenbank befasst, mit der Sie direkt und effizient mit konzeptionellen Diagrammen arbeiten können, wobei Zwischenansichten wie SQL-Tabellen umgangen werden. Das Datenbankmodul ist in C implementiert und kann sowohl als Netzwerkdienst als auch als eigenständige Bibliothek für die eingebettete Umgebung verwendet werden.
Nach mehreren Jahren der Forschung und Entwicklung entwickelte das Forschungs- und Entwicklungsteam ein spezielles Datenformat für Knowdy DB namens GSL (Acronym General Semantics Language). GSL ist für die kompakte Speicherung konzeptioneller Grafiken optimiert. Es wird verwendet, um Daten zu speichern, Nachrichten zu senden und Informationen auszutauschen. Dieses Format ist nicht übermäßig ausführlich wie XML und etwas kompakter als JSON. Die Sprache akzeptiert einige Funktionen von Lisp S-Ausdrücken, jedoch mit einer großen Änderung der Semantik, da Sie berücksichtigen müssen, dass Diagramme keine Listen sind. Die Beschreibung in Klammern in GSL ist von besonderer Bedeutung, damit Benutzer nicht nur mehrstufige Gruppierungen, sondern auch CRUD-Operationen innerhalb des Datenbankspeichersystems ausdrücken können.
In der GSL-Beschreibung wird der Prozess als eine Funktion der ersten Klasse codiert, die benannt oder anonym sein kann, die Vererbung von der Basisfunktion unterstützt, Argumente und Unterprozesse aufweist, die parallel arbeiten können. Die folgenden Prozesse beschreiben eine Logik des gleichen Rezepts für russische Pilzsuppe.
{!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 verwendet einen dritten Ansatz. Sie können sich ein Rezept mit dem erforderlichen Grad an Formalismus vorstellen, um sowohl die Essenz als auch die Handlung zu beschreiben. Ein auf diese Weise in die Datenbank geschriebenes Rezept kann von der Technologie schnell heruntergeladen und angewendet werden. In den Geräten unserer Entwicklung, in denen Rezepte unterstützt werden, werden sie im GSL-Format aufgezeichnet. Es ist geplant, das neuronale Netzwerk für die Aufzeichnung von Rezepten der Völker der Welt zu trainieren, was den Austausch von Rezepten vereinfacht und eine technologische Grundlage für vollwertige automatisierte Küchen bietet.
Wir stoßen oft auf scheinbar triviale Aufgaben, deren Umsetzung nicht so einfach ist. Welche Sprache kann Ihrer Meinung nach zum Schreiben von Rezepten verwendet werden, die einerseits für Benutzer aus aller Welt zugänglich sind und andererseits von Maschinen verstanden und interpretiert werden?