DE102021129845A1 - Verfahren und einrichtung zum konstruieren programmabgeleiteter semantischer graphen - Google Patents

Verfahren und einrichtung zum konstruieren programmabgeleiteter semantischer graphen Download PDF

Info

Publication number
DE102021129845A1
DE102021129845A1 DE102021129845.8A DE102021129845A DE102021129845A1 DE 102021129845 A1 DE102021129845 A1 DE 102021129845A1 DE 102021129845 A DE102021129845 A DE 102021129845A DE 102021129845 A1 DE102021129845 A1 DE 102021129845A1
Authority
DE
Germany
Prior art keywords
nodes
abstraction
level
current
psg
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021129845.8A
Other languages
English (en)
Inventor
Shengtian Zhou
Fangke Ye
Roshni G. Iyer
Jesmin Jahan Tithi
Justin Gottschlich
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102021129845A1 publication Critical patent/DE102021129845A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/22Matching criteria, e.g. proximity measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/027Frames
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Stored Programmes (AREA)
  • Machine Translation (AREA)

Abstract

Offenbart werden Verfahren, Vorrichtungen, Systeme und Herstellungsartikel, um programmabgeleitete semantische Graphen zu konstruieren und zu vergleichen, umfassend einen Blattknotenerzeuger zum Identifizieren eines ersten Satzes von Knoten innerhalb eines Parse-Baums und Einstellen einer ersten Abstraktionsebene eines programmabgeleiteten semantischen Graphen (PSG), sodass sie den ersten Satz von Knoten enthält, einen Abstraktionsebenenbestimmer zum Zugreifen auf einen zweiten Satz von Knoten, wobei der zweite Satz von Knoten den Satz von Knoten im PSG beinhalten soll, Erzeugen eines dritten Satz von Knoten , wobei der dritte Satz von Knoten den Satz möglicher Knoten auf einer Abstraktionsebene beinhalten soll, Bestimmen, ob die Abstraktionsebene deterministisch ist, einen regelbasierten Abstraktionsebenenerzeuger zum Konstruieren der Abstraktionsebene als Reaktion auf das Bestimmen, dass die Abstraktionsebene deterministisch ist, und einen PSG-Komparator zum Zugreifen auf einen ersten PSG und einen zweiten PSG und Bestimmen, ob der erste PSG und der zweite PSG eine Ähnlichkeitsschwelle erfüllen.

Description

  • GEBIET DER OFFENBARUNG
  • Diese Offenbarung betrifft allgemein Codedarstellungen und insbesondere ein Verfahren und eine Einrichtung zum Konstruieren programmabgeleiteter semantischer Graphen.
  • HINTERGRUND
  • In den letzten Jahren ist ein Wunsch entstanden, grafische Darstellungen von Computerprogrammen zu erstellen. Programmierer wollen Programme grafisch darstellen, um die von dem Programm ausgeführten Prozesse und/oder Verfahren zu vermitteln. Diese Darstellungen können ermöglichen, dass künstliche Intelligenzsysteme (z. B. Deep Learning Systeme) verschiedene Codierungsaufgaben wie automatische Softwarebug-Detektion oder Codestrukturvorschläge durchführen. Beispiele für vorherige grafische Darstellungen von Programmen sind u. a. Entscheidungsbäume, abstrakte Syntaxbäume, Kripke-Strukturen und Rechenbaumlogikdiagramme.
  • Figurenliste
    • 1 ist eine schematische Darstellung eines Prozesses zum Konstruieren programmabgeleiteter semantischer Knotengraphen.
    • 2 ist ein Blockdiagramm, das einen programmabgeleiteten Graphenkonstruktor darstellt.
    • 3 ist ein Blockdiagramm, das eine beispielhafte Implementierung des regelbasierten Abstraktionsebenenerzeugers von 2 darstellt.
    • 4 ist ein Blockdiagramm, das eine beispielhafte Implementierung des lernbasierten Abstraktionsebenenerzeugers von 2 darstellt.
    • 5 ist ein Flussdiagramm, das maschinenlesbare Anweisungen darstellt, die ausgeführt werden können, um den programmabgeleiteten Graphenkonstruktor von 2 zu implementieren.
    • 6 ist ein Flussdiagramm, das maschinenlesbare Anweisungen darstellt, die ausgeführt werden können, um den regelbasierten Abstraktionsebenenerzeuger von 3 zu implementieren.
    • 7 ist ein Flussdiagramm, das maschinenlesbare Anweisungen darstellt, die ausgeführt werden können, um den lernbasierten Abstraktionsebenenerzeuger von 4 zu implementieren.
    • 8 ist ein Blockdiagramm einer beispielhaften Verarbeitungsplattform, die zum Ausführen der Anweisungen aus 5 strukturiert ist, um den programmabgeleiteten Graphenkonstruktor aus 2 zu implementieren.
    • 9 ist ein Blockdiagramm einer beispielhaften Softwareverteilungsplattform zum Verteilen von Software (z. B. Software, die den beispielhaften computerlesbaren Anweisungen der 5, 6 und 7 entspricht) an Client-Vorrichtungen wie Konsumenten (z. B. für Lizenz, Verkauf und/oder Nutzung), Einzelhändler (z. B. für Verkauf, Neuverkauf, Lizenz und/oder Sublizenz) und/oder Originalausrüstungshersteller (OEMs) (z. B. für den Einbau in Produkte, die beispielsweise an Einzelhändler und/oder an Direktkunden zu verteilen sind).
  • Die Figuren sind nicht maßstabsgetreu. Stattdessen kann die Dicke der Schichten oder Bereiche in den Zeichnungen vergrößert sein. Obwohl die Figuren Schichten und Bereiche mit sauberen Linien und Grenzen zeigen, können einige oder alle dieser Linien und/oder Grenzen idealisiert sein. In Wirklichkeit können die Grenzen und/oder Linien nicht beobachtbar, gemischt und/oder unregelmäßig sein. Im Allgemeinen werden über die Zeichnung(en) und die beigefügte schriftliche Beschreibung hinweg dieselben Bezugszeichen verwendet, um auf dieselben oder ähnliche Teile Bezug zu nehmen.
  • Sofern nicht speziell anders angegeben, werden hier Deskriptoren, wie etwa „erste(r/s)“, „zweite(r/s)“, „dritte(r/s)“ usw. verwendet, ohne irgendeine Bedeutung von Priorität, physischer Reihenfolge, Anordnung in einer Liste und/oder Reihenfolge zu unterstellen oder anderweitig anzugeben, sondern werden lediglich als Bezeichnungen und/oder willkürliche Namen verwendet, um Elemente zum einfachen Verständnis der offenbarten Beispiele zu unterscheiden. Bei manchen Beispielen kann der Deskriptor „erste(r/s)“ verwendet werden, um auf ein Element in der ausführlichen Beschreibung zu verweisen, während auf dasselbe Element in einem Anspruch mit einem anderen Deskriptor wie etwa „zweite(r/s)“ oder „dritte(r/s)“ Bezug genommen werden kann. In solchen Fällen versteht es sich, dass solche Deskriptoren lediglich zum eindeutigen Identifizieren jener Elemente verwendet werden, die zum Beispiel ansonsten einen gleichen Namen teilen könnten.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die Maschinenprogrammierung (MP) befasst sich mit der Automatisierung der Softwareentwicklung. In den letzten Jahren erleichtert das Entstehen großer Daten technologische Fortschritte auf dem Gebiet der MP. Eine der zentralen Herausforderungen bei der MP ist die Codeähnlichkeit, bei der erkannt werden soll, ob zwei Codeschnipsel semantisch ähnlich sind. Ein genaues Codeähnlichkeitssystem kann verschiedene Anwendungen ermöglichen, die vom automatischen Softwarepatchen bis zur Codeempfehlung reichen. Solche Systeme können die Produktivität der Programmierer verbessern, indem Programmierer in verschiedenen Programmierphasen unterstützt werden (z. B. Entwicklung, Einsatz, Debugging usw.). Um genaue Codeähnlichkeitssysteme aufzubauen, besteht ein Kernproblem darin, eine geeignete Darstellung aufzubauen, die den semantischen Fingerabdruck eines Codes genau erfassen kann.
  • Gängige Darstellungen sind u. a. Graphendarstellungen (z. B. Bäume, Sequenz von Programm-Token usw.). Es wurde gezeigt, dass eine Baumdarstellung von Code effektiv codesemantische Informationen erfassen kann, die ein Lernsystem zum Lernen einer Codesemantik unterstützen können. Eines der Probleme dieser Arbeit besteht jedoch darin, dass die Darstellung, die kontextbewusste semantische Struktur (CASS: context-aware semantic structure) genannt wird, obwohl sie beim Erfassen einer Codesemantik wirksam ist, möglicherweise keine direkten Codeerklärungen liefert, die Programmierer beim Verständnis und Vergleichen von Codes unterstützen können. Um bessere Erklärungen für Code bereitzustellen, schlägt diese Anmeldung das Konzept programmabgeleiteter semantischer Graphen vor, das eine Graphendarstellung von Code ist, der aus unterschiedlichen Abstraktionsebenen besteht, um die Codesemantik genau zu erfassen. Hierin offenbarte beispielhafte Ansätze mischen regelbasierte und lernbasierte Ansätze, um die Knoten eines programmabgeleiteten semantischen Graphen auf verschiedenen Abstraktionsebenen zu identifizieren und aufzubauen.
  • 1 ist eine schematische Veranschaulichung eines Prozesses zum Konstruieren programmabgeleiteter semantischer Knotengraphen. In den folgenden Beispielen vollzieht sich der Prozess zum Konstruieren programmabgeleiteter semantischer Knotengraphen in drei Phasen. In diesen Beispielen ist die erste Phase Phase eins: Quellcode-Parsing 104. In Phase eins greift die Anwendung auf ein Codeschnipsel 108 eines Computerprogramms, einer Anwendung usw. zu. Das Codeschnipsel 108 kann in einer beliebigen Computerprogrammierungssprache (z. B. Java, C, C++, Python usw.) vorliegen. Ein beispielhafter Parser 112 greift auf das Codeschnipsel 108 zu und wandelt das Codeschnipsel in einen Pars-Baum 116 um.
  • Die zweite Phase ist in diesen Beispielen Phase zwei: Knotenkonstruktion für die erste Abstraktionsebene 120 In diesen Beispielen greift ein Blattknotenerzeuger 124 auf die Syntaxknoten im Parse-Baum 116 zu. Der Blattknotenerzeuger 124 legt die Syntaxknoten im Parse-Baum 116 als Blattknoten 128 im programmabgeleiteten semantischen Graphen fest.
  • Die dritte und letzte Phase in diesen Beispielen ist Phase drei: Knotenkonstruktion für höhere Abstraktionsebenen 132 In diesen Beispielen ist Phase drei: Die Knotenkonstruktion für höhere Abstraktionsebenen 132 bestimmt eine von drei durchzuführenden Optionen basierend darauf, ob die aktuelle Abstraktionsebene deterministisch ist und ob Aufmerksamkeit für die aktuelle Abstraktionsebene verwendet werden sollte. In diesen Beispielen ist die erste Option eine regelbasierte Konstruktion für eine deterministische Abstraktionsebene 136. In der regelbasierten Konstruktion für eine deterministische Abstraktionsebene 136 bestimmt der programmabgeleitete semantische Graphenkonstruktor, dass die aktuelle Abstraktionsebene deterministisch ist. Damit eine Abstraktionsebene deterministisch ist, weisen die Eingangsknoten 137 zu der aktuellen Abstraktionsebene einen einzigen möglichen Elternknoten im Satz möglicher Knoten auf der aktuellen Abstraktionsebene auf. Der regelbasierte Mapper 138 greift auf den Satz von Eingangsknoten 137 zu und bestimmt einen Elternknoten für jeden Eingangsknoten aus dem Satz möglicher Knoten auf der aktuellen Abstraktionsebene. Der regelbasierte Mapper 138 speichert den bestimmten Satz von Knoten auf der aktuellen Abstraktionsebene 139 in dem programmabgeleiteten semantischen Graphen.
  • Die zweite Möglichkeit in Phase drei: Die Knotenkonstruktion für höhere Abstraktionsebenen 132 ist eine lernbasierte Konstruktion für nichtdeterministische Abstraktionsebenen ohne Aufmerksamkeit 140. In der lernbasierten Konstruktion für nichtdeterministische Abstraktionsebenen ohne Aufmerksamkeit 140 greift der lernbasierte Mapper 142 auf den Satz von Eingangsknoten 137 zu und bestimmt den Satz von Knoten für die aktuelle Abstraktionsebene 139, die in den programmabgeleiteten semantischen Graphen auf der aktuellen Abstraktionsebene aufzunehmen sind. Für eine Abstraktionsebene, die nichtdeterministisch ist, weist mindestens ein Eingangsknoten in dem Satz von Eingangsknoten 137 mindestens zwei mögliche Elternknoten im Satz möglicher Knoten auf der aktuellen Abstraktionsebene auf. In diesen Beispielen verwendet der lernbasierte Mapper 142 ein probabilistisches Modell, um einen der mindestens zwei möglichen Elternknoten zu bestimmen, der in den Satz von Knoten auf der aktuellen Abstraktionsebene 139 aufzunehmen ist.
  • Die dritte Möglichkeit in Phase drei: Die Knotenkonstruktion für höhere Abstraktionsebenen 132 ist eine lernbasierte Konstruktion für nichtdeterministische Ebenen mit der Aufmerksamkeit 144. Bei der lernbasierten Konstruktion für nichtdeterministische Ebenen mit Aufmerksamkeit 144 greift ein lernbasierter Mapper 146 auf einen Satz von Eingangsknoten 137 zu. Der lernbasierte Mapper 146 bestimmt eine Teilmenge von Eingangsknoten 145, die beim Bestimmen des Satzes von Knoten zu verwenden sind, der auf der aktuellen Abstraktionsebene 139 aufzunehmen ist. Der lernbasierte Mapper 146 legt eine Gewichtung für Eingangsknoten in dem Satz von Eingangsknoten 137 basierend auf der Wahrscheinlichkeit fest, dass ein spezifizierter Knoten einen Elternteil in der aktuellen Abstraktionsebene aufweist. Der lernbasierte Mapper 146 greift auf den Teilsatz von Eingangsknoten 145 zu, die einen Schwellenwert basierend auf der Gewichtung der Eingangsknoten erfüllen. Der lernbasierte Mapper 146 bestimmt einen Satz von Knoten, der in die aktuelle Abstraktionsebene 139 aufzunehmen ist, aus einem Satz möglicher Knoten auf der aktuellen Abstraktionsebene basierend auf dem Teilsatz von Eingangsknoten 145.
  • 2 ist ein Blockdiagramm, das einen beispielhaften programmabgeleiteten Graphenkonstruktor 204 darstellt. Der programmabgeleitete Graphenkonstruktor 204 greift auf ein Codeschnipsel von einer Anwendung oder einem Computerprogramm zu. Die Anwendung bzw. das Computerprogramm läuft in einer Computersprache (z. B. Java, C, C++, Python usw.). Der programmabgeleitete Graphenkonstruktor 204 erzeugt einen programmabgeleiteten semantischen Graphen basierend auf dem Codeschnipsel. Der programmabgeleitete semantische Graph ist ein hierarchischer Knotengraph, der Beziehungen zwischen Befehlen in dem Codeschnipsel und abstrakteren Befehlsgruppen anzeigt. Der programmabgeleitete Graphenkonstruktor 204 beinhaltet einen beispielhaften Parse-Baumkonstruktor 208, einen beispielhaften Syntaxknotenbestimmer 212, einen beispielhaften Abstraktionsebenenmodifikator 216, einen beispielhaften Blattknotenerzeuger 220, einen beispielhaften Abstraktionsebenenbestimmer 224, einen beispielhaften regelbasierten Abstraktionsebenenerzeuger 228, einen beispielhaften lernbasierten Abstraktionsebenenerzeuger 232 und einen programmabgeleiteten Graphenkomparator 236.
  • Der beispielhafte Parse-Baumkonstruktor 208 des programmabgeleiteten Graphenkonstruktors 204 des veranschaulichten Beispiels aus 2 wandelt ein Programmcodeschnipsel in einen Parse-Baum um. Wie hierin verwendet, ist ein Programmcodeschnipsel als eine Sequenz aus einer oder mehreren Anweisungen definiert, die durch Programmcode repräsentiert werden. In manchen Beispielen beinhaltet der Parse-Baum die Wörter, mathematischen Operationen und/oder Formatierung, die in dem Segment oder Programmcodeschnipsel vorhanden sind. In manchen Beispielen beinhaltet der Parse-Baum Knoten, die syntaktische Werte (z. B. mathematische Operationen, ganze Zahlen, If-else-Aussagen usw.) sind.
  • Der beispielhafte Syntaxknotenbestimmer 212 des programmabgeleiteten semantischen Graphenkonstruktors 204 des veranschaulichten Beispiels von 2 iteriert den Parse-Baum und bestimmt die Syntaxknoten, die im Parse-Baum vorhanden sind. Der Syntaxknotenbestimmer 212 speichert die Syntaxknoten an einem temporären Ort. In manchen Beispielen beinhaltet der Parse-Baum Knoten, die syntaktische Werte (z. B. mathematische Operationen, ganze Zahlen, If-else-Aussagen usw.) beinhalten.
  • Der beispielhafte Abstraktionsebenenmodifikator 216 des programmabgeleiteten semantischen Graphenkonstruktors 204 des veranschaulichten Beispiels aus 2 legt das Abstraktionsebene auf einen Standardstartwert (z. B. 0, 1, 10 usw.) fest. In den folgenden Beispielen wird der Standardstartwert 0 sein. Der beispielhafte Blattknotenerzeuger 220 des programmabgeleiteten semantischen Graphenkonstruktors 204 legt die Syntaxknoten, die durch den Syntaxknotenbestimmer 212 identifiziert werden, als Blattknoten in dem programmabgeleiteten semantischen Graphen fest. Der Abstraktionsebenenmodifikator 216 erhöht den aktuellen Wert der Abstraktionsebene.
  • Der beispielhafte Abstraktionsebenenbestimmer 224 des programmabgeleiteten semantischen Graphenkonstruktors 204 des veranschaulichten Beispiels aus 2 bestimmt, ob Abstraktionsebenen in dem programmabgeleiteten semantischen Graphen definiert wurden. In manchen Beispielen werden Abstraktionsebenen definiert, wenn Kinderknoten mit einem gemeinsamen Elternknoten verbunden sind. In anderen Beispielen werden Abstraktionsebenen definiert, wenn die definierte abstrakteste Abstraktionsebene die Knoten „Operationen zum Handhaben von Daten“ und „Codestruktur und Fluss“ beinhaltet. In diesen Beispielen zeigt der Knoten „Operationen zum Handhaben von Daten“ auf Kinderknoten wie etwa Algorithmen, mathematische Operationen, ganze Zahlen usw. Auch in diesen Beispielen zeigt der Knoten „Codestruktur und Fluss“ auf Kinderknoten wie etwa bedingte Aussagen, Rückgabeaussagen, Vergleiche usw.
  • Der Abstraktionsebenenbestimmer 224 bestimmt, ob die aktuelle Abstraktionsebene deterministisch ist. In manchen Beispielen beschreibt eine deterministische Abstraktionsebene eine Abstraktionsebene, bei der Knoten mit einem Elternteil auf der Abstraktionsebene nur auf einen einzigen Elternteil zeigen. Zum Beispiel werden die Knoten while, for und do while nur auf die Schleife des einzigen Elternteils abgebildet. Auch in diesen Beispielen beschreibt eine nichtdeterministische Abstraktionsebene eine Abstraktionsebene, bei der mindestens ein Knoten, der auf einen Elternteil auf der aktuellen Abstraktionsebene zeigt, auf mindestens zwei Elternteile auf der aktuellen Abstraktionsebene zeigt.
  • Der beispielhafte regelbasierte Abstraktionsebenenerzeuger 228 des programmabgeleiteten semantischen Graphenkonstruktors 204 des veranschaulichten Beispiels aus 2 erzeugt einen Knotensatz, der die Knoten enthält, die auf der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen zu verwenden sind. In manchen Beispielen greift der regelbasierte Abstraktionsebenenerzeuger 228 auf die Knoten zu, die gegenwärtig in dem programmabgeleiteten semantischen Graphen auf niedrigeren Abstraktionsebenen vorhanden sind, und bestimmt, ob die Knoten Elternknoten auf der aktuellen Abstraktionsebene aufweisen. In diesen Beispielen weist der regelbasierte Abstraktionsebenenerzeuger 228 einen Satz der möglichen Knoten auf der aktuellen Abstraktionsebene auf und bestimmt die Knoten auf niedrigeren Abstraktionsebenen in dem programmabgeleiteten semantischen Graphen, die einen Elternteil in dem Satz der möglichen Knoten auf der aktuellen Abstraktionsebene aufweisen. Falls zum Beispiel der Satz der möglichen Knoten auf der aktuellen Abstraktionsebene den Knoten „Arithmetische Operationen“ enthält und der Satz von Knoten auf niedrigeren Abstraktionsebenen des programmabgeleiteten semantischen Graphen den Knoten % enthält, würde der regelbasierte Abstraktionsebenenerzeuger 228 den Knoten „Arithmetische Operationen“ zu dem programmabgeleiteten semantischen Graphen auf der aktuellen Abstraktionsebene hinzufügen.
  • Der beispielhafte lernbasierte Abstraktionsebenenerzeuger 232 des programmabgeleiteten semantischen Graphenkonstruktors 204 des veranschaulichten Beispiels von 2 erzeugt einen Knotensatz, der Knoten enthält, die auf der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen zu verwenden sind. In manchen Beispielen greift der lernbasierte Abstraktionsebenenerzeuger 232 auf einen Satz möglicher Knoten auf der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen zu. Da in diesen Beispielen bestimmt wurde, dass die Abstraktionsebene nichtdeterministisch ist, weist mindestens ein Knoten im Satz von Knoten auf niedrigeren Abstraktionsebenen des programmabgeleiteten semantischen Graphen mehrere mögliche Elternknoten im Satz möglicher Knoten auf der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen auf.
  • In manchen Beispielen ist der lernbasierte Abstraktionsebenenerzeuger 232 ein Multi-Label-Klassifikationsmodell (z. B. Entscheidungsbaum, tiefes neuronales Netzwerk usw.). In diesen Beispielen bestimmt der lernbasierte Abstraktionsebenenerzeuger 232, welcher der Knoten in dem Satz möglicher Knoten auf der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen in den Satz von Knoten auf der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen aufzunehmen ist. In diesen Beispielen identifiziert der lernbasierte Abstraktionsebenenerzeuger 232, welche Knoten in den Satz von Knoten auf der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen aufgenommen werden könnten, und bestimmt, welche Knoten in den Satz von Knoten auf der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen aufzunehmen sind.
  • In manchen Beispielen ist die Eingabe in den lernbasierten Abstraktionsebenenerzeuger 232 der Satz von Knoten auf niedrigeren Abstraktionsebenen in dem programmabgeleiteten semantischen Graphen. In anderen Beispielen wird eine Gewichtung auf Knoten auf niedrigeren Abstraktionsebenen in dem programmabgeleiteten semantischen Graphen angewendet. In diesen Beispielen ist die Eingabe in den lernbasierten Abstraktionsebenenerzeuger 232 der Satz von Knoten auf niedrigeren Abstraktionsebenen des programmabgeleiteten semantischen Graphen, der eine Gewichtungsschwelle erfüllt. In manchen Beispielen ist die Gewichtungsschwelle ein Gewichtungswert, der die Gewichtung eines Knotens mit dem Gewichtungswert vergleicht. Falls der Gewichtungswert zum Beispiel auf 0,8 eingestellt ist, würden sich Knoten auf niedrigeren Abstraktionsebenen des programmabgeleiteten semantischen Graphen mit einer Gewichtung größer als 0,8 in der Eingabe des lernbasierten Abstraktionsebenenerzeugers 232 befinden.
  • In anderen Beispielen könnte die Eingabe des lernbasierten Abstraktionsebenenerzeugers 232 ein Prozentsatz oder eine Menge der Knoten mit höchster Gewichtung auf den unteren Abstraktionsebenen des programmabgeleiteten semantischen Graphen sein. Beispielsweise könnte der lernbasierte Abstraktionsebenenerzeuger 232 die 30 Knoten mit der höchsten Gewichtung in dem Satz von Knoten auf den niedrigeren Abstraktionsebenen abrufen. In einem anderen Beispiel könnte der lernbasierte Abstraktionsebenenerzeuger 232 die schwersten 30 % der Knoten in dem Satz von Knoten auf den niedrigeren Abstraktionsebenen abrufen. Falls es zum Beispiel 50 Knoten auf den unteren Abstraktionsebenen des programmabgeleiteten semantischen Graphen gibt, könnte der lernbasierte Abstraktionsebenenerzeuger 232 die 15 Knoten mit der größten Gewichtung greifen. Nachdem der lernbasierte Abstraktionsebenenerzeuger 232 den Satz von Knoten erzeugt hat, der in den programmabgeleiteten semantischen Graphen auf der aktuellen Abstraktionsebene aufzunehmen ist, geht der Prozess zur nächsten Abstraktionsebene über.
  • 3 ist ein Blockdiagramm, das eine beispielhafte Implementierung des regelbasierten Abstraktionsebenenerzeugers 228 aus 2 darstellt. Der regelbasierte Abstraktionsebenenerzeuger 228 erzeugt eine Abstraktionsebene basierend auf Eingangsknoten und einem Satz möglicher Knoten auf der aktuellen Abstraktionsebene. Der regelbasierte Abstraktionsebenenerzeuger 228 weist einen beispielhaften Knotenselektor 304, einen beispielhaften Abstraktionsebenenknotenkomparator 308 und einen beispielhaften Abstraktionsebenenerzeuger 312 auf.
  • Der beispielhafte Knotenselektor 304 des regelbasierten Abstraktionsebenenerzeugers 228 des veranschaulichten Beispiels aus 3 bestimmt, ob es verbleibende Eingangsknoten in der Datenstruktur gibt. Als Reaktion auf das Bestimmen, dass die Datenstruktur Eingangsknoten enthält, wählt der Knotenselektor 304 einen der Eingangsknoten aus der Datenstruktur aus.
  • Der beispielhafte Abstraktionsebenenknotenkomparator 308 des regelbasierten Abstraktionsebenenerzeugers 228 des veranschaulichten Beispiels aus 3 bestimmt, ob der ausgewählte Eingangsknoten auf einen beliebigen der möglichen Knoten auf der aktuellen Abstraktionsebene abgebildet wird. In manchen Beispielen enthält der Abstraktionsebenenknotenkomparator 308 Sätze für die Abstraktionsebenen, die mögliche Knoten auf der spezifizierten Abstraktionsebene enthalten. Falls zum Beispiel der Satz der möglichen Knoten auf der aktuellen Abstraktionsebene den Knoten „Arithmetische Operationen“ enthält und der Satz von Knoten auf niedrigeren Abstraktionsebenen des programmabgeleiteten semantischen Graphen den Knoten % enthält, fügt der regelbasierte Abstraktionsebenenerzeuger 228 den Knoten „Arithmetische Operationen“ zu dem programmabgeleiteten semantischen Graphen auf der aktuellen Abstraktionsebene hinzu. Falls der Abstraktionsebenenknotenkomparator 308 bestimmt, dass der ausgewählte Eingangsknoten auf einen identifizierten Knoten innerhalb des Satzes möglicher Knoten auf der aktuellen Abstraktionsebene abgebildet wird, wird der identifizierte Knoten zu dem programmabgeleiteten semantischen Graphen hinzugefügt. Andernfalls wird der Eingangsknoten ignoriert.
  • Falls der Abstraktionsebenenknotenkomparator 308 einen Knoten identifiziert, der auf der aktuellen Abstraktionsebene aufzunehmen ist, fügt der beispielhafte Abstraktionsebenenerzeuger 312 des regelbasierten Abstraktionsebenenerzeugers 228 den identifizierten Knoten zu der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen hinzu. In manchen Beispielen fügt der Abstraktionsebenenerzeuger 312 den identifizierten Knoten zu einer Datenstruktur (z. B. Satz, Array usw.) hinzu, die Knoten enthält, die als auf der aktuellen Abstraktionsebene aufzunehmend identifiziert wurden. Der Knotenselektor 304 entfernt den ausgewählten Eingangsknoten aus der Datenstruktur, die durch den regelbasierten Abstraktionsebenenerzeuger 228 erzeugt wird.
  • Falls der Abstraktionsebenenknotenkomparator 308 keinen Knoten identifiziert, der auf der aktuellen Abstraktionsebene aufzunehmen ist, ignoriert der Abstraktionsebenenerzeuger 312 den ausgewählten Eingangsknoten. Der Knotenselektor 304 entfernt den ausgewählten Eingangsknoten aus der Datenstruktur, die durch den regelbasierten Abstraktionsebenenerzeuger 228 erzeugt wurde.
  • 4 ist ein Blockdiagramm, das eine beispielhafte Implementierung des lernbasierten Abstraktionsebenenerzeugers 232 von 2 repräsentiert. Der lernbasierte Abstraktionsebenenerzeuger 232 erzeugt eine Abstraktionsebene für den programmabgeleiteten semantischen Graphen basierend auf einem Satz von Eingangsknoten und einem Satz möglicher Knoten auf der aktuellen Abstraktionsebene. In diesen Beispielen erzeugt der lernbasierte Abstraktionsebenenerzeuger 232 Abstraktionsebenen, die sich als nichtdeterministisch erweisen. Der lernbasierte Abstraktionsebenenerzeuger 232 des veranschaulichten Beispiels von 4 weist einen beispielhaften Knotenselektor 404, einen beispielhaften Modellausführer 408, einen beispielhaften probabilistischen Abstraktionsebenenknotenkomparator 412 und einen beispielhaften Abstraktionsebenenerzeuger 416 auf.
  • Der beispielhafte Knotenselektor 404 des lernbasierten Abstraktionsebenenerzeugers 232 erzeugt einen Eingabesatz, ein Eingabearray oder eine andere Datenstruktur, die die Knoten in dem programmabgeleiteten semantischen Graphen enthält. In manchen Beispielen wählt der Knotenselektor 404 Knoten, die in den Eingabesatz aufzunehmen sind, basierend auf einer Gewichtung der Knoten aus. In diesen Beispielen werden die Knoten, die eine Gewichtungsschwelle erfüllen, in den Eingabesatz aufgenommen und die Knoten, die die Gewichtungsschwelle nicht erfüllen, nicht in den Eingabesatz aufgenommen. In anderen Beispielen wählt der Knotenselektor 404 Knoten auf vorherigen Abstraktionsebenen des programmabgeleiteten semantischen Graphen aus, die in die Eingabemenge aufzunehmen sind. Die Knoten im Eingabesatz werden als Eingangsknoten betrachtet. Der Knotenselektor 404 wählt einen der Eingangsknoten aus, der mit einem Satz möglicher Knoten zu vergleichen ist, die auf der aktuellen Abstraktionsebene aufzunehmen sind.
  • Der Knotenselektor 404 bestimmt, ob es in der Datenstruktur verbleibende Eingangsknoten gibt. Als Reaktion auf das Bestimmen, dass die Datenstruktur Eingangsknoten enthält, wählt der Knotenselektor 404 einen der Eingangsknoten aus der Datenstruktur aus.
  • Der beispielhafte probabilistische Abstraktionsebenenknotenkomparator 412 des lernbasierten Abstraktionsebenenerzeugers 232 bestimmt, ob der ausgewählte Eingangsknoten auf einen der möglichen Knoten auf der aktuellen Abstraktionsebene abgebildet wird. In manchen Beispielen enthält der probabilistische Abstraktionsebenenknotenkomparator 412 Sätze für die Abstraktionsebenen, die mögliche Knoten auf der spezifizierten Abstraktionsebene enthalten. Falls zum Beispiel der Satz der möglichen Knoten auf der aktuellen Abstraktionsebene den Knoten „Arithmetische Operationen“ enthält und der Satz von Knoten auf niedrigeren Abstraktionsebenen des programmabgeleiteten semantischen Graphen den Knoten % enthält, fügt der lernbasierte Abstraktionsebenenerzeuger 232 den Knoten „Arithmetische Operationen“ zu dem programmabgeleiteten semantischen Graphen auf der aktuellen Abstraktionsebene hinzu.
  • In anderen Beispielen bildet sich der ausgewählte Eingangsknoten auf mehr als einen Knoten auf der aktuell ausgewählten Abstraktionsebene ab. In diesen Beispielen identifiziert der probabilistische Abstraktionsebenenknotenkomparator 412 mögliche Elternknoten des ausgewählten Knotens. Falls der probabilistische Abstraktionsebenenknotenkomparator 412 bestimmt, dass der ausgewählte Eingangsknoten auf mindestens einen identifizierten Knoten innerhalb des Satzes möglicher Knoten auf der aktuellen Abstraktionsebene abgebildet wird, bestimmt der lernbasierte probabilistische Abstraktionsebeneknotenkomparator 412 einen des mindestens einen identifizierten Knotens, der zu der aktuellen Abstraktionsebene hinzuzufügen ist. Andernfalls wird der Eingangsknoten ignoriert.
  • Falls der probabilistische Abstraktionsebenenknotenkomparator 412 mindestens einen Knoten identifiziert, der zu der aktuellen Abstraktionsebene hinzuzufügen ist, bestimmt der beispielhafte Modellausführer 408 des lernbasierten Abstraktionsebenenerzeugers 232 einen des mindestens einen identifizierten Knotens, der zu der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen hinzuzufügen ist. In manchen Beispielen wird ein Maschinenlernklassifikationsmodell (z. B. Entscheidungsbaum, tiefes neuronales Netzwerk usw.) verwendet, um zu bestimmen, welcher des mindestens einen identifizierten Knotens zu der aktuellen Abstraktionsebene hinzuzufügen ist.
  • Der beispielhafte Abstraktionsebenenerzeuger 416 des lernbasierten Abstraktionsebenenerzeugers 232 fügt den identifizierten Knoten zur aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen hinzu. In manchen Beispielen fügt der Abstraktionsebenenerzeuger 416 den identifizierten Knoten zu einer Datenstruktur (z. B. Satz, Array usw.) hinzu, die Knoten enthält, die als auf der aktuellen Abstraktionsebene aufzunehmend identifiziert wurden. Der Knotenselektor 404 entfernt den ausgewählten Eingangsknoten aus der durch den lernbasierten Abstraktionsebenenerzeuger 232 erstellten Datenstruktur.
  • Falls der probabilistische Abstraktionsebenenknotenkomparator 412 keinen Knoten identifiziert, der auf der aktuellen Abstraktionsebene aufzunehmen ist, ignoriert der Abstraktionsebenenerzeuger 416 den ausgewählten Eingangsknoten. Der Knotenselektor 404 entfernt den ausgewählten Eingangsknoten aus der durch den lernbasierten Abstraktionsebenenerzeuger 232 erstellten Datenstruktur.
  • Obwohl eine beispielhafte Art und Weise des Implementierens des programmabgeleiteten semantischen Graphenkonstruktors 204 von 2 in 5 veranschaulicht ist, können eines oder mehrere der in 5 veranschaulichten Elemente, Prozesse und/oder Vorrichtungen kombiniert, geteilt, umgeordnet, weggelassen, eliminiert und/oder auf eine beliebige andere Weise implementiert werden. Ferner kann der beispielhafte Parse-Baumkonstruktor 208, der beispielhafte Syntaxknotenbestimmer 212, der beispielhafte Abstraktionsebenenmodifikators 216, der beispielhafte Blattknotenerzeuger 220, der beispielhafte Abstraktionsebenenbestimmer 224, der beispielhafte regelbasierte Abstraktionsebenenerzeuger 228, der beispielhafte lernbasierte Abstraktionsebenenerzeuger 232, der beispielhafte programmabgeleitete Graphenkomparator 236, der beispielhafte Knotenselektor 304, der beispielhafte Abstraktionsebenenknotenkomparator 308, der beispielhafte Abstraktionsebenenerzeuger 312, der beispielhafte Knotenselektor 404, der beispielhafte Modellausführer 408, der beispielhafte probabilistische Abstraktionsebenenknotenkomparator 412 und der beispielhafte Abstraktionsebenenerzeuger 416 und/oder allgemeiner der beispielhafte programmabgeleitete Graphenkonstruktor 204 von 2 durch Hardware, Software, Firmware und/oder eine beliebige Kombination von Hardware, Software und/oder Firmware implementiert werden. Somit kann zum Beispiel ein beliebiger des beispielhaften Parse-Baumkonstruktors 208, des beispielhaften Syntaxknotenbestimmers 212, des beispielhaften Abstraktionsebenenmodifikators 216, des beispielhaften Blattknotenerzeugers 220, des beispielhaften Abstraktionsebenenbestimmers 224, des beispielhaften regelbasierten Abstraktionsebenenerzeugers 228, des beispielhaften lernbasierten Abstraktionsebenenerzeugers 232, des beispielhaften programmabgeleiteten Graphenkomparators 236, des beispielhaften Knotenselektors 304, des beispielhaften Abstraktionsebenenknotenkomparators 308, des beispielhaften Abstraktionsebenenerzeugers 312, des beispielhaften Knotenselektors 404, des beispielhaften Modellausführers 408, des beispielhaften probabilistische Abstraktionsebenenknotenkomparators 412 und des beispielhaften Abstraktionsebenenerzeugers 416 und/oder allgemeiner des beispielhaften programmabgeleiteten Graphenkonstruktors 204 durch eine oder mehrere analoge oder digitale Schaltung(en), Logikschaltungen, programmierbare Prozessor(en), programmierbare Steuerung(en), Grafikverarbeitungseinheit(en) (GPU(s)), Digitalsignalprozessor(en) (DSP(s)), anwendungsspezifische integrierte Schaltung(en) (ASIC(s)), programmierbare Logikvorrichtung(en) (PLD(s)) und/oder feldprogrammierbare Logikvorrichtung(en) (FPLD(s)) implementiert werden. Wenn beliebige der Einrichtungs- oder Systemansprüche dieses Patents so gelesen werden, dass sie eine reine Software- und/oder Firmware-Implementierung abdecken, sind/ist der beispielhafte Parse-Baumkonstruktor 208, der beispielhafte Syntaxknotenbestimmer 212, der beispielhafte Abstraktionsebenenmodifikator 216, der beispielhafte Blattknotenerzeuger 220, der beispielhafte Abstraktionsebenenbestimmer 224, der beispielhafte regelbasierte Abstraktionsebenenerzeuger 228, der beispielhafte lernbasierte Abstraktionsebenenerzeuger 232, der beispielhafte programmabgeleitete Graphenkomparator 236, der beispielhafte Knotenselektor 304, der beispielhafte Abstraktionsebenenknotenkomparator 308, der beispielhafte Abstraktionsebenenerzeuger 312, der beispielhafte Knotenselektor 404, der beispielhafte Modellausführer 408, der beispielhafte probabilistische Abstraktionsebenenknotenkomparator 412 und/oder der beispielhafte Abstraktionsebenenerzeuger 416 hiermit ausdrücklich so definiert, dass sie eine nichtflüchtige computerlesbare Speichervorrichtung oder Speicherplatte wie etwa einen Arbeitsspeicher, eine DVD (Digital Versatile Disk), eine CD (Compact Disk), eine Blu-Ray-Disk usw. einschließlich der Software und/oder Firmware beinhalten. Ferner kann der beispielhafte programmabgeleitete Graphenkonstruktor 204 aus 2 ein oder mehrere Elemente, Prozesse und/oder Vorrichtungen zusätzlich zu den oder anstelle der in 5 veranschaulichten beinhalten und/oder kann mehr als eines von beliebigen oder allen der veranschaulichten Elemente, Prozesse und Vorrichtungen beinhalten. Wie hier verwendet, umfasst der Ausdruck „in Kommunikation“, einschließlich Variationen davon, direkte Kommunikation und/oder indirekte Kommunikation durch eine oder mehrere Zwischenkomponenten und erfordert keine direkte physische (z. B. drahtgebundene) Kommunikation und/oder konstante Kommunikation, sondern zusätzlich eine selektive Kommunikation in periodischen Intervallen, geplanten Intervallen, aperiodischen Intervallen und/oder einmaligen Ereignissen.
  • Ein Flussdiagramm, das beispielhafte Hardwarelogik, maschinenlesbare Anweisungen, hardwareimplementierte Zustandsmaschinen und/oder eine beliebige Kombination davon zum Implementieren des programmabgeleiteten Graphenkonstruktors 204 von 2 darstellt, ist in 5 gezeigt. Die maschinenlesbaren Anweisungen können ein oder mehrere ausführbare Programme oder Teil(e) eines ausführbaren Programms zur Ausführung durch einen Computerprozessor und/oder eine Prozessorschaltungsanordnung wie etwa den Prozessor 812, der in der unten in Verbindung mit 8 besprochenen beispielhaften Prozessorplattform 800 gezeigt ist, sein. Das Programm kann in Software umgesetzt sein, die auf einem nichtflüchtigen computerlesbaren Speichermedium gespeichert ist, wie etwa einer CD-ROM, einer Floppy-Disk, einer Festplatte, einer DVD, einer Blu-Ray-Disk oder einem Speicher, der mit dem Prozessor 812 assoziiert ist, aber das gesamte Programm und/oder Teile davon könnten alternativ durch eine andere Vorrichtung als den Prozessor 812 ausgeführt werden und/oder in Firmware oder dedizierter Hardware umgesetzt sein. Obwohl das beispielhafte Programm unter Bezugnahme auf das in 5 veranschaulichte Flussdiagramm beschrieben ist, können ferner alternativ viele andere Verfahren zum Implementieren des beispielhaften programmabgeleiteten Graphenkonstruktors 204 verwendet werden. Zum Beispiel kann die Ausführungsreihenfolge der Blöcke geändert werden und/oder manche der beschriebenen Blöcke können geändert, eliminiert oder kombiniert werden. Zusätzlich oder alternativ dazu können beliebige oder alle der Blöcke durch eine oder mehrere Hardwareschaltungen (z. B. diskrete und/oder integrierte analoge und/oder digitale Schaltungen, ein FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert sein, die dazu strukturiert sind, die entsprechende Operation durchzuführen, ohne Software oder Firmware auszuführen. Die Prozessorschaltungsanordnung kann an unterschiedlichen Netzwerkstandorten und/oder lokal zu einer oder mehreren Vorrichtungen (z. B. ein Mehrkernprozessor in einer einzigen Maschine, mehrere Prozessoren, die über ein Server-Rack verteilt sind usw.) verteilt sein.
  • Die hierin beschriebenen maschinenlesbaren Anweisungen können in einem komprimierten Format, einem verschlüsselten Format, einem fragmentierten Format, einem kompilierten Format, einem ausführbaren Format und/oder einem verpackten Format usw. gespeichert sein. Maschinenlesbare Anweisungen, wie hier beschrieben, können als Daten oder Datenstruktur (z. B. Teile von Anweisungen, Code, Darstellungen von Code usw.) gespeichert sein, die genutzt werden können, um maschinenausführbare Anweisungen zu erstellen, herzustellen und/oder zu erzeugen. Zum Beispiel können die maschinenlesbaren Anweisungen fragmentiert und auf einer oder mehreren Speichervorrichtungen und/oder Rechenvorrichtungen (z. B. Servern) gespeichert sein, die sich an denselben oder unterschiedlichen Orten eines Netzwerks oder einer Sammlung von Netzwerken (z. B. in der Cloud, in Edge-Vorrichtungen usw.) befinden. Die maschinenlesbaren Anweisungen können Installation, Modifikation, Anpassung, Aktualisieren, Kombinieren, Ergänzen, Konfigurieren, Entschlüsseln, Dekomprimieren, Entpacken, Verteilung, Neuzuweisung und/oder Kompilierung usw. erfordern, um sie direkt lesbar, interpretierbar und/oder durch eine Rechenvorrichtung und/oder eine andere Maschine ausführbar zu machen. Zum Beispiel können die maschinenlesbaren Anweisungen in mehreren Teilen gespeichert sein, die einzeln komprimiert, verschlüsselt und auf separaten Rechenvorrichtungen gespeichert sind, wobei die Teile, wenn sie entschlüsselt, dekomprimiert und kombiniert sind, einen Satz ausführbarer Anweisungen bilden, die eine oder mehrere Funktionen implementieren, die zusammen ein Programm wie das hier beschriebene bilden können.
  • In einem anderen Beispiel können die maschinenlesbaren Anweisungen in einem Zustand gespeichert werden, in dem sie durch eine Prozessorschaltungsanordnung gelesen werden können, aber Hinzufügen einer Bibliothek (z. B. einer Dynamic-Link-Bibliothek (DLL)), eines Softwareentwicklungskits (SDK), einer Anwendungsprogrammierungsschnittstelle (API) usw. erfordern, um die Anweisungen auf einer speziellen Rechenvorrichtung oder einer anderen Vorrichtung auszuführen. In einem anderen Beispiel müssen die maschinenlesbaren Anweisungen möglicherweise konfiguriert werden (z. B. Einstellungen gespeichert, Daten eingegeben, Netzwerkadressen aufgezeichnet usw.), bevor die maschinenlesbaren Anweisungen und/oder das bzw. die entsprechenden Programme ganz oder teilweise ausgeführt werden können. Somit können maschinenlesbare Medien, wie hierin verwendet, maschinenlesbare Anweisungen und/oder Programm(e) unabhängig von dem speziellen Format oder Zustand der maschinenlesbaren Anweisungen und/oder Programm(e) beinhalten, wenn sie gespeichert oder anderweitig in Ruhe oder im Durchgang sind.
  • Die hierin beschriebenen maschinenlesbaren Anweisungen können durch eine beliebige vergangene, gegenwärtige oder zukünftige Anweisungssprache, Skriptsprache, Programmiersprache usw. dargestellt werden. Zum Beispiel können die maschinenlesbaren Anweisungen unter Verwendung einer beliebigen der folgenden Sprachen dargestellt werden: C, C++, Java, C#, Perl, Python, JavaScript, HyperText Markup Language (HTML), Structured Query Language (SQL), Swift usw.
  • Wie oben erwähnt, können die beispielhaften Prozesse der 5, 6 und 7 unter Verwendung ausführbarer Anweisungen (z. B. computer- und/oder maschinenlesbarer Anweisungen) implementiert werden, die auf einem nichtflüchtigen computer- und/oder maschinenlesbaren Medium gespeichert sind, wie etwa einem Festplattenlaufwerk, einem Flash-Speicher, einem Nurlesespeicher, einer Compact Disk, einer Digital Versatile Disk, einem Cache, einem Direktzugriffsspeicher und/oder einer beliebigen anderen Speichereinrichtung oder Speicherplatte, auf der Informationen für eine beliebige Dauer gespeichert sind (z. B. für längere Zeiträume, permanent, für kurze Fälle, zum temporären Puffern und/oder zum Zwischenspeichern der Informationen). Wie hierin verwendet, ist der Begriff nichtflüchtiges computerlesbares Medium ausdrücklich so definiert, dass er eine beliebige Art von computerlesbarer Speichervorrichtung und/oder Speicherplatte beinhaltet und sich ausbreitende Signale ausschließt und Übertragungsmedien ausschließt.
  • „Beinhaltend“ und „umfassend“ (und alle Formen und Zeitformen davon) werden hier als offenendige Ausdrücke verwendet. Wenn ein Anspruch eine beliebige Form von „beinhalten“ oder „beinhalten“ (z. B. umfasst, beinhaltet, beinhaltet, beinhaltend, beinhaltend usw.) als Oberbegriff oder innerhalb einer Anspruchsaufzählung beliebiger Art einsetzt, versteht es sich somit, dass zusätzliche Elemente, Begriffe usw. vorhanden sein können, ohne dass dies außerhalb des Schutzumfangs des entsprechenden Anspruchs oder der entsprechenden Aufzählung fällt. Wie hierin verwendet, ist der Ausdruck „mindestens“, wenn er Übergangsausdruck zum Beispiel in einem Oberbegriff eines Anspruchs verwendet wird, auf die gleiche Weise offen, wie die Ausdrücke „umfassend“ und „beinhaltend“ offen sind. Der Begriff „und/oder“ bezieht sich, wenn er zum Beispiel in einer Form wie A, B und/oder C verwendet wird, auf eine beliebige Kombination oder Untermenge von A, B, C wie (1) A allein, (2) B allein, (3) C allein, (4) A mit B, (5) A mit C, (6) B mit C und (7) A mit B und mit C. Wie hierin im Zusammenhang mit der Beschreibung von Strukturen, Komponenten, Elementen, Objekten und/oder Dingen verwendet, soll sich die Formulierung „mindestens eines von A und B“ auf Implementierungen beziehen, die beliebige von (1) mindestens einem A, (2) mindestens einem B und (3) mindestens einem A und mindestens einem B beinhalten. Ähnlich, wie hierin im Kontext des Beschreibens von Strukturen, Komponenten, Elementen, Objekten und/oder Dingen verwendet, soll sich die Formulierung „mindestens eines von A oder B“ auf Implementierungen beziehen, die beliebige von (1) mindestens einem A, (2) mindestens einem B und (3) mindestens einem A und mindestens einem B beinhalten. Wie hierin im Kontext der Beschreibung der Leistungsfähigkeit oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten verwendet, soll sich die Formulierung „wenigsten eines von A und B“ auf Implementierungen beziehen, die beliebige von (1) mindestens einem A, (2) mindestens einem B, und (3) mindestens einem A und mindestens einem B beinhalten. Ähnlich wie hierin im Zusammenhang mit der Beschreibung der Leistungsfähigkeit oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten verwendet, soll sich die Formulierung „mindestens eines von A oder B“ auf Implementierungen beziehen, die beliebige von (1) mindestens einem A, (2) mindestens einem B und (3) mindestens einem A und mindestens einem B beinhalten.
  • Wie hier verwendet, schließen singuläre Referenzen (z. B. „ein“, „eine“, „erste(r/s)“, „zweite(r/s)“ usw.) mehrere nicht aus. Der Begriff „eine“ Entität, wie hier verwendet, bezieht sich auf eine oder mehrere dieser Entität. Die Begriffe „ein“ (oder „eine“), „ein oder mehrere“ und „mindestens ein“ können hier austauschbar verwendet werden. Obwohl einzeln aufgelistet, können darüber hinaus mehrere Mittel, Elemente oder Verfahrenshandlungen z. B. durch eine einzige Einheit oder einen einzigen Prozessor implementiert werden. Obwohl einzelne Merkmale in unterschiedlichen Beispielen oder Ansprüchen enthalten sein können, können diese zusätzlich möglicherweise kombiniert werden und die Aufnahme in unterschiedlichen Beispielen oder Ansprüchen impliziert nicht, dass eine Kombination von Merkmalen nicht machbar und/oder vorteilhaft ist.
  • 5 ist ein Flussdiagramm, das maschinenlesbare Anweisungen darstellt, die ausgeführt werden können, um den programmabgeleiteten Graphenkonstruktor 204 von 2 zu implementieren. Der programmabgeleitete Graphenkonstruktor 204 greift auf ein Segment oder ein Schnipsel von Programmcode zu. (Block 504). Der Programmcode kann aus einer beliebigen Codierungssprache (z. B. Java, C, C++, Python usw.) stammen.
  • Der Parse-Baumkonstruktor 208 wandelt das Segment oder den Ausschnitt von Programmcode in einen Parse-Baum um. (Block 508). In manchen Beispielen beinhaltet der Parse-Baum die Wörter, mathematischen Operationen und/oder Formatierung, die in dem Segment oder Programmcodeschnipsel vorhanden sind. In manchen Beispielen beinhaltet der Parse-Baum Knoten, die syntaktische Werte (z. B. mathematische Operationen, ganze Zahlen, If-else-Aussagen usw.) sind.
  • Der Syntaxknotenbestimmer 212 iteriert den Parse-Baum und bestimmt die im Parse-Baum vorhandenen Syntaxknoten. (Block 512). Der Syntaxknotenbestimmer 212 speichert die Syntaxknoten an einem temporären Ort. In manchen Beispielen beinhaltet der Parse-Baum Knoten, die syntaktische Werte (z. B. mathematische Operationen, ganze Zahlen, If-else-Aussagen usw.) beinhalten.
  • Der Abstraktionsebenenmodifikator 216 setzt die Abstraktionsebene auf einen Standardstartwert (z. B. null, eins, zehn usw.). (Block 516). In den folgenden Beispielen wird der Standardstartwert 0 sein. Der Blattknotenerzeuger 220 legt die Syntaxknoten, die durch den Syntaxknotenbestimmer 212 identifiziert werden, als Blattknoten in dem programmabgeleiteten semantischen Graphen fest. (Block 520). Der Abstraktionsebenenmodifikator 216 erhöht den aktuellen Wert der Abstraktionsebene. (Block 524).
  • Der Abstraktionsebenenbestimmer 224 bestimmt, ob Abstraktionsebenen in dem programmabgeleiteten semantischen Graphen definiert wurden. (Block 528). In manchen Beispielen werden Abstraktionsebenen definiert, wenn Kinderknoten mit einem gemeinsamen Elternknoten verbunden sind. In anderen Beispielen werden Abstraktionsebenen definiert, wenn die definierte abstrakteste Abstraktionsebene die Knoten „Operationen zum Handhaben von Daten“ und „Codestruktur und Fluss“ beinhaltet. In diesen Beispielen zeigt der Knoten „Operationen zum Handhaben von Daten“ auf Kinderknoten wie etwa Algorithmen, mathematische Operationen, ganze Zahlen usw. Auch in diesen Beispielen zeigt der Knoten „Codestruktur und Fluss“ auf Kinderknoten, wie etwa bedingte Aussagen, Rückgabeaussagen, Vergleiche usw. Falls der Abstraktionsebenenbestimmer 224 bestimmt, dass Abstraktionsebenen definiert wurden, endet der Prozess. Falls der Abstraktionsebenenbestimmer 224 bestimmt, dass Abstraktionsebenen nicht definiert sind, fährt der Prozess fort, zu bestimmen, ob die aktuelle Abstraktionsebene deterministisch ist.
  • Der Abstraktionsebenenbestimmer 224 bestimmt, ob die aktuelle Abstraktionsebene deterministisch ist. (Block 532). In manchen Beispielen beschreibt eine deterministische Abstraktionsebene eine Abstraktionsebene, bei der Knoten mit einem Elternteil auf der Abstraktionsebene nur auf einen einzigen Elternteil zeigen. Zum Beispiel werden die Knoten while, for und do while nur auf die Schleife des einzigen Elternteils abgebildet. Auch in diesen Beispielen beschreibt eine nichtdeterministische Abstraktionsebene eine Abstraktionsebene, bei der mindestens ein Knoten, der auf einen Elternteil auf der aktuellen Abstraktionsebene zeigt, auf mindestens zwei Elternteile auf der aktuellen Abstraktionsebene zeigt. Falls der Abstraktionsebenenbestimmer 224 bestimmt, dass die aktuelle Abstraktionsebene deterministisch ist, wird ein regelbasierter Ansatz genutzt, um die aktuelle Abstraktionsebene zu erzeugen. Falls der Abstraktionsebenenbestimmer 224 bestimmt, dass die aktuelle Abstraktionsebene nichtdeterministisch ist, wird ein lernbasierter Ansatz genutzt, um die aktuelle Abstraktionsebene zu erzeugen.
  • Der regelbasierte Abstraktionsebenenerzeuger 228 erzeugt einen Knotensatz, der die Knoten enthält, die auf der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen zu verwenden sind. (Block 536). In manchen Beispielen greift der regelbasierte Abstraktionsebenenerzeuger 228 auf die Knoten zu, die gegenwärtig in dem programmabgeleiteten semantischen Graphen auf niedrigeren Abstraktionsebenen vorhanden sind, und bestimmt, ob die Knoten Elternknoten auf der aktuellen Abstraktionsebene aufweisen. In diesen Beispielen weist der regelbasierte Abstraktionsebenenerzeuger 228 einen Satz der möglichen Knoten auf der aktuellen Abstraktionsebene auf und bestimmt die Knoten auf niedrigeren Abstraktionsebenen in dem programmabgeleiteten semantischen Graphen, die einen Elternteil in dem Satz der möglichen Knoten auf der aktuellen Abstraktionsebene aufweisen. Falls zum Beispiel der Satz der möglichen Knoten auf der aktuellen Abstraktionsebene den Knoten „Arithmetische Operationen“ enthält und der Satz von Knoten auf niedrigeren Abstraktionsebenen des programmabgeleiteten semantischen Graphen den Knoten % enthält, würde der regelbasierte Abstraktionsebenenerzeuger 228 den Knoten „Arithmetische Operationen“ zu dem programmabgeleiteten semantischen Graphen auf der aktuellen Abstraktionsebene hinzufügen. Sobald der regelbasierte Abstraktionsebenenerzeuger 228 durch den Satz von Knoten auf niedrigeren Abstraktionsebenen des programmabgeleiteten semantischen Graphen iteriert und bestimmt, dass die Knoten auf der aktuellen Abstraktionsebene aufzunehmen sind, geht der Prozess zur nächsten Abstraktionsebene über.
  • Der lernbasierte Abstraktionsebenenerzeuger 232 erzeugt eine Knotenmenge, die Knoten enthält, die auf der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen zu verwenden sind. (Block 540). In manchen Beispielen greift der lernbasierte Abstraktionsebenenerzeuger 232 auf einen Satz möglicher Knoten auf der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen zu. In diesen Beispielen gibt eine nichtdeterministische Abstraktionsebene an, dass mindestens ein Knoten in dem Satz von Knoten auf niedrigeren Abstraktionsebenen des programmabgeleiteten semantischen Graphen mehrere mögliche Elternknoten in dem Satz möglicher Knoten auf der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen aufweist.
  • In manchen Beispielen ist der lernbasierte Abstraktionsebenenerzeuger 232 ein Multi-Label-Klassifikationsmodell (z. B. Entscheidungsbaum, tiefes neuronales Netzwerk usw.). In diesen Beispielen bestimmt der lernbasierte Abstraktionsebenenerzeuger 232, welcher der Knoten in dem Satz möglicher Knoten auf der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen in den Satz von Knoten auf der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen aufzunehmen ist. In diesen Beispielen identifiziert der lernbasierte Abstraktionsebenenerzeuger 232, welche Knoten in den Satz von Knoten auf der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen aufgenommen werden könnten, und bestimmt, welche Knoten in den Satz von Knoten auf der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen aufzunehmen sind.
  • In manchen Beispielen ist die Eingabe in den lernbasierten Abstraktionsebenenerzeuger 232 der Satz von Knoten auf niedrigeren Abstraktionsebenen in dem programmabgeleiteten semantischen Graphen. In anderen Beispielen wird eine Gewichtung auf Knoten auf niedrigeren Abstraktionsebenen in dem programmabgeleiteten semantischen Graphen angewendet. In diesen Beispielen ist die Eingabe in den lernbasierten Abstraktionsebenenerzeuger 232 der Satz von Knoten auf niedrigeren Abstraktionsebenen des programmabgeleiteten semantischen Graphen, der eine Gewichtungsschwelle erfüllt. In manchen Beispielen ist die Gewichtungsschwelle ein Gewichtungswert, der die Gewichtung eines Knotens mit dem Gewichtungswert vergleicht. Falls der Gewichtungswert zum Beispiel auf 0,8 eingestellt ist, würden sich Knoten auf niedrigeren Abstraktionsebenen des programmabgeleiteten semantischen Graphen mit einer Gewichtung größer als 0,8 in der Eingabe des lernbasierten Abstraktionsebenenerzeugers 232 befinden.
  • In anderen Beispielen könnte die Eingabe des lernbasierten Abstraktionsebenenerzeugers 232 ein Prozentsatz oder eine Menge der Knoten mit höchster Gewichtung auf den unteren Abstraktionsebenen des programmabgeleiteten semantischen Graphen sein. Beispielsweise könnte der lernbasierte Abstraktionsebenenerzeuger 232 die 30 Knoten mit der höchsten Gewichtung in dem Satz von Knoten auf den niedrigeren Abstraktionsebenen abrufen. In einem anderen Beispiel könnte der lernbasierte Abstraktionsebenenerzeuger 232 die schwersten 30 % der Knoten in dem Satz von Knoten auf den niedrigeren Abstraktionsebenen abrufen. Falls es zum Beispiel 50 Knoten auf den unteren Abstraktionsebenen des programmabgeleiteten semantischen Graphen gibt, könnte der lernbasierte Abstraktionsebenenerzeuger 232 die 15 Knoten mit der größten Gewichtung greifen. Nachdem der lernbasierte Abstraktionsebenenerzeuger 232 den Satz von Knoten erzeugt hat, der in den programmabgeleiteten semantischen Graphen auf der aktuellen Abstraktionsebene aufzunehmen ist, geht der Prozess zur nächsten Abstraktionsebene über.
  • 6 ist ein Flussdiagramm, das maschinenlesbare Anweisungen darstellt, die ausgeführt werden können, um den regelbasierten Abstraktionsebenenerzeuger 228 der 2 und 3 zu implementieren. Der regelbasierte Abstraktionsebenenerzeuger 228 greift auf die Knoten von früheren Abstraktionsebenen zu. (Block 604). In manchen Beispielen werden die Knoten von früheren Abstraktionsebenen in einen Satz, ein Array oder eine andere Datenstruktur gesetzt. Die Knoten von früheren Abstraktionsebenen sind die Eingangsknoten zu dem regelbasierten Abstraktionsebenenerzeuger 228.
  • Der Knotenselektor 304 bestimmt, ob es in der Datenstruktur verbleibende Eingangsknoten gibt. (Block 608). Als Reaktion auf das Bestimmen, dass die Datenstruktur keine Eingangsknoten enthält, endet der Prozess. Als Reaktion auf das Bestimmen, dass die Datenstruktur Eingangsknoten enthält, wählt der Knotenselektor 304 einen der Eingangsknoten aus der Datenstruktur aus. (Block 612).
  • Der Abstraktionsebenenknotenkomparator 308 bestimmt, ob der ausgewählte Eingangsknoten auf einen beliebigen der möglichen Knoten auf der aktuellen Abstraktionsebene abgebildet wird. (Block 616). In manchen Beispielen enthält der Abstraktionsebenenknotenkomparator 308 Sätze für die Abstraktionsebenen, die mögliche Knoten auf der spezifizierten Abstraktionsebene enthalten. Falls zum Beispiel der Satz der möglichen Knoten auf der aktuellen Abstraktionsebene den Knoten „Arithmetische Operationen“ enthält und der Satz von Knoten auf niedrigeren Abstraktionsebenen des programmabgeleiteten semantischen Graphen den Knoten % enthält, würde der regelbasierte Abstraktionsebenenerzeuger 228 den Knoten „Arithmetische Operationen“ zu dem programmabgeleiteten semantischen Graphen auf der aktuellen Abstraktionsebene hinzufügen. Falls der Abstraktionsebenenknotenkomparator 308 bestimmt, dass der ausgewählte Eingangsknoten auf einen identifizierten Knoten innerhalb des Satzes möglicher Knoten auf der aktuellen Abstraktionsebene abgebildet wird, wird der identifizierte Knoten zu dem programmabgeleiteten semantischen Graphen hinzugefügt. Andernfalls wird der Eingangsknoten ignoriert.
  • Falls der Abstraktionsebenenknotenkomparator 308 einen Knoten identifiziert, der auf der aktuellen Abstraktionsebene aufzunehmen ist, fügt der Abstraktionsebenenerzeuger 312 den identifizierten Knoten zu der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen hinzu. (Block 620). In manchen Beispielen fügt der Abstraktionsebenenerzeuger 312 den identifizierten Knoten zu einer Datenstruktur (z. B. Satz, Array usw.) hinzu, die Knoten enthält, die als auf der aktuellen Abstraktionsebene aufzunehmend identifiziert wurden. Der Knotenselektor 304 entfernt den ausgewählten Eingangsknoten aus der Datenstruktur, die durch den regelbasierten Abstraktionsebenenerzeuger 228 erzeugt wurde.
  • Falls der Abstraktionsebenenknotenkomparator 308 keinen Knoten identifiziert, der auf der aktuellen Abstraktionsebene aufzunehmen ist, ignoriert der Abstraktionsebenenerzeuger 312 den ausgewählten Eingangsknoten. (Block 624). Der Knotenselektor 304 entfernt den ausgewählten Eingangsknoten aus der Datenstruktur, die durch den regelbasierten Abstraktionsebenenerzeuger 228 erzeugt wurde.
  • 7 ist ein Flussdiagramm, das maschinenlesbare Anweisungen darstellt, die ausgeführt werden können, um den lernbasierten Abstraktionsebenenerzeuger 232 der 2 und 4 zu implementieren. Der lernbasierte Abstraktionsebenenerzeuger 232 greift auf aktuell in dem programmabgeleiteten semantischen Graphen befindliche Knoten zu. Der lernbasierte Abstraktionsebenenerzeuger 232 bestimmt, ob die Gewichtung der Knoten in dem programmabgeleiteten semantischen Graphen zu berücksichtigen ist. (Block 704).
  • Als Reaktion auf das Bestimmen, die Gewichtung der Knoten in dem programmabgeleiteten semantischen Graphen nicht zu berücksichtigen, greift der lernbasierte Abstraktionsebenenerzeuger 232 auf Knoten in dem programmabgeleiteten semantischen Graphen zu. (Block 708). Der Knotenselektor 404 erzeugt einen Eingabesatz, ein Eingabearray oder eine andere Datenstruktur, die Knoten in dem programmabgeleiteten semantischen Graphen enthält. Die Knoten im Eingabesatz werden als Eingangsknoten betrachtet.
  • Als Reaktion auf das Bestimmen, die Gewichtung der Knoten in dem programmabgeleiteten semantischen Graphen zu berücksichtigen, greift der lernbasierte Abstraktionsebenenerzeuger 232 auf Knoten in dem programmabgeleiteten semantischen Graphen zu, die eine Gewichtungsschwelle erfüllen. (Block 712). Bei manchen Beispielen ist die Gewichtungsschwelle ein Wert. Zum Beispiel beträgt die Gewichtungsschwelle 0,7, dann würde auf Knoten in dem programmabgeleiteten semantischen Graphen mit einer Gewichtung größer als 0,7 zugegriffen werden. Bei anderen Beispielen handelt es sich bei der Gewichtungsschwelle um die Knoten in dem programmabgeleiteten semantischen Graphen in einem oberen vorbestimmten Prozentsatz oder Wert von Gewichtungen. Falls die Gewichtungsschwelle zum Beispiel dreißig Prozent beträgt, wären in einer Situation mit fünfzig Knoten die 15 Knoten mit der größten Gewichtung die Eingangsknoten. Falls die Gewichtungsschwelle die obersten dreißig schwersten Knoten ist, dann würden für ein anderes Beispiel die dreißig Knoten mit den größten Gewichtungen als Eingangsknoten ausgewählt werden. Der Knotenselektor 404 erzeugt einen Eingabesatz, ein Eingabearray oder eine andere Datenstruktur, die Knoten in dem programmabgeleiteten semantischen Graphen enthält. Die Knoten im Eingabesatz werden als Eingangsknoten betrachtet.
  • Der Knotenselektor 404 bestimmt, ob es in der Datenstruktur verbleibende Eingangsknoten gibt. (Block 716). Als Reaktion auf das Bestimmen, dass die Datenstruktur keine Eingangsknoten enthält, endet der Prozess. Als Reaktion auf das Bestimmen, dass die Datenstruktur Eingangsknoten enthält, wählt der Knotenselektor 404 einen der Eingangsknoten aus der Datenstruktur aus. (Block 720).
  • Der probabilistische Abstraktionsebenenknotenkomparator 412 bestimmt, ob der ausgewählte Eingangsknoten auf einen der möglichen Knoten auf der aktuellen Abstraktionsebene abgebildet wird. (Block 724). In manchen Beispielen enthält der probabilistische Abstraktionsebenenknotenkomparator 412 Sätze für die Abstraktionsebenen, die mögliche Knoten auf der spezifizierten Abstraktionsebene enthalten. Falls zum Beispiel der Satz der möglichen Knoten auf der aktuellen Abstraktionsebene den Knoten „Arithmetische Operationen“ enthält und der Satz von Knoten auf niedrigeren Abstraktionsebenen des programmabgeleiteten semantischen Graphen den Knoten % enthält, würde der lernbasierte Abstraktionsebenenerzeuger 232 den Knoten „Arithmetische Operationen“ zu dem programmabgeleiteten semantischen Graphen auf der aktuellen Abstraktionsebene hinzufügen.
  • In anderen Beispielen könnte der ausgewählte Eingangsknoten auf mehr als einen Knoten auf der gegenwärtig ausgewählten Abstraktionsebene abgebildet werden. In diesen Beispielen identifiziert der probabilistische Abstraktionsebenenknotenkomparator 412 mögliche Elternknoten des ausgewählten Knotens. Falls der probabilistische Abstraktionsebenenknotenkomparator 412 bestimmt, dass der ausgewählte Eingangsknoten auf mindestens einen identifizierten Knoten innerhalb des Satzes möglicher Knoten auf der aktuellen Abstraktionsebene abgebildet wird, bestimmt der lernbasierte probabilistische Abstraktionsebenenknotenkomparator 412 einen des mindestens einen identifizierten Knotens, der zu der aktuellen Abstraktionsebene hinzuzufügen ist. Andernfalls wird der Eingangsknoten ignoriert.
  • Falls der probabilistische Abstraktionsebenenknotenkomparator 412 mindestens einen Knoten identifiziert, der zu der aktuellen Abstraktionsebene hinzuzufügen ist, bestimmt der Modellausführer 408 einen des mindestens einen identifizierten Knotens, der zu der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen hinzuzufügen ist. (Block 728). In manchen Beispielen wird ein Maschinenlernklassifikationsmodell (z. B. Entscheidungsbaum, tiefes neuronales Netzwerk usw.) verwendet, um zu bestimmen, welcher des mindestens einen identifizierten Knotens zu der aktuellen Abstraktionsebene hinzuzufügen ist.
  • Der Abstraktionsebenenerzeuger 416 fügt den identifizierten Knoten zu der aktuellen Abstraktionsebene des programmabgeleiteten semantischen Graphen hinzu. (Block 732). In manchen Beispielen fügt der Abstraktionsebenenerzeuger 416 den identifizierten Knoten zu einer Datenstruktur (z. B. Satz, Array usw.) hinzu, die Knoten enthält, die als auf der aktuellen Abstraktionsebene aufzunehmend identifiziert wurden. Der Knotenselektor 404 entfernt den ausgewählten Eingangsknoten aus der durch den lernbasierten Abstraktionsebenenerzeuger 232 erstellten Datenstruktur.
  • Falls der probabilistische Abstraktionsebenenknotenkomparator 412 keinen Knoten identifiziert, der auf der aktuellen Abstraktionsebene aufzunehmen ist, ignoriert der Abstraktionsebenenerzeuger 416 den ausgewählten Eingangsknoten. (Block 736). Der Knotenselektor 404 entfernt den ausgewählten Eingangsknoten aus der durch den lernbasierten Abstraktionsebenenerzeuger 232 erstellten Datenstruktur.
  • 8 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 800, die zum Ausführen der Anweisungen der 5, 6 und 7 strukturiert ist, um die Vorrichtung der 2, 3 und 4 zu implementieren. Die Prozessorplattform 800 kann zum Beispiel ein Server, ein Personal Computer, eine Workstation, eine selbstlernende Maschine (z. B. ein neuronales Netzwerk), eine Mobilvorrichtung (z. B. ein Mobiltelefon, ein Smartphone, ein Tablet wie etwa ein iPad™), ein Personal Digital Assistant (PDA), ein Internetgerät, eine Spielkonsole oder eine beliebige andere Art von Rechenvorrichtung sein.
  • Die Prozessorplattform 800 des veranschaulichten Beispiels weist einen Prozessor 812 auf. Der Prozessor 812 des veranschaulichten Beispiels ist Hardware. Der Prozessor 812 kann zum Beispiel durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, Mikroprozessoren, GPUs, DSPs oder Steuerungen einer beliebigen gewünschten Familie oder eines beliebigen gewünschten Herstellers implementiert sein. Der Hardwareprozessor kann eine halbleiterbasierte (z. B. siliciumbasierte) Vorrichtung sein. In diesem Beispiel implementiert der Prozessor den beispielhaften programmabgeleiteten Graphenkonstruktor 204, den beispielhaften Parse-Baumkonstruktor 208, den beispielhaften Syntaxknotenbestimmer 212, den beispielhaften Abstraktionsebenenmodifikator 216, den beispielhaften Blattknotenerzeuger 220, den beispielhaften Abstraktionsebenenbestimmer 224, den beispielhaften regelbasierten Abstraktionsebenenerzeuger 228, den beispielhaften lernbasierten Abstraktionsebenenerzeuger 232, den beispielhaften programmabgeleiteten Graphenkomparator 236, den beispielhafte Knotenselektor 304, den beispielhaften Abstraktionsebenenknotenkomparator 308, den beispielhaften Abstraktionsebenenerzeuger 312, den beispielhaften Knotenselektor 404, den beispielhaften Modellausführer 408, den beispielhaften probabilistischen Abstraktionsebenenknotenkomparator 412 und den beispielhaften Abstraktionsebenenerzeuger 416.
  • Der Prozessor 812 des veranschaulichten Beispiels beinhaltet einen lokalen Speicher 813 (z. B. einen Cache). Der Prozessor 812 des veranschaulichten Beispiels steht über einen Bus 818 mit einem Hauptspeicher einschließlich eines flüchtigen Speichers 814 und eines nichtflüchtigen Speichers 816 in Kommunikation. Der flüchtige Speicher 814 kann durch einen synchronen dynamischen Direktzugriffsspeicher (SDRAM Synchronous Dynamic Random Access Memory), dynamischen Direktzugriffsspeicher (DRAM: Dynamic Random Access Memory), RAMBUS® Dynamic Random Access Memory (RDRAM ®) und/oder eine beliebige andere Art von Direktzugriffsspeichervorrichtung implementiert sein. Der nichtflüchtige Speicher 816 kann durch Flash-Speicher und/oder einen beliebigen anderen gewünschten Typ von Speichervorrichtung implementiert sein. Der Zugriff auf den Hauptspeicher 814, 816 wird durch eine Speichersteuerung gesteuert.
  • Die Prozessorplattform 800 des veranschaulichten Beispiels weist auch eine Schnittstellenschaltung 820 auf. Die Schnittstellenschaltung 820 kann durch eine beliebige Art von Schnittstellenstandard implementiert werden, wie etwa eine Ethernet-Schnittstelle, einen Universal Serial Bus (USB), eine Bluetooth-Schnittstelle, eine Nahfeldkommunikation (NFC)-Schnittstelle und/oder eine PCI-express-Schnittstelle.
  • Bei dem veranschaulichten Beispiel sind eine oder mehrere Eingabevorrichtungen 822 mit der Schnittstellenschaltung 820 verbunden. Die Eingabevorrichtung(en) 822 ermöglichte ermöglichen) einem Benutzer, Daten und/oder Befehle in den Prozessor 812 einzugeben. Die Eingabevorrichtung(en) kann/können zum Beispiel durch eine Tastatur, eine Taste, eine Maus, einen Touchscreen, ein Trackpad, einen Trackball, einen Isopoint und/oder ein Spracherkennungssystem implementiert sein.
  • Mit der Schnittstellenschaltung 820 des veranschaulichten Beispiels ist/sind auch eine oder mehrere Ausgabevorrichtungen 824 verbunden. Die Ausgabevorrichtungen 824 können zum Beispiel durch Anzeigevorrichtungen (z. B. eine Leuchtdiode (LED), eine organische Leuchtdiode (OLED), eine Flüssigkristallanzeige (LCD), eine Kathodenstrahlröhre (CRT), eine In-Place-Switching-Anzeige (IPS-Anzeigt), einen Touchscreen usw.), eine taktile Ausgabevorrichtung, einen Drucker und/oder Lautsprecher implementiert sein. Die Schnittstellenschaltung 820 des veranschaulichten Beispiels beinhaltet dementsprechend typischerweise eine Grafiktreiberkarte, einen Grafiktreiberchip und/oder einen Grafiktreiberprozessor.
  • Die Schnittstellenschaltung 820 des veranschaulichten Beispiels beinhaltet auch eine Kommunikationsvorrichtung wie etwa einen Sender, einen Empfänger, einen Sendeempfänger, ein Modem, ein Wohndaten-Gateway, einen Drahtloszugangspunkt und/oder eine Netzwerkschnittstelle, um den Austausch von Daten mit externen Maschinen (z. B. Rechenvorrichtungen beliebiger Art) über ein Netzwerk 826 zu ermöglichen. Die Kommunikation kann zum Beispiel über eine Ethernet-Verbindung, eine DSL-Verbindung (DSL: Digital Subscriber Line), eine Telefonleitungsverbindung, ein Koaxialkabelsystem, ein Satellitensystem, ein Drahtlosleitungssystem, ein Mobilfunksystem usw. erfolgen.
  • Die Prozessorplattform 800 des veranschaulichten Beispiels beinhaltet auch eine oder mehrere Massenspeichereinrichtungen 828 zum Speichern von Software und/oder Daten. Beispiele für solche Massenspeichereinrichtungen 828 sind u. a. Diskettenlaufwerke, Festplatten, Compact-Disc-Laufwerke, Blu-Ray-Disc-Laufwerke, RAID-Systeme (RAID Redundant Array of Independent Disks) und DVD-Laufwerke (DVD: Digital Versatile Disk).
  • Die maschinenausführbaren Anweisungen 832 der 5, 6 und 7 können in der Massenspeichervorrichtung 828, in dem flüchtigen Speicher 814, in dem nichtflüchtigen Speicher 816 und/oder auf einem entfernbaren nichtflüchtigen computerlesbaren Speichermedium wie etwa einer CD oder DVD gespeichert sein.
  • Ein Blockdiagramm, das eine beispielhafte Softwareverteilungsplattform 905 zum Verteilen von Software wie etwa den beispielhaften computerlesbaren Anweisungen 832 von 8 an Dritte veranschaulicht, ist in 9 veranschaulicht. Die beispielhafte Softwareverteilungsplattform 905 kann durch einen beliebigen Computerserver, eine beliebige Dateneinrichtung, einen beliebigen Cloud-Dienst usw. implementiert sein, der in der Lage ist, Software zu speichern und zu anderen Rechenvorrichtungen zu übertragen. Die Dritten können Kunden der Entität sein, die im Besitz der Softwareverteilungsplattform sind und/oder diese betreiben. Beispielsweise kann die Entität, die die Softwareverteilungsplattform besitzt und/oder betreibt, ein Entwickler, ein Verkäufer und/oder ein Lizenzgeber von Software wie etwa der beispielhaften computerlesbaren Anweisungen 832 von 8 sein. Die Dritten können Verbraucher, Benutzer, Einzelhändler, OEMs usw. sein, die die Software zur Verwendung und/oder zum Weiterverkauf und/oder zur Unterlizenzierung erwerben. Im veranschaulichten Beispiel beinhaltet die Softwareverteilungsplattform 905 einen oder mehrere Server und eine oder mehrere Speichervorrichtungen. Die Speichervorrichtungen speichern die computerlesbaren Anweisungen 832, die den beispielhaften computerlesbaren Anweisungen der 5, 6 oder 7 entsprechen können, wie oben beschrieben. Der eine oder die mehreren Server der beispielhaften Softwareverteilungsplattform 905 stehen in Kommunikation mit einem Netzwerk 910, das einem beliebigen oder mehreren beliebigen des Internets und/oder beliebigen der oben beschriebenen beispielhaften Netzwerke 826 entsprechen kann. In manchen Beispielen reagieren der eine oder die mehreren Server auf Anforderungen, die Software als Teil einer kommerziellen Transaktion an eine anfordernde Partei zu übertragen. Die Zahlung für die Lieferung, den Verkauf und/oder die Lizenz der Software kann durch den einen oder die mehreren Server der Softwareverteilungsplattform und/oder über eine Drittpartei-Zahlungsentität gehandhabt werden. Die Server ermöglichen es Käufern und/oder Lizenzgebern, die computerlesbaren Anweisungen 832 von der Softwareverteilungsplattform 905 herunterzuladen. Zum Beispiel kann die Software, die den beispielhaften computerlesbaren Anweisungen der 5, 6 oder 7 entsprechen kann, auf die beispielhafte Prozessorplattform 800 heruntergeladen werden, die dazu dient, die computerlesbaren Anweisungen 832 auszuführen, um den programmabgeleiteten semantischen Graphenkonstruktor 204 zu implementieren. In manchen Beispielen bieten ein oder mehrere Server der Softwareverteilungsplattform 905 der Software periodisch Aktualisierungen an, übertragen sie auf diese und/oder zwingen sie dieser auf (z. B. die beispielhaften computerlesbaren Anweisungen 832 von 8), um sicherzustellen, dass Verbesserungen, Patches, Aktualisierungen usw. verteilt und auf die Software an den Endbenutzervorrichtungen angewandt werden.
  • Aus dem Vorstehenden versteht es sich, dass beispielhafte Verfahren, Einrichtungen und Herstellungsartikel offenbart wurden, die programmabgeleitete semantische Graphen konstruieren. Die offenbarten Verfahren, Einrichtungen und Herstellungsartikel verbessern die Effizienz der Verwendung einer Rechenvorrichtung, indem Vergleiche zwischen Codeschnipseln basierend auf programmabgeleiteten semantischen Graphen, Codevorschlägen für Entwickler während des Codierungsprozesses und Schützen vor Plagiaten von Codierprogrammen ermöglicht werden. Die offenbarten Verfahren, Einrichtungen und Herstellungsgegenstände richten sich dementsprechend auf eine oder mehrere Verbesserungen der Funktionsweise eines Computers.
  • Beispielhafte Verfahren, Einrichtungen, Systeme und Herstellungsartikel zum Konstruieren programmabgeleiteter semantischer Graphen sind hier offenbart. Als weitere Beispiele und Kombinationen davon seien genannt:
  • Beispiel 1 beinhaltet eine Einrichtung zum Konstruieren und Vergleichen programmabgeleiteter semantischer Graphen (PSGs), wobei die Einrichtung umfasst: einen Blattknotenerzeuger zum Identifizieren eines ersten Satzes von Knoten innerhalb eines Parse-Baums und Einstellen einer ersten Abstraktionsebene des PSG, um den ersten Satz von Knoten aufzunehmen, einen Abstraktionsebenenbestimmer zum Zugreifen auf einen zweiten Satz von Knoten, wobei der zweite Satz von Knoten der Satz von Knoten im PSG ist, und Erzeugen eines dritten Satzes von Knoten, wobei der dritte Satz von Knoten mögliche Knoten auf einer aktuellen Abstraktionsebene aufnehmen soll, und Bestimmen, ob die aktuelle Abstraktionsebene deterministisch ist, einen regelbasierten Abstraktionsebenenerzeuger zum Konstruieren der aktuellen Abstraktionsebene als Reaktion auf das Bestimmen, dass die aktuelle Abstraktionsebene deterministisch ist, und einen PSG-Komparator zum Zugreifen auf einen ersten PSG und einen zweiten PSG und Bestimmen, ob der erste PSG und der zweite PSG eine Ähnlichkeitsschwelle erfüllen.
  • Beispiel 2 beinhaltet die Einrichtung von Beispiel 1, wobei der erste Satz von Knoten ein Satz von Syntaxknoten im Parse-Baum ist.
  • Beispiel 3 beinhaltet die Einrichtung von Beispiel 1, wobei eine Abstraktionsebene deterministisch ist, wenn mindestens ein Knoten im zweiten Satz von Knoten mindestens zwei mögliche Elternknoten im dritten Satz von Knoten aufweist.
  • Beispiel 4 beinhaltet die Einrichtung von Beispiel 1, wobei zum Konstruieren der aktuellen Abstraktionsebene der regelbasierte Abstraktionsebenenerzeuger dazu dient, auf den zweiten Satz von Knoten und den dritten Satz von Knoten zuzugreifen, einen vierten Satz von Knoten innerhalb des dritten Satzes von Knoten, die Eltern von mindestens einem Knoten im zweiten Satz von Knoten sind, zu bestimmen und die aktuelle Abstraktionsebene einzustellen, um den vierten Satz von Knoten aufzunehmen.
  • Beispiel 5 beinhaltet die Einrichtung von Beispiel 1, beinhaltend einen lernbasierten Abstraktionsebenenerzeuger zum Erzeugen eines vierten Satzes von Knoten als Reaktion auf das Bestimmen, dass die aktuelle Abstraktionsebene nicht deterministisch ist, wobei zum Erzeugen des vierten Satzes von Knoten der lernbasierte Abstraktionsebenenerzeuger dazu dient, Knoten innerhalb des zweiten Satzes von Knoten mit einem möglichen Elternknoten im dritten Satz von Knoten zu identifizieren, identifizierte Elternknoten zum vierten Satz von Knoten hinzuzufügen, Knoten innerhalb des zweiten Satzes von Knoten mit mindestens zwei möglichen Elternknoten im dritten Satz von Knoten zu identifizieren und einen der mindestens zwei möglichen Elternknoten, der zum vierten Satz von Knoten hinzuzufügen ist, zu bestimmen und den vierten Satz von Knoten als aktuelle Abstraktionsebene im PSG festzulegen.
  • Beispiel 6 beinhaltet die Einrichtung von Beispiel 1, wobei der zweite Satz von Knoten ein Satz von Knoten ist, die eine Gewichtungsschwelle erfüllen.
  • Beispiel 7 beinhaltet die Einrichtung von Beispiel 1, die einen Parse-Baumerzeuger beinhaltet, um auf ein Codeschnipsel zuzugreifen und einen Parse-Baum basierend auf dem Codeschnipsel zu konstruieren.
  • Beispiel 8 beinhaltet mindestens ein nichtflüchtiges computerlesbares Medium, das Anweisungen umfasst, die bei Ausführung bewirken, dass eine Rechenvorrichtung einen ersten Satz von Knoten innerhalb eines Parse-Baums identifiziert, eine erste Abstraktionsebene eines programmabgeleiteten semantischen Graphen (PSG) so einstellt, dass sie den ersten Satz von Knoten beinhaltet, auf einen zweiten Satz von Knoten zugreift, wobei der zweite Satz von Knoten den Satz von Knoten im PSG beinhalten soll, einen dritten Satz von Knoten erzeugt, wobei der dritte Satz mögliche Knoten auf einer aktuellen Abstraktionsebene aufnehmen soll, bestimmt, ob eine aktuelle Abstraktionsebene deterministisch ist, als Reaktion auf das Bestimmen, dass die aktuelle Abstraktionsebene deterministisch ist, die aktuelle Abstraktionsebene konstruiert, auf einen ersten PSG und einen zweiten PSG zugreift und bestimmt, ob der erste PSG und der zweite PSG eine Ähnlichkeitsschwelle erfüllen.
  • Beispiel 9 beinhaltet das mindestens eine nichtflüchtige computerlesbare Medium von Beispiel 8, wobei der erste Satz von Knoten ein Satz von Syntaxknoten im Parse-Baum ist.
  • Beispiel 10 beinhaltet das mindestens eine nichtflüchtige computerlesbare Medium von Beispiel 8, wobei die aktuelle Abstraktionsebene deterministisch ist, wenn mindestens ein Knoten im zweiten Satz von Knoten mindestens zwei mögliche Elternknoten im dritten Satz von Knoten aufweist.
  • Beispiel 11 beinhaltet das mindestens eine nichtflüchtige computerlesbare Medium von Beispiel 8, wobei die Anweisungen bei Ausführung die Rechenvorrichtung veranlassen, um die aktuelle Abstraktionsebene zu konstruieren, auf den zweiten Satz von Knoten und den dritten Satz von Knoten zuzugreifen und einen vierten Satz von Knoten innerhalb des dritten Satzes von Knoten, die Eltern von mindestens einem Knoten im zweiten Satz von Knoten sind, zu bestimmen und die aktuelle Abstraktionsebene so einzustellen, dass sie den vierten Satz von Knoten umfasst.
  • Beispiel 12 beinhaltet das mindestens eine nichtflüchtige computerlesbare Medium von Beispiel 8, wobei die Anweisungen bei Ausführung die Rechenvorrichtung dazu veranlassen, als Reaktion auf das Bestimmen, dass die aktuelle Abstraktionsebene nicht deterministisch ist, einen vierten Satze von Knoten zu erzeugen, wobei zum Erzeugen des vierten Satzes von Knoten die Rechenvorrichtung dazu dient, Knoten innerhalb des zweiten Satzes von Knoten mit einem möglichen Elternknoten im dritten Satz von Knoten zu identifizieren, identifizierte Elternknoten zum vierten Satz von Knoten hinzuzufügen, Knoten innerhalb des zweiten Satzes von Knoten mit mindestens zwei möglichen Elternknoten im dritten Satz von Knoten zu identifizieren und einen der mindestens zwei möglichen Elternknoten, der zum vierten Satz von Knoten hinzuzufügen ist, zu bestimmen und den vierten Satz von Knoten als aktuelle Abstraktionsebene im PSG festzulegen.
  • Beispiel 13 beinhaltet das mindestens eine nichtflüchtige computerlesbare Medium von Beispiel 12, wobei der zweite Satz von Knoten ein Satz von Knoten ist, die eine Gewichtungsschwelle erfüllen.
  • Beispiel 14 beinhaltet das mindestens eine nichtflüchtige computerlesbare Medium von Beispiel 8, wobei die Anweisungen bei Ausführung die Rechenvorrichtung veranlassen, auf ein Codeschnipsel zuzugreifen und einen Parse-Baum basierend auf dem Codeschnipsel zu konstruieren.
  • Beispiel 15 beinhaltet ein Verfahren zum Konstruieren eines programmabgeleiteten semantischen Graphen (PSG), wobei das Verfahren umfasst: Identifizieren eines ersten Satzes von Knoten innerhalb eines Parse-Baums, Einstellen einer ersten Abstraktionsebene eines programmabgeleiteten semantischen Graphen (PSG), um den ersten Satz von Knoten zu enthalten, Zugreifen auf einen zweiten Satz von Knoten, wobei der zweite Satz von Knoten den Satz von Knoten im PSG beinhalten soll, Erzeugen eines dritten Satzes von Knoten, wobei der dritte Satz von Knoten mögliche Knoten auf einer aktuellen Abstraktionsebene beinhalten soll, Bestimmen, ob eine aktuelle Abstraktionsebene deterministisch ist, als Reaktion auf das Bestimmen, dass die aktuelle Abstraktionsebene deterministisch ist, Konstruieren der aktuellen Abstraktionsebene, Zugreifen auf einen ersten PSG und einen zweiten PSG und Bestimmen, ob der erste PSG und der zweite PSG einen Ähnlichkeit Schwellenwert erfüllen.
  • Beispiel 16 beinhaltet das Verfahren von Beispiel 15, wobei der erste Satz von Knoten ein Satz von Syntaxknoten im Parse-Baum ist.
  • Beispiel 17 beinhaltet das Verfahren von Beispiel 15, wobei die aktuelle Abstraktionsebene deterministisch ist, wenn mindestens ein Knoten im zweiten Satz von Knoten mindestens zwei mögliche Elternknoten im dritten Satz von Knoten aufweist.
  • Beispiel 18 beinhaltet das Verfahren von Beispiel 15, wobei die Konstruktion der aktuellen Abstraktionsebene Zugreifen auf den zweiten Satz von Knoten und den dritten Satz von Knoten, Bestimmen eines vierten Satzes von Knoten innerhalb des dritten Satzes von Knoten, die Eltern von mindestens einem Knoten im zweiten Satz von Knoten sind, und Einstellen der aktuellen Abstraktionsebene, sodass sie den vierten Satz von Knoten beinhaltet, beinhaltet.
  • Beispiel 19 beinhaltet das Verfahren von Beispiel 15, ferner beinhaltend als Reaktion auf das Bestimmen, dass die aktuelle Abstraktionsebene nicht deterministisch ist, Erzeugen eines vierten Satzes von Knoten durch Identifizieren von Knoten innerhalb des zweiten Satzes von Knoten mit einem möglichen Elternknoten im dritten Satz von Knoten, Hinzufügen identifizierter Elternknoten zum vierten Satz von Knoten, Identifizieren von Knoten innerhalb des zweiten Satzes von Knoten mit mindestens zwei möglichen Elternknoten im dritten Satz von Knoten und Bestimmen eines der mindestens zwei möglichen Elternknoten, der zu dem vierten Satz von Knoten hinzuzufügen ist, und Festlegen des vierten Satzes von Knoten als aktuelle Abstraktionsebene im PSG.
  • Beispiel 20 beinhaltet das Verfahren von Beispiel 19, wobei der zweite Satz von Knoten ein Satz von Knoten ist, die eine Gewichtungsschwelle erfüllen.
  • Beispiel 21 beinhaltet das Verfahren von Beispiel 15, ferner beinhaltend Zugreifen auf ein Codeschnipsel und Konstruieren eines Parse-Baums basierend auf dem Codeschnipsel.
  • Beispiel 22 beinhaltet ein Computersystem zum Konstruieren und Vergleichen programmabgeleiteter semantischer Graphen (PSGs), die Speicher und einen oder mehrere Prozessoren zum Ausführen von Anweisungen umfassen, um zu bewirken, dass der eine oder die mehreren Prozessoren einen ersten Satz von Knoten innerhalb eines Parse-Baums identifizieren, eine erste Abstraktionsebene eines programmabgeleiteten semantischen Graphen (PSG) einstellen, um den ersten Satz von Knoten zu enthalten, auf einen zweiten Satz von Knoten zugreifen, wobei der zweite Satz von Knoten den Satz von Knoten im PSG beinhalten soll, einen dritten Satz von Knoten erzeugen, wobei der dritte Satz von Knoten die möglichen Knoten auf einer aktuellen Abstraktionsebene beinhalten soll, bestimmen, ob eine aktuelle Abstraktionsebene deterministisch ist, als Reaktion auf das Bestimmen, dass die aktuelle Abstraktionsebene deterministisch ist, die aktuelle Abstraktionsebene konstruieren, auf einen ersten PSG und einen zweiten PSG zugreifen und bestimmen, ob der erste PSG und der zweite PSG eine Ähnlichkeitsschwelle erfüllen.
  • Beispiel 23 beinhaltet das Computersystem von Beispiel 22, wobei der erste Satz von Knoten ein Satz von Syntaxknoten im Parse-Baum ist.
  • Beispiel 24 beinhaltet das Computersystem von Beispiel 22, wobei die aktuelle Abstraktionsebene deterministisch ist, wenn mindestens ein Knoten im zweiten Satz von Knoten mindestens zwei mögliche Elternknoten im dritten Satz von Knoten aufweist.
  • Beispiel 25 beinhaltet das Computersystem des Beispiels 22, wobei die Konstruktion der aktuellen Abstraktionsebene Zugreifen auf den zweiten Satz von Knoten und den dritten Satz von Knoten und Bestimmen eines vierten Satzes von Knoten innerhalb des dritten Satzes von Knoten, die Eltern von mindestens einem Knoten im zweiten Satz von Knoten sind, und Einstellen der aktuellen Abstraktionsebene, sodass sie den vierten Satz von Knoten beinhaltet, beinhaltet.
  • Beispiel 26 beinhaltet das Computersystem von Beispiel 22, ferner beinhaltend einen lernbasierten Abstraktionsebenenerzeuger zum Erzeugen eines vierten Satzes von Knoten als Reaktion auf das Bestimmen, dass die aktuelle Abstraktionsebene nicht deterministisch ist, wobei der lernbasierte Abstraktionsebenenerzeuger dazu dient, Knoten innerhalb des zweiten Satzes von Knoten mit einem möglichen Elternknoten im dritten Satz von Knoten zu identifizieren, identifizierte Elternknoten zum vierten Satz von Knoten hinzuzufügen, Knoten innerhalb des zweiten Satzes von Knoten mit mindestens zwei möglichen Elternknoten im dritten Satz von Knoten zu identifizieren und einen der mindestens zwei möglichen Elternknoten, der zu dem vierten Satz von Knoten hinzuzufügen ist, zu bestimmen und den vierten Satz von Knoten als aktuelle Abstraktionsebene im PSG festzulegen.
  • Beispiel 27 beinhaltet das Computersystem von Beispiel 26, wobei der zweite Satz von Knoten ein Satz von Knoten ist, die eine Gewichtungsschwelle erfüllen.
  • Beispiel 28 beinhaltet das Computersystem des Beispiels 22, einschließlich Zugreifen auf ein Codeschnipsel und Konstruieren eines Parse-Baums basierend auf dem Codeschnipsel.
  • Beispiel 29 beinhaltet eine Vorrichtung zum Konstruieren eines programmabgeleiteten semantischen Graphen (PSG), wobei die Vorrichtung umfasst: Mittel für einen Blattknotenerzeuger zum Identifizieren eines ersten Satzes von Knoten innerhalb eines Parse-Baums und Einstellen einer ersten Abstraktionsebene eines programmabgeleiteten semantischen Graphen (PSG), um den ersten Satz von Knoten zu enthalten, Mittel für einen Abstraktionsebenenbestimmer zum Zugreifen auf einen zweiten Satz von Knoten, wobei der zweite Satz von Knoten den Satz von Knoten im PSG beinhalten soll, Erzeugen eines dritten Satzes, wobei der dritte Satz von Knoten die möglichen Knoten auf einer aktuellen Abstraktionsebene beinhalten soll, Bestimmen, ob eine aktuelle Abstraktionsebene deterministisch ist, Mittel für einen regelbasierten Abstraktionsebenenerzeuger zum Konstruieren der aktuellen Abstraktionsebene als Reaktion auf das Bestimmen, dass die aktuelle Abstraktionsebene deterministisch ist, Mittel für einen PSG-Komparator zum Zugreifen auf einen ersten PSG und einen zweites PSG und Bestimmen, ob der erste PSG und der zweite PSG eine Ähnlichkeitsschwelle erfüllen.
  • Beispiel 30 beinhaltet die Einrichtung von Beispiel 29, wobei der erste Satz von Knoten ein Satz von Syntaxknoten im Parse-Baum ist.
  • Beispiel 31 beinhaltet die Vorrichtung von Beispiel 29, wobei die aktuelle Abstraktionsebene deterministisch ist, wenn mindestens ein Knoten im zweiten Satz von Knoten mindestens zwei mögliche Elternknoten im dritten Satz von Knoten aufweist.
  • Beispiel 32 beinhaltet die Einrichtung des Beispiels 29, wobei die Konstruktion der aktuellen Abstraktionsebene Mittel für den regelbasierten Abstraktionsebenenerzeuger beinhalten, um auf den zweiten Satz von Knoten und den dritten Satz von Knoten zuzugreifen, einen vierten Satz von Knoten innerhalb des dritten Satzes von Knoten, die Eltern von mindestens einem Knoten im zweiten Satz von Knoten sind, zu bestimmen und die aktuelle Abstraktionsebene festlegt, um den vierten Satz von Knoten aufzunehmen.
  • Beispiel 33 beinhaltet die Vorrichtung von Beispiel 29, beinhaltend Mittel für einen lernbasierten Abstraktionsebenenerzeuger zum Erzeugen eines vierten Satzes von Knoten als Reaktion auf das Bestimmen, dass die aktuelle Abstraktionsebene nicht deterministisch ist, wobei zum Erzeugen des vierten Satzes von Knoten der lernbasierte Abstraktionsebenenerzeuger dazu dient, Knoten innerhalb des zweiten Satzes von Knoten mit einem möglichen Elternknoten im dritten Satz von Knoten zu identifizieren, identifizierte Elternknoten zum vierten Satz von Knoten hinzuzufügen, Knoten innerhalb des zweiten Satzes von Knoten mit mindestens zwei möglichen Elternknoten im dritten Satz von Knoten zu identifizieren und einen der mindestens zwei möglichen Elternknoten zu bestimmen, der zu dem vierten Satz von Knoten hinzuzufügen ist, und Mittel zum Festlegen des vierten Satzes von Knoten als aktuelle Abstraktionsebene im PSG.
  • Beispiel 34 beinhaltet die Einrichtung von Beispiel 33, wobei der zweite Satz von Knoten ein Satz von Knoten ist, die eine Gewichtungsschwelle erfüllen.
  • Beispiel 35 beinhaltet die Vorrichtung des Beispiels 29, die Mittel zum Zugreifen auf ein Codeschnipsel und Mittel zum Konstruieren eines Parse-Baums basierend auf dem Codeschnipsel beinhaltet.
  • Obwohl bestimmte beispielhafte Verfahren, Einrichtungen und Herstellungsartikel hierin offenbart wurden, ist der Schutzbereich dieses Patents nicht darauf beschränkt. Im Gegenteil deckt dieses Patent alle Verfahren, Vorrichtungen und Herstellungsgegenstände ab, die angemessen in den Schutzumfang der Ansprüche dieses Patents fallen.
  • Die folgenden Ansprüche werden hiermit durch diese Bezugnahme in diese ausführliche Beschreibung aufgenommen, wobei jeder Anspruch für sich allein als eine separate Ausführungsform der vorliegenden Offenbarung steht.

Claims (25)

  1. Einrichtung zum Konstruieren und Vergleichen programmabgeleiteter semantischer Graphen, wobei die Einrichtung Folgendes umfasst: einen Blattknotenerzeuger zu Folgendem: Identifizieren eines ersten Satzes von Knoten innerhalb eines Parse-Baums; und Einstellen einer ersten Abstraktionsebene eines programmabgeleiteten semantischen Graphen (PSG), um den ersten Satz von Knoten zu beinhalten; einen Abstraktionsebenenbestimmer zu Folgendem: Zugreifen auf einen zweiten Satz von Knoten, wobei der zweite Satz von Knoten Knoten im PSG beinhalten soll; Erzeugen eines dritten Satzes von Knoten, wobei der dritte Satz von Knoten mögliche Knoten auf einer aktuellen Abstraktionsebene beinhalten soll; und Bestimmen, ob die aktuelle Abstraktionsebene deterministisch ist, einen regelbasierten Abstraktionsebenenerzeuger zu Folgendem: Konstruieren der aktuellen Abstraktionsebene als Reaktion auf das Bestimmen, dass die aktuelle Abstraktionsebene deterministisch ist, und einen PSG-Komparator zu Folgendem: Zugreifen auf einen ersten PSG und einen zweiten PSG; und Bestimmen, ob der erste PSG und der zweite PSG eine Ähnlichkeitsschwelle erfüllen.
  2. Einrichtung nach Anspruch 1, wobei der erste Satz von Knoten ein Satz von Syntaxknoten im Parse-Baum ist.
  3. Einrichtung nach Anspruch 1 oder Anspruch 2, wobei eine Abstraktionsebene deterministisch ist, wenn mindestens ein Knoten im zweiten Satz von Knoten mindestens zwei mögliche Elternknoten im dritten Satz von Knoten aufweist.
  4. Einrichtung nach einem der Ansprüche 1 bis 3, wobei zum Konstruieren der aktuellen Abstraktionsebene der regelbasierte Abstraktionsebenenerzeuger ausgelegt ist zu Folgenden: Zugreifen auf den zweiten Satz von Knoten und den dritten Satz von Knoten; Bestimmen eines vierten Satzes von Knoten innerhalb des dritten Satzes von Knoten, die Eltern von mindestens einem Knoten im zweiten Satz von Knoten sind; und Einstellen der aktuellen Abstraktionsebene, um den vierten Satz von Knoten aufzunehmen.
  5. Vorrichtung nach einem der Ansprüche 1 bis 4, die einen lernbasierten Abstraktionsebenenerzeuger beinhaltet zu Folgendem: Erzeugen eines vierten Satzes von Knoten als Reaktion auf das Bestimmen, dass die aktuelle Abstraktionsebene nicht deterministisch ist, wobei zum Erzeugen des vierten Satzes von Knoten der lernbasierte Abstraktionsebenenerzeuger ausgelegt ist zu Folgendem: Identifizieren von Knoten innerhalb des zweiten Satzes von Knoten mit einem möglichen Elternknoten im dritten Satz von Knoten; Hinzufügen identifizierter Elternknoten zum vierten Satz von Knoten; Identifizieren von Knoten innerhalb des zweiten Satzes von Knoten mit mindestens zwei möglichen Elternknoten im dritten Satz von Knoten; und Bestimmen eines der mindestens zwei möglichen Elternknoten zum Hinzufügen zum vierten Satz von Knoten; und Festlegen des vierten Satzes von Knoten als aktuelle Abstraktionsebene im PSG.
  6. Vorrichtung nach einem der Ansprüche 1 bis 5, wobei der zweite Satz von Knoten ein Satz von Knoten ist, die eine Gewichtungsschwelle erfüllen.
  7. Einrichtung nach einem der Ansprüche 1 bis 6, die einen Parse-Baumerzeuger beinhaltet zu Folgendem: Zugreifen auf ein Codeschnipsel; und Konstruieren eines Parse-Baums basierend auf dem Codeschnipsel.
  8. Mindestens ein computerlesbares Medium, das Anweisungen umfasst, die bei Ausführung eine Rechenvorrichtung zu Folgendem veranlassen: Identifizieren eines ersten Satzes von Knoten innerhalb eines Parse-Baums; Einstellen einer ersten Abstraktionsebene eines programmabgeleiteten semantischen Graphen (PSG), um den ersten Satz von Knoten zu beinhalten; Zugreifen auf einen zweiten Satz von Knoten, wobei der zweite Satz von Knoten Knoten im PSG beinhalten soll; Erstellen eines dritten Satzes von Knoten, wobei der dritte Satz von Knoten mögliche Knoten auf einer aktuellen Abstraktionsebene beinhalten soll; Bestimmen, ob eine aktuelle Abstraktionsebene deterministisch ist, Konstruieren der aktuellen Abstraktionsebene als Reaktion auf das Bestimmen, dass die aktuelle Abstraktionsebene deterministisch ist, Zugreifen auf einen ersten PSG und einen zweiten PSG; und Bestimmen, ob der erste PSG und der zweite PSG eine Ähnlichkeitsschwelle erfüllen.
  9. Mindestens ein computerlesbares Medium nach Anspruch 8, wobei der erste Satz von Knoten ein Satz von Syntaxknoten im Parse-Baum ist.
  10. Mindestens ein computerlesbares Medium nach Anspruch 8 oder Anspruch 9, wobei die aktuelle Abstraktionsebene deterministisch ist, wenn mindestens ein Knoten im zweiten Satz von Knoten mindestens zwei mögliche Elternknoten im dritten Satz von Knoten aufweist.
  11. Mindestens ein computerlesbares Medium nach einem der Ansprüche 8 bis 10, wobei die Anweisungen bei Ausführung bewirken, dass die Rechenvorrichtung zum Konstruieren der aktuellen Abstraktionsebene Folgendes durchführt: Zugreifen auf den zweiten Satz von Knoten und den dritten Satz von Knoten und Bestimmen eines vierten Satzes von Knoten innerhalb des dritten Satzes von Knoten, die Eltern von mindestens einem Knoten im zweiten Satz von Knoten sind; und Einstellen der aktuellen Abstraktionsebene, um den vierten Satz von Knoten aufzunehmen.
  12. Mindestens ein computerlesbares Medium nach einem der Ansprüche 8 bis 11, wobei die Anweisungen bei Ausführung die Rechenvorrichtung zu Folgendem veranlassen: Erzeugen eines vierten Satzes von Knoten als Reaktion auf das Bestimmen, dass die aktuelle Abstraktionsebene nicht deterministisch ist, wobei die Rechenvorrichtung zum Erzeugen des vierten Satzes von Knoten ausgelegt ist zu Folgendem: Identifizieren von Knoten innerhalb des zweiten Satzes von Knoten mit einem möglichen Elternknoten im dritten Satz von Knoten; Hinzufügen identifizierter Elternknoten zum vierten Satz von Knoten; Identifizieren von Knoten innerhalb des zweiten Satzes von Knoten mit mindestens zwei möglichen Elternknoten im dritten Satz von Knoten; und Bestimmen eines der mindestens zwei möglichen Elternknoten zum Hinzufügen zum vierten Satz von Knoten; und Festlegen des vierten Satzes von Knoten als aktuelle Abstraktionsebene im PSG.
  13. Mindestens ein computerlesbares Medium nach einem der Ansprüche 8 bis 12, wobei der zweite Satz von Knoten ein Satz von Knoten ist, die eine Gewichtungsschwelle erfüllen.
  14. Mindestens ein computerlesbares Medium nach einem der Ansprüche 8 bis 13, wobei die Anweisungen bei Ausführung die Rechenvorrichtung zu Folgendem veranlassen: Zugreifen auf ein Codeschnipsel; und Konstruieren eines Parse-Baums basierend auf dem Codeschnipsel.
  15. Verfahren zum Konstruieren programmabgeleiteter semantischer Graphen, wobei das Verfahren Folgendes umfasst: Identifizieren eines ersten Satzes von Knoten innerhalb eines Parse-Baums; Einstellen einer ersten Abstraktionsebene eines programmabgeleiteten semantischen Graphen (PSG), um den ersten Satz von Knoten zu enthalten; Zugreifen auf einen zweiten Satz von Knoten, wobei der zweite Satz von Knoten Knoten im PSG beinhalten soll; Erzeugen eines dritten Satzes von Knoten, wobei der dritte Satz von Knoten mögliche Knoten auf einer aktuellen Abstraktionsebene beinhalten soll; Bestimmen, ob eine aktuelle Abstraktionsebene deterministisch ist, Konstruieren der aktuellen Abstraktionsebene als Reaktion auf das Bestimmen, dass die aktuelle Abstraktionsebene deterministisch ist, Zugreifen auf einen ersten PSG und einen zweiten PSG; und Bestimmen, ob der erste PSG und der zweite PSG eine Ähnlichkeitsschwelle erfüllen.
  16. Verfahren nach Anspruch 15, wobei der erste Satz von Knoten ein Satz von Syntaxknoten in dem Parse-Baum ist.
  17. Verfahren nach Anspruch 15 oder Anspruch 16, wobei die aktuelle Abstraktionsebene deterministisch ist, wenn mindestens ein Knoten im zweiten Satz von Knoten mindestens zwei mögliche Elternknoten im dritten Satz von Knoten aufweist.
  18. Verfahren nach einem der Ansprüche 15 bis 17, wobei die Konstruktion der aktuellen Abstraktionsebene Folgendes beinhaltet: Zugreifen auf den zweiten Satz von Knoten und den dritten Satz von Knoten; Bestimmen eines vierten Satzes von Knoten innerhalb des dritten Satzes von Knoten, die Eltern von mindestens einem Knoten im zweiten Satz von Knoten sind; und Einstellen der aktuellen Abstraktionsebene, um den vierten Satz von Knoten aufzunehmen.
  19. Verfahren nach einem der Ansprüche 15 bis 18, ferner einschließend: als Reaktion auf das Bestimmen, dass die aktuelle Abstraktionsebene nicht deterministisch ist, Erzeugen eines vierten Satzes von Knoten durch: Identifizieren von Knoten innerhalb des zweiten Satzes von Knoten mit einem möglichen Elternknoten im dritten Satz von Knoten; Hinzufügen identifizierter Elternknoten zum vierten Satz von Knoten; Identifizieren von Knoten innerhalb des zweiten Satzes von Knoten mit mindestens zwei möglichen Elternknoten im dritten Satz von Knoten; und Bestimmen eines der mindestens zwei möglichen Elternknoten zum Hinzufügen zum vierten Satz von Knoten; und Einstellen des vierten Satzes von Knoten als aktuelle Abstraktionsebene im PSG.
  20. Verfahren nach einem der Ansprüche 15 bis 19, wobei der zweite Satz von Knoten ein Satz von Knoten ist, die eine Gewichtungsschwelle erfüllen.
  21. Verfahren nach einem der Ansprüche 15 bis 20, das ferner Folgendes beinhaltet: Zugreifen auf ein Codeschnipsel; und Konstruieren eines Parse-Baums basierend auf dem Codeschnipsel.
  22. Einrichtung zum Konstruieren und Vergleichen programmabgeleiteter semantischer Graphen, wobei die Einrichtung Folgendes umfasst: Mittel für einen Blattknotenerzeuger zu Folgendem; Identifizieren eines ersten Satzes von Knoten innerhalb eines Parse-Baums; Einstellen einer ersten Abstraktionsebene eines programmabgeleiteten semantischen Graphen (PSG), um den ersten Satz von Knoten zu enthalten; Mittel für einen Abstraktionsebenenbestimmer zu Folgendem: Zugreifen auf einen zweiten Satz von Knoten, wobei der zweite Satz von Knoten den Satz von Knoten im PSG beinhalten soll; Erstellen eines dritten Satzes von Knoten, wobei der dritte Satz von Knoten die möglichen Knoten auf einer aktuellen Abstraktionsebene beinhalten soll; Bestimmen, ob eine aktuelle Abstraktionsebene deterministisch ist, Mittel für einen regelbasierten Abstraktionsebenenerzeuger zu Folgendem: Konstruieren der aktuellen Abstraktionsebene als Reaktion auf das Bestimmen, dass die aktuelle Abstraktionsebene deterministisch ist, Mittel für einen PSG-Komparator zu Folgendem: Zugreifen auf einen ersten PSG und einen zweiten PSG; und Bestimmen, ob der erste PSG und der zweite PSG eine Ähnlichkeitsschwelle erfüllen.
  23. Einrichtung nach Anspruch 22, wobei der erste Satz von Knoten ein Satz von Syntaxknoten in dem Parse-Baum ist und die aktuelle Abstraktionsebene deterministisch ist, wenn mindestens ein Knoten im zweiten Satz von Knoten mindestens zwei mögliche Elternknoten im dritten Satz von Knoten aufweist.
  24. Einrichtung nach Anspruch 22 oder Anspruch 23, wobei die Konstruktion der aktuellen Abstraktionsebene Folgendes beinhaltet: Mittel für den regelbasierten Abstraktionsebenenerzeuger zu Folgendem: Zugreifen auf den zweiten Satz von Knoten und den dritten Satz von Knoten; Bestimmen eines vierten Satzes von Knoten innerhalb des dritten Satzes von Knoten, die Eltern von mindestens einem Knoten im zweiten Satz von Knoten sind; und Einstellen der aktuellen Abstraktionsebene, um den vierten Satz von Knoten aufzunehmen.
  25. Einrichtung nach einem der Ansprüche 22 bis 24, die Folgendes beinhaltet: Mittel für einen lernbasierten Abstraktionsebenenerzeuger zum Erzeugen eines vierten Satzes von Knoten als Reaktion auf das Bestimmen, dass die aktuelle Abstraktionsebene nicht deterministisch ist, wobei der lernbasierte Abstraktionsebenenerzeuger zum Erzeugen des vierten Satzes von Knoten ausgelegt ist zu Folgendem: Identifizieren von Knoten innerhalb des zweiten Satzes von Knoten mit einem möglichen Elternknoten im dritten Satz von Knoten; Hinzufügen identifizierter Elternknoten zum vierten Satz von Knoten; Identifizieren von Knoten innerhalb des zweiten Satzes von Knoten mit mindestens zwei möglichen Elternknoten im dritten Satz von Knoten; und Bestimmen eines der mindestens zwei möglichen Elternknoten zum Hinzufügen zum vierten Satz von Knoten; und Mittel zum Festlegen des vierten Satzes von Knoten als aktuelle Abstraktionsebene im PSG.
DE102021129845.8A 2020-12-23 2021-11-16 Verfahren und einrichtung zum konstruieren programmabgeleiteter semantischer graphen Pending DE102021129845A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/133,168 2020-12-23
US17/133,168 US20210117807A1 (en) 2020-12-23 2020-12-23 Methods and appartus to construct program-derived semantic graphs

Publications (1)

Publication Number Publication Date
DE102021129845A1 true DE102021129845A1 (de) 2022-06-23

Family

ID=75490912

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021129845.8A Pending DE102021129845A1 (de) 2020-12-23 2021-11-16 Verfahren und einrichtung zum konstruieren programmabgeleiteter semantischer graphen

Country Status (3)

Country Link
US (1) US20210117807A1 (de)
DE (1) DE102021129845A1 (de)
NL (1) NL2029883B1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11487940B1 (en) * 2021-06-21 2022-11-01 International Business Machines Corporation Controlling abstraction of rule generation based on linguistic context
CN116266108A (zh) * 2021-12-17 2023-06-20 北京字跳网络技术有限公司 一种组节点的导出、导入方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10331788B2 (en) * 2016-06-22 2019-06-25 International Business Machines Corporation Latent ambiguity handling in natural language processing
US10735268B2 (en) * 2017-04-21 2020-08-04 System73 Ltd. Predictive overlay network architecture
US10511554B2 (en) * 2017-12-05 2019-12-17 International Business Machines Corporation Maintaining tribal knowledge for accelerated compliance control deployment
US20200074322A1 (en) * 2018-09-04 2020-03-05 Rovi Guides, Inc. Methods and systems for using machine-learning extracts and semantic graphs to create structured data to drive search, recommendation, and discovery
US11514172B2 (en) * 2018-11-15 2022-11-29 Grabango Co. System and method for information flow analysis of application code
US11003444B2 (en) * 2019-06-28 2021-05-11 Intel Corporation Methods and apparatus for recommending computer program updates utilizing a trained model
US11488068B2 (en) * 2020-04-10 2022-11-01 Microsoft Technology Licensing, Llc Machine-learned predictive models and systems for data preparation recommendations
US20220148699A1 (en) * 2020-11-08 2022-05-12 YourCoach Health, Inc. Systems and methods for hosting wellness programs
US20210073632A1 (en) * 2020-11-18 2021-03-11 Intel Corporation Methods, systems, articles of manufacture, and apparatus to generate code semantics

Also Published As

Publication number Publication date
NL2029883A (en) 2022-07-19
US20210117807A1 (en) 2021-04-22
NL2029883B1 (en) 2023-05-25

Similar Documents

Publication Publication Date Title
DE202016008042U1 (de) Infrastruktur für Hosting und Publishing von Softwarepaketen
DE102020110536A1 (de) Verfahren, Systeme, Herstellungsgegenstände und Vorrichtungen für ein kontext- und komplexitätsbewusstes Empfehlungssystem zur verbesserten Softwareentwicklungseffizienz
US9152394B2 (en) Generating application model build artifacts
CN113094037A (zh) 表单和工作流的交互方法、开发平台、设备及存储介质
DE102021129845A1 (de) Verfahren und einrichtung zum konstruieren programmabgeleiteter semantischer graphen
DE112016002120T5 (de) Entwicklungs- und Vetriebsplattform für Software
DE202015009254U1 (de) Automatisch erzeugende ausführungssequenzen für workflows
US20070233680A1 (en) Auto-generating reports based on metadata
DE102020108374A1 (de) Verfahren und vorrichtung zur laufzeitmehrfachplanung von software, die in einem heterogenen system ausgeführt wird
DE102021126598A1 (de) Verfahren, Systeme, Erzeugnisse und Vorrichtungen zur Erzeugung von Codesemantik
DE102020110542A1 (de) Verfahren und einrichtungen zum ver walten von tickets
DE102022129946A1 (de) Verfahren und vorrichtungen zum bestimmen eines verfeinerten kontexts für softwarefehlererkennung und - korrektur
DE102022105725A1 (de) Verfahren und einrichtungen zur durchführung von gewichtungs- und aktivierungskomprimierung und -dekomprimierung
DE102022133809A1 (de) Verfahren, systeme, herstellungsartikel und einrichtungen zur identifizierung von codesemantik
DE102022133799A1 (de) Verfahren, einrichtungen und herstellungsartikel zum erzeugen verwendungsabhängiger codeeinbettungen
DE102020108281A1 (de) Verfahren und einrichtungen zum empfehlen von anweisungsanpassungen zum verbessern der rechenleistung
DE112016005867T5 (de) Live-Pipeline-Vorlagen - Erstellung und Erweiterbarkeit der Vorlagen
US20160239275A1 (en) Generating an integrated service
DE102022129219A1 (de) Verfahren und Vorrichtung für durch maschinelles Lernen gesteuerte Kompiliereroptimierungen für registerbasierte Hardwarearchitekturen
US9830204B2 (en) Facilitating communication between software components that use middleware
DE102022130788A1 (de) Verfahren, einrichtungen und herstellungsartikel zur erzeugung von befehlslisten zur auslagerung an beschleunigerschaltungsanordnung
Stack et al. RBrownie: an R package for testing hypotheses about rates of evolutionary change
US20060058991A1 (en) System and method for optimization process repeatability in an on-demand computing environment
US20220156241A1 (en) Multi-Dimensional Data Tagging and Reuse
DE102021126184A1 (de) Verfahren und einrichtung zum kontinuierlichen überwachen von telemetrie vor ort