SQL Dialog-Skills

SQL-Dialoge sind Skills, mit denen die Äußerungen natürlicher Sprache eines Benutzers in SQL-Abfragen übersetzt, die Abfragen an eine Backend-Datenquelle gesendet und die Antwort angezeigt werden können. Diese Version von SQL Dialogs unterstützt die Integration mit Oracle-Datenbankservices wie Oracle Enterprise Database Service.

Hinweis

Diese Version unterstützt keine mehrsprachigen SQL Dialog-Skills oder -Skills, bei denen die primäre Sprache nicht Englisch ist. Wenn Sie einen neuen Skill (oder eine Version oder einen Klon eines Skills) erstellen, verwenden Sie das Feld Primäre Sprache im Dialogfeld "Erstellen", um die primäre Sprache anzugeben. Ein Skill ist mehrsprachig, wenn das Resource Bundle, Beispieläußerungen, maschinelles Lernen und Wertelisten beispielsweise mehr als eine Sprache haben oder wenn der Dialogablauf Code enthält, um die Sprache der Benutzereingabe zu erkennen und sie im Hintergrund zu übersetzen.

Beim Schreiben von Skills, die Endbenutzer Datenbankinformationen bereitstellen, müssen Entwickler in der Regel die Anwendungsfälle definieren, benutzerdefinierte Komponenten zum Abrufen der Daten schreiben, Intents für die Anwendungsfälle erstellen, Benutzeräußerungen Intents zuordnen und den Dialogablauf zur Verarbeitung jedes Intents schreiben. Mit SQL Dialog Skills müssen Sie diese Schritte nicht ausführen. Stattdessen ordnen Sie die mentalen Modelle der Daten der Benutzer der physischen Datenquelle zu, und der Skill verwendet die Map, um SQL aus Äußerungen in natürlicher Sprache dynamisch zu generieren.

Beispiel: Benutzer wissen, dass Mitarbeiter zu Abteilungen gehören, die sich an verschiedenen Standorten befinden, und sie über Personalnummern, Tätigkeitsbezeichnungen, Einstellungsdaten und manchmal Provisionen verfügen. Angesichts ihres mentalen Modells können sie die Daten abrufen, indem sie die Qualifikation "Was ist James Smiths Job?", "Wann wurde James Smith eingestellt?", "Wie viele Mitarbeiter sind in New York?" und "Wer hat die höchste Provision?" fragen.

Sie erstellen einen SQL Dialog-Skill anders als normale Skills. Damit der Skill Äußerungen in natürlicher Sprache verstehen und darauf reagieren kann, erstellen Sie ein logisches Modell aus dem physischen Modell, und Sie unterrichten dieses Modell mit Begriffen in natürlicher Sprache, um das physische Modell zu beschreiben.

Funktionsweise von SQL-Dialogfeldern

Um einen SQL Dialog-Skill zu implementieren, erstellen Sie einen visuellen Dialog-Skill und importieren Informationen zum physischen Modell (Datenbankschema) aus dem Datenservice. Mit diesen Informationen erstellt Oracle Digital Assistant eine Abfrageentity für jede importierte Tabelle (das logische Modell). Die Abfrageentitys enthalten Attribute, die Tabellenspalten modellieren.

Wenn eine Tabelle im physischen Modell einen Fremdschlüssel aufweist, verfügt die Abfrageentity über ein Attribut, das mit der zugehörigen Abfrageentity verknüpft ist. Beispiel: Wenn eine Emp-Tabelle einen Fremdschlüssel für die Tabelle Dept enthält, weist die Abfrageentity Emp ein dept-Attribut auf, das mit der Entity Dept verknüpft ist.

Sobald Sie die Abfrageentitys erstellen und ihre Primärschlüssel identifizieren, können Sie den Skill trainieren und er kann rudimentär verwendet werden. Das heißt, Sie können Äußerungen in beliebiger Form verwenden. Im Moment muss die Abfrage jedoch die exakten Entity- und Attributprimärnamen verwenden, die ursprünglich aus den Namen des physischen Modells abgeleitet werden (die kanonischen Namen). Dies wird sich ändern, wenn Sie das logische Modell erweitern, um die natürliche Sprache genauer widerzuspiegeln.

Damit Endbenutzer die Daten in natürlicher Sprache abfragen können, ordnen Sie die Endbenutzerterminologie dem physischen Modell zu, indem Sie die Primärnamen ändern und Synonyme für die Abfrageentitys und deren Attribute hinzufügen. Beispiel: Sie können den primären Namen für die Tabelle Emp in "Mitarbeiter" ändern und das Synonym "Mitarbeiter" hinzufügen. Das Hinzufügen von Primärnamen und Synonymen ist zwei der Möglichkeiten, wie Sie den Natural Language Parser (NLP) trainieren, um Äußerungen in Oracle Meaning Representation Query Language-(OMRQL-)Abfragen aufzulösen. OMRQL-Abfragen sind wie SQL-Abfragen, basieren jedoch auf den kanonischen Namen der Objektmodelle (der Abfrageentitys). Beispiel: Wenn Sie den primären Namen für empno in "Mitarbeiternummer" ändern, wird "Wie lautet die Mitarbeiternummer von Joe Smith" in "AUSWAHL empno FROM emp WHERE ename = "Joe Smith" aufgelöst.

Um die Auflösung des Natural Language Processors (NLP) noch weiter zu verbessern, können Sie die Attribute auch Wertelisten zuordnen, die bei der Erstellung automatisch aus dem Datenservice ausgefüllt werden.

Beispiel: Sie importieren die Tabellen Emp und Dept aus einem Datenservice. Dies führt zu Emp- und Dept-Abfrageentitys. Unmittelbar nach dem Import der Tabellen und dem Trainieren des Skills können Sie die Abfrageentitys mit Äußerungen wie den folgenden abfragen:

Show all Emp in dept 10

Nachdem Sie die primären Namen für die Entitys und Attribute in natürliche Sprachbegriffe geändert haben, wie Employees für die Entity und department für das Attribut, können Sie Äußerungen wie die folgende verwenden:

Show all the employees in department 10

Sie können weitere Synonyme hinzufügen, um alle Arten zu modellieren, wie Personen normalerweise auf die Entity oder das Attribut verweisen. Beispiel: Sie können die Synonyme district und territory für department hinzufügen, damit das NLP diese Äußerung erkennt:

Show all employees in district 10

Bei komplexeren Äußerungen können Sie dem Skill beibringen, wie die Abfragen in OMRQL aufgelöst werden, indem Sie benutzerdefinierte Trainingsdaten hinzufügen, mit denen die Äußerungen bestimmten OMRQL-Anweisungen zugeordnet werden.

Wenn Ihr Skill Intents zur Verarbeitung von Nicht-SQL-Anwendungsfällen hat oder in einem DA enthalten ist, möchten Sie dem Abfrageentitäts-Dataset Routingäußerungen hinzufügen, damit der Skill zwischen SQL-bezogenen Äußerungen und nicht-SQL-bezogenen Äußerungen unterscheiden kann.

Wenn der Skill ein Abfrageergebnis ausgibt, kann der Benutzer einen Daumen nach oben oder einen Daumen nach unten geben, um anzugeben, ob das Ergebnis korrekt ist. Auf der Seite "Insights" werden die Daumen nach oben (korrekte Abfragen) und Daumen nach unten (falsche Abfragen) angezeigt, sodass Sie sehen können, wie gut der Skill abschneidet.

Unterstützte Abfragen

Das Verarbeitungsmodell "SQL Dialogs Natural Language Processing" unterstützt Abfragen, die in die grundlegenden SQL-Klauseln übersetzt werden: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY und LIMIT.

Eine Abfrage kann bis zu 3 verschiedene Entitys umfassen. Das heißt, es kann bis zu 2 Joins haben. Abfragen, die 3 Joins enthalten, können je nach Anwendungsfall aufgelöst werden, um Ergebnisse zu korrigieren. Bei mindestens 4 Joins müssen Sie benutzerdefinierte Trainingsdaten hinzufügen, um sicherzustellen, dass der Skill die richtigen Ergebnisse liefert.

SQL Dialogs unterstützt keine komplexeren Abfragen, an denen Unterabfragen und SET-Operatoren beteiligt sind (INTERSECT, UNION, EXCEPT und NONE). Es unterstützt auch keine nicht-englischen Abfragen, Abfragen, die eine Ja- oder Nein-Antwort anfordern, Abfragen mit Pronomen und Folgeabfragen. Weitere Informationen zu diesen und anderen Abfrageeinschränkungen für SQL-Dialogfelder finden Sie unter Fehlerbehebung bei SQL-Abfragen.

Bei einigen Abfragen, die nicht unterstützt werden, können Sie das Problem möglicherweise lösen, indem Sie Datenbankansichten verwenden oder virtuelle Attribute erstellen, wie unter Benutzerdefiniertes Attribut hinzufügen beschrieben.

Im Folgenden finden Sie eine Tabelle, in der die Abfragetypen beschrieben werden, die von SQL Dialogs unterstützt werden. Es verwendet die folgenden Datenbankwerte:

Mitarbeitertabelle

employee_id name Rolle Gehalt department_id
1 Alex Smith VP 500.000 1
2 Samyra Kent Vertriebsmitarbeiter 60.000 1
3 Laticia Fan Vertriebsmitarbeiter 80.000 1

Abteilungstabelle

department_id name Speicherort
1 Sales Dallas

Folgende Abfragetypen werden von SQL Dialogs unterstützt:

Kategorie Beschreibung Beispiele
Anzeige

Sie können eine Entity, Attribute und Attributaggregationen anfordern.

Die unterstützten Aggregationen sind: avg, sum, min, max, count(attribute), count(column), count(distinct attribute)

Wenn die Abfrage keine Attribute benennt, zeigt der Skill die Attribute an, die in der Registerkarte Präsentation der Entity unter Standardattribute aufgeführt sind.

  • mir alle Mitarbeiter anzeigen
  • Name, Gehalt und Abteilungsname der Mitarbeiter
  • Welche einzigartigen Tätigkeiten kann ein Mitarbeiter haben?
  • Anzahl Mitarbeiter
  • das höchste Gehalt aller Mitarbeiter zurückgeben
Filter

Sie können die Zeilen der Tabelle nach Bedingungen für bestimmte Attribute filtern

Textattribute können einem Wert entsprechen, einen Wert enthalten oder mit einem Wert beginnen oder enden.

Sie können verschiedene Vergleiche verwenden, um numerische und Datums-/Uhrzeitspalten zu filtern (=, <, <=, >, >=).

Mit AND und OR können Sie mehrere Bedingungen kombinieren.

  • Namen der Mitarbeiter anzeigen, deren Tätigkeit "Sachbearbeiter" ist
  • das Gehalt aller Angestellten zurückgeben
  • Mitarbeiter, deren Name mit Jo beginnt
  • Mitarbeiter anzeigen, die im Jahr 2020 beigetreten sind und über 7000 Mitarbeiter verdienen
Filter mit Datumsangaben

Berücksichtigen Sie beim Filtern nach einem Datums- oder Datum-/Uhrzeitattribut die folgenden Punkte:

  • Bei Datetime-Attributen müssen die Werte Datums- und Uhrzeitangaben enthalten (10. Dez. 2020 um 3 Uhr).
  • Werte können absolut (10. Dez. 2020) oder relativ (heute) sein.
  • Der Filter kann ein Intervall wie "letztes Jahr" oder "5. Januar bis 5. Juli" sein und Datumsangaben oder Datumsangaben mit Zeiten enthalten.
  • Verwenden Sie die Einstellung Zeitliche Voreinstellung des Attributs auf der Registerkarte Allgemeine Informationen, um festzulegen, ob mehrdeutige Werte, wie "Mittwoch", standardmäßig auf das nächste, vergangene oder zukünftige Datum gesetzt werden sollen.
  • Werte für die Dauer, die in Datumsangaben zwingt werden müssen, wie z.B. "2 Tage", werden unterstützt.
  • Absolutes Beispiel: Wer waren die Mitarbeiter, die am 10. Dezember 2020 eingestellt wurden?
  • Beispiel für ein relatives Intervall: Wer waren die im Vorjahr eingestellten Mitarbeiter?
  • Beispiel für ein relatives Datum: Wer waren die heute eingestellten Mitarbeiter?
  • Beispiel Datum + Uhrzeit: Pakete, die gestern um 6 Uhr geliefert wurden
  • Beispiel für Datum + Zeitintervall: Pakete, die zwischen dem 5. Januar 7 Uhr und dem 5. Februar 10 Uhr geliefert wurden
  • Beispiel für ein nicht eindeutiges Datum: Wer waren die am Mittwoch eingestellten Mitarbeiter?
  • Beispiel für die Dauer: Mitarbeiter, die seit 1 Monat eingestellt wurden
Reihenfolge und Begrenzung der Zeilenanzahl Sie können explizit anfordern, dass der Skill die resultierenden Zeilen nach einem bestimmten Attribut sortiert. Sie können auch eine bestimmte Anzahl der höchsten oder niedrigsten Werte eines Attributs oder einer Entity anfordern.
  • Mitarbeiter sortiert nach Abteilungsnamen anzeigen
  • Mitarbeiter sortiert nach Namen von Z bis A
  • Name und Gehalt aller Mitarbeiter in absteigender Reihenfolge des Gehalts zurückgeben
  • Was sind die 10 höchsten Gehälter aller Mitarbeiter
  • welcher Mitarbeiter das niedrigste Gehalt hat
  • Top 5 Mitarbeiter anzeigen
Gruppieren nach Sie können nach der Gruppierung nach einem Attribut oder einer Entity unterschiedliche Aggregate anfordern.
  • Durchschnittsgehalt jeder Tätigkeit
  • Was ist das höchste Gehalt pro Abteilung?
  • Namen, Standort und Anzahl der Mitarbeiter pro Abteilung anzeigen
Gruppieren nach und filtern Sie können Attribute oder Entitys basierend auf Aggregationen filtern.
  • Alle Jobs mit einem Durchschnittsgehalt über 3000 anzeigen
  • Abteilungen, deren Mindestgehalt 4000 beträgt
  • Welche Abteilungen haben mindestens 20 Mitarbeiter?
Gruppieren nach und bestellen mit optionalem Limit Sie können Attribute oder Entitys basierend auf Aggregationen sortieren und optional eine Anzahl der oberen oder unteren Zeilen anzeigen.
  • Alle Tätigkeiten anzeigen, sortiert nach dem höchsten Gehalt, das an Mitarbeiter in dieser Tätigkeit gezahlt wurde
  • Welche Abteilung hat das niedrigste Durchschnittsgehalt?
  • den Namen der Abteilungen mit der 3 höchsten Mitarbeiteranzahl anzeigen

Tutorial: Erste Schritte mit SQL-Dialogfeldern

In diesem Tutorial erhalten Sie einen praktischen Einblick in SQL Dialogs:

Erste Schritte mit SQL-Dialogfeldern.

SQL Dialogs-Workflow

Wie Sie einen SQL Dialog-Skill erstellen, unterscheidet sich von normalen Skills. Im Folgenden finden Sie die wichtigsten Schritte, um einen SQL Dialog-Skill zu erstellen und zu trainieren, damit Benutzer die Datenservices mit natürlicher Sprache abfragen können.

Die Teilnehmer der folgenden Schritte sind der Skillentwickler, Serviceadministrator, Datenbankexperte und KI-Trainer.

  • Der Skillentwickler erfasst die Skillanforderungen (Benutzerpersonas, Anwendungsfälle und Aufgaben) und das Trainingskorpus (Beispielbenutzeräußerungen) und erstellt den Skill. Der Entwickler kann auch definieren, wie die Ergebnisse angezeigt werden. Diese Person wird manchmal als Konversationsdesigner bezeichnet.

  • Der Serviceadministrator fügt dem Datenservice eine Verbindung hinzu.

  • Der Datenbankexperte analysiert die Skillanforderungen und das Trainingskorpus, um die Tabellen und Attribute zu identifizieren, die Antworten bereitstellen. Der Experte erstellt dann das logische Basismodell, indem er Informationen aus dem physischen Modell in den Skill importiert. Der Experte unterstützt den Skillentwickler und KI-Trainer auch bei Aufgaben wie dem Hinzufügen von SQL-Ausdrucksattributen, dem Verknüpfen von Attributen mit aus Tabellen hochgeladenen Wertelisten, dem Verknüpfen von Attributen mit regulatorischen Ausdrücken und dem Durchführen benutzerdefinierter Schulungen.

  • Der KI-Trainer fügt Primärnamen und Synonyme hinzu, um dem Natural Language Parser (NLP) beizubringen, wie die Äußerungen in natürlicher Sprache verstanden werden. Für Äußerungen, die der Skill nicht in OMRQL übersetzen kann, fügt der KI-Trainer benutzerdefinierte Schulungen hinzu, um dem Parser in natürlicher Sprache beizubringen, wie diese Äußerungen verstanden werden. Der Trainer überwacht und testet kontinuierlich die Fähigkeiten, um die Genauigkeit der Übersetzung natürlicher Sprache in Datenbankabfragen zu erhöhen.

Um den Workflow zu veranschaulichen, verwenden wir einen Beispielservice für Kreditorendaten mit den folgenden Tabellen. Aus Gründen der Kürze zeigen wir nur die in diesem Thema genannten Spalten.

Tab. Spalten
Rechnungen
  • invoice_num
  • invoice_date
  • pmt_status_flag
  • invoice_amount
  • Hersteller
payment_schedules
  • invoice_num
  • due_date
  • amount_remaining
Lieferanten
  • vendor_num
  • vendor_name
  1. Anforderungen definieren: Der Skillentwickler erfasst die Anwendungsfälle und Aufgaben, die der SQL Dialog-Skill unterstützen soll. Beispiel: Eine Kreditorenabteilung kann den folgenden Anwendungsfall haben:

    • Anwendungsfall: Zahlen alle Rechnungen mit ausstehenden Salden, die innerhalb von 30 Tagen fällig sind, damit Strafen vermieden werden können.

      • Aufgabe: Suchen Sie alle nicht genehmigten Rechnungen, die innerhalb von 30 Tagen fällig sind, damit wir sie rechtzeitig genehmigen können.

      • Aufgabe: Suchen Sie alle ausstehenden genehmigten Rechnungen, die innerhalb von 30 Tagen fällig sind, sodass wir sie rechtzeitig bezahlen können.

    Im Rahmen dieser Anforderungsphase erstellt der Skillentwickler eine repräsentative Liste der verschiedenen Arten, wie Personen diese Informationen anfordern. Diese Liste dient als Set von Beispieläußerungen, die der AI-Trainer für das Schulungskorpus verwendet.

  2. Skill einrichten: Der Serviceadministrator, der Skillentwickler und der Datenbankexperte arbeiten zusammen, um den Basisskill einzurichten.

    1. Integration mit dem Service: Der Serviceadministrator erstellt eine Verbindung von Oracle Digital Assistant zum Datenservice. Siehe Verbindung zum Data Service herstellen.

    2. SQL-Dialogskill erstellen: Der Skillentwickler erstellt den SQL-Dialogskill. Dabei wird sichergestellt, dass der Dialogmodus im Dialogfeld Skill erstellen auf Visuell gesetzt ist. Siehe SQL-Dialogskill erstellen.

    3. Schema importieren: Der Datenbankexperte identifiziert die Tabellen und Felder, die zur Unterstützung der Anwendungsfälle erforderlich sind. Anschließend werden sie auf der Seite Entitys des Skills aus dem Datenservice importiert, wie unter Abfrageentitys zum Modellieren des Datenservice erstellen beschrieben. Dadurch wird ein logisches Basismodell erstellt, das eine Abfrageentity für jede importierte Tabelle enthält.

      In unserem Beispiel importiert der Datenbankexperte die Tabellen invoices, payment_schedules und vendors.

      Zu diesem Zeitpunkt ist der Skill mit eingeschränkter Funktionalität einsatzbereit. Für das logische Basismodell werden die Entity- und Attributnamen aus den Tabellen- und Feldnamen des physischen Modells abgeleitet. Beispiel: Wenn der Tabellenname payment_schedules lautet, lautet der primäre Name payment schedules. Der AI-Trainer kann Abfragen testen auf der Seite Entitys oder den Unterhaltungstester (Vorschau) verwenden, um die SQL-Funktionalität auszuprobieren.

      In unserem Beispieldatenservice können sie Testäußerungen wie "Rechnungen mit Zahlungsstatuskennzeichen N anzeigen", "Rechnungsnummer 17445 anzeigen" oder "Zahlungspläne mit Fälligkeitsdatum vor 2022-08-30 anzeigen" verwenden.

  3. Trainieren: Fügen Sie Trainingsdaten über Primärnamen, Synonyme, Wertelisten, reguläre Ausdrücke und Abfragen in natürlicher Sprache hinzu, die OMRQL zugeordnet sind.

    1. Natürliche Sprache - Terminologie hinzufügen: Um Formulierungen in natürlicher Sprache mit der zugrunde liegenden Datenstruktur zu verknüpfen, vermittelt der KI-Trainer dem Skill die verschiedenen Arten, wie Endbenutzer die Entitys und Attribute referenzieren. Das heißt, die Namen, die Menschen in ihren Äußerungen in natürlicher Sprache verwenden werden. Der Trainer analysiert zunächst die Wortgruppen, die der Skillentwickler erfasst hat, um die Äußerungen zu identifizieren, die der Skill verarbeiten soll (das Trainingskorpus). Darüber hinaus können sie einen Thesaurus für Synonyme und Crowd-Source für ähnliche Formulierungen konsultieren. Anschließend zeichnet der AI-Trainer die entsprechenden Begriffe auf, indem er die Primärnamen ändert und Synonyme hinzufügt. Siehe Schulungsdaten über Namen und Synonyme angeben.

      In unserem Beispiel lautet eine der Äußerungen, die während der Anforderungsphase erfasst wurden, "Geben Sie mir eine Liste der Rechnungen mit einem ausstehenden Saldo größer als Null". Das Attribut, das den Saldo enthält, ist amount remaining. Daher fügt der AI-Trainer diesem Attribut das Synonym outstanding balance hinzu.

    2. Wertelisten zuordnen: Um die Genauigkeit zu verbessern, kann der KI-Trainer gegebenenfalls Wertelisten erstellen, die Beispielwerte aus dem Datenservice enthalten. Der Skill ordnet die Listen automatisch ihren jeweiligen Attributen zu. Dadurch kann der Parser in natürlicher Sprache die Arten von Werten verstehen, die diese Attribute enthalten können. Siehe Schulungsdaten über Wertelisten bereitstellen.

      In unserem Beispiel verknüpfen sie das Attribut vendor_name mit einer Werteliste, die aus dem Datenservice abgerufen wird. Wenn die Werteliste "Seven Corporation" enthält und ein Benutzer "Summenkennzeichen für Seven Corporation anzeigen" anfordert, wird der NLP darauf schließen, dass Seven Corporation ein Lieferantenname ist.

    3. Mit regulären Ausdrücken verknüpfen: Wenn die Werte eines Attributs mit einem bestimmten Muster übereinstimmen müssen, kann der KI-Trainer eine reguläre Ausdrucksentität erstellen und mit diesem Attribut verknüpfen. Siehe Schulungsdaten über reguläre Ausdrücke bereitstellen.

      Beispiel: Der AI-Trainer kann ein ip_address-Attribut mit dem regulären Ausdruck (\\d{1,2}|(0|1)\\d{2}|2[0-4]\\d|25[0-5]) verknüpfen.

    4. Komplexe Abfragen zuordnen: In Fällen, in denen der Skill keine gültige Äußerung in OMRQL übersetzen kann, fügt der KI-Trainer diese Äußerung den Trainingsdaten hinzu und ordnet sie OMRQL zu, wie unter Schulungsdaten über Äußerungen bereitstellen beschrieben. Beispiel: Sie können SELECT * payment_schedules WHERE payment_status_flag = 'Y' die Option "Unbezahlte Rechnungen anzeigen" zuordnen.

    5. Vorschläge zur automatischen Vervollständigung angeben: Um Benutzern zu helfen, zu erfahren, was das logische Modell beantworten kann, fügen Sie Beispieläußerungen hinzu, wie unter Abfragevorschläge für SQL-Dialogbenutzer bereitstellen beschrieben.

    6. Routingdaten angeben: Wenn Ihr SQL-Dialogskill Intents enthält oder in einem DA enthalten ist, müssen Sie Äußerungen hinzufügen, damit der Skill Datenbankabfragen unterscheiden kann. Siehe Äußerungen an die SQL-Dialogunterhaltung weiterleiten.

    7. NLP-Modell trainieren: Um Schulungsdaten in das NLP-Modell zu integrieren, klickt der Skillentwickler oder KI-Trainer auf das Symbol Trainieren und dann auf Weiterleiten.

  4. Anzeige von Informationen konfigurieren: Der Datenbankexperte und der Skillentwickler arbeiten zusammen, um die Anzeige der Ergebnisse jeder Entity zu optimieren, wie unter Darstellung von Entitys und Attributen konfigurieren beschrieben. Beispiel: Sie können die Standardsortierreihenfolge einer Entity festlegen, als Formular oder Tabelle anzeigen, die Mindestattribute für die Ausgabe festlegen, Schaltflächen und Links zu Ergebnissen hinzufügen und Attribute hinzufügen, die abgeleitete oder berechnete Daten anzeigen.

    In unserem Beispiel können sie sowohl die Standardsortierreihenfolge als auch die Mindestattribute der Rechnungsentität auf invoice_num setzen und die Standardattribute auf invoice_num, invoice_date, pmt_status_flag und invoice_amount setzen. Sie können auch ein age-Attribut hinzufügen, das anhand der Differenz zwischen dem aktuellen Datum und dem Rechnungsdatum berechnet wird.

  5. Abfrageregeln konfigurieren: Der Datenbankexperte und der KI-Trainer arbeiten zusammen, um die Abfrageregeln festzulegen. Beispiel: Wann Teilabgleich verwendet werden soll und welches Attribut zum Messen verwendet werden soll, wenn jemand zum Vergleichen von Zeilen auffordert, ohne ein Attribut anzugeben, mit dem verglichen werden soll. Siehe Abfrageregeln definieren.

    In unserem Beispiel erwarten sie, dass Endbenutzer nach den 10 Zahlungen fragen, die sie leisten müssen. Daher konfigurieren sie die Entity payment schedules so, dass sie due_date für Vergleiche verwendet. Außerdem werden Vergleiche für dieses Attribut invertiert, sodass frühere Datumsangaben höher als später eingestuft werden.

  6. Test und Reparatur: Der KI-Trainer prüft mit dem Abfragetester auf der Seite Entitys, ob die Testäußerungen in die gewünschte OMRQL aufgelöst werden und ob der Skill die OMRQL in ausführbares SQL übersetzen kann. Wenn der Abfragetester OMRQL nicht in SQL übersetzen kann, fordert er Schulungsdaten an. In vielen Fällen können Sie dies beheben, indem Sie die Äußerung zu den Schulungsdaten hinzufügen und mit einer OMRQL-Anweisung verknüpfen. Siehe Testen und reparieren.

  7. Überwachen und verbessern: Nachdem der Skill in die Beta-Testphase und darüber hinaus eingetreten ist, können der KI-Trainer, Skillentwickler, Projektmanager und Stakeholder kontinuierlich Batchtests und Insight-Daten überwachen, um zu sehen, wie gut der Skill abschneidet und Verbesserungsmöglichkeiten zu identifizieren. Siehe Überwachen und verbessern.

Verbindung zum Datenservice herstellen

Bevor Sie über einen beliebigen SQL Dialog-Skill auf einen Datenservice zugreifen können, müssen Sie eine Datenserviceintegration hinzufügen, mit der Oracle Digital Assistant auf den Datenservice zugreifen kann. Sie benötigen nur eine Integration pro Datenservice.

Integrationen wurden mit Oracle Database Cloud Service Enterprise Edition 12c und 19c Oracle Autonomous Transaction Processing und MySQL HeatWave Database Service mit MySQL Version 8 getestet.

Hinweis

Nachdem Sie den Service erstellt haben, können Sie ihn nicht mehr ändern. Sollte sich das Passwort ändern, müssen Sie die Datenserviceintegration löschen und neu erstellen.

Oracle-Datenservice

So stellen Sie eine Verbindung zu einer Oracle-Datenbank her:

  1. Klicken Sie in Digital Assistant auf Menüsymbol, um das Seitenmenü zu öffnen. Klicken Sie dann auf Einstellungen, Weitere Services und dann auf die Registerkarte Daten.

  2. Klicken Sie auf + Service hinzufügen.

  3. Geben Sie im Dialogfeld Neuer Datenservice die folgenden grundlegenden Informationen an:

    Feldname Beschreibung
    Datenbanktyp Wählen Sie Oracle aus.
    Name Ein eindeutiger Name für den Service.
    Datenservicebeschreibung Eine optionale Beschreibung der Datenserviceintegration, z. B. eine Beschreibung der Datenbank oder des Zwecks.
    Benutzername Bitten Sie den Datenbankadministrator um den Benutzernamen und das Kennwort, die Zugriff auf die Tabellen gewähren, die Skillentwickler zum Erstellen der zusammengesetzten Entitys für ihren SQL-Dialogskill benötigen, wie unter Abfrageentitys zum Modellieren des Datenservice erstellen beschrieben.
    Kennwort Das Kennwort des Benutzers. Beachten Sie, dass ein Kennwort für die Oracle Digital Assistant-Integration mindestens 14 Zeichen und nicht mehr als 30 Zeichen umfassen muss und mindestens ein Großbuchstaben, ein Kleinbuchstaben und eine Zahl enthalten muss. Es kann auch nicht mit einer Ziffer beginnen.
  4. Klicken Sie auf Weiter, um die Endbenutzerauthentifizierung zu konfigurieren, wenn Ihr Datenservice für rollenbasierten Zugriff konfiguriert ist. Im Folgenden finden Sie eine Beschreibung der Felder auf dieser Seite:

    Feldname Beschreibung
    Endbenutzer-Authentifizierung ist erforderlich Wählen Sie diese Option, wenn Ihr Datenservice für rollenbasierten Zugriff konfiguriert ist.
    Authentifizierungsdienst

    Wählen Sie einen Authentifizierungsservice aus, den Sie unter Einstellungen > Authentifizierungsservices konfiguriert haben.

    Endbenutzer-ID Wählen Sie den Typ der Endbenutzer-ID aus.
    Benutzerdefinierter Ausdruck

    Wenn der ausgewählte Endbenutzer-ID-Typ benutzerdefiniert ist, geben Sie einen FreeMarker-Ausdruck für eine Benutzerprofilvariable ein, der die Endbenutzer-ID darstellt.

    Weitere Informationen und Beispiele finden Sie unter Ausdrücke für OICD-Profilansprüche.

  5. Klicken Sie auf Weiter, um die Verbindungsdetails hinzuzufügen.

  6. Wählen Sie auf der Seite Verbindungsdetails die Option Basis oder Cloud Wallet-Verbindung für den Verbindungstyp aus.

    • Bei Datenbanken mit einem Knoten und RAC-fähigen Datenbanken müssen Sie Basis auswählen.
    • Wenn Sie eine Verbindung zu einer ATP-Datenbank herstellen, müssen Sie die Option Cloud Wallet-Verbindung auswählen.
  7. Wenn der Verbindungstyp Einfach lautet, geben Sie die folgenden Werte ein, die Sie vom Datenbankadministrator abrufen können:

    Feldname Beschreibung
    TLS verwenden Setzen Sie diesen Schalter in die Position ON, wenn Sie TLS (Transport Layer Security) zur Sicherung der Verbindung verwenden möchten.
    Hinweis

    Wenn Sie ein privates CA-Zertifikat für die Verbindung zur Datenbank verwenden, muss diese Option aktiviert sein.
    Hostname

    Geben Sie den Host für den Datenservice ein. Lassen Sie das Präfix https:// weg. Beispiel: example.com.

    Port Der Port, der Clientverbindungen zur Datenbank zulässt.
    Service-ID

    Führen Sie einen der folgenden Schritte aus:

    • Wählen Sie SID aus, und geben Sie die Oracle-System-ID der Datenbankinstanz ein.

    • Wählen Sie Servicename aus, und geben Sie den Servicenamen für die Datenbank ein.

    Privater Endpunkt Diese Option wird nur angezeigt, wenn in der Digital Assistant-Instanz private Endpunkte konfiguriert sind.

    Wenn Sie eine Verbindung zu einem privaten Endpunkt herstellen, um auf den Service zuzugreifen, wechseln Sie zum Schalter Privater Endpunkt in die Position "Ein", und wählen Sie dann aus einer Liste privater Endpunkte aus, die mit der Instanz verknüpft sind.

    (Mit einem privaten Endpunkt können Sie auf einen Service zugreifen, auf den Sie nicht direkt über das öffentliche Internet zugreifen können. Weitere Informationen finden Sie unter Privater Endpunkt.)

  8. Wenn der Verbindungstyp Cloud Wallet-Verbindung lautet, geben Sie die folgenden Werte ein, die Sie vom Datenbankadministrator abrufen können:

    Feldname Beschreibung
    Wallet-Datei Suchen Sie die Cloud Wallet-Datei mit den Clientzugangsdaten, und wählen Sie sie aus, oder verschieben Sie sie per Drag-and-Drop in das Feld.
    Wallet-Kennwort Geben Sie das Kennwort ein, das beim Herunterladen der Wallet-Datei angegeben wurde. Beachten Sie, dass ein Wallet-Kennwort für die Oracle Digital Assistant-Integration mindestens 15 Zeichen und nicht mehr als 30 Zeichen umfassen muss und mindestens ein Großbuchstaben, ein Kleinbuchstaben, ein Sonderzeichen und eine Zahl enthalten muss. Es kann auch nicht mit einer Ziffer beginnen.
    Dienst Wählen Sie den Namen des Datenbankservice aus. Stellen Sie sicher, dass Sie einen Service auswählen, der über einen ausreichend hohen gleichzeitigen Service verfügt, sodass Abfragen nicht länger als 30 Sekunden dauern (zu welchem Zeitpunkt das Timeout überschritten wird). Die Servicenamen mit den Suffixen _tp und _tpurgent sind hier im Allgemeinen die am besten geeigneten Optionen. Weitere Informationen zu diesen Überlegungen finden Sie unter Datenbankservicenamen für Autonomous Database und Nebenläufigkeit des Service.
    Privater Endpunkt Diese Option wird nur angezeigt, wenn in der Digital Assistant-Instanz private Endpunkte konfiguriert sind.

    Wenn Sie eine Verbindung zu einem privaten Endpunkt herstellen, um auf den Service zuzugreifen, wechseln Sie zum Schalter Privater Endpunkt in die Position "Ein", und wählen Sie dann aus einer Liste privater Endpunkte aus, die mit der Instanz verknüpft sind.

    (Mit einem privaten Endpunkt können Sie auf einen Service zugreifen, auf den Sie nicht direkt über das öffentliche Internet zugreifen können. Weitere Informationen finden Sie unter Privater Endpunkt.)

  9. Wenn Sie auf der Seite Erweiterte Eigenschaften ein privates CA-Zertifikat für die Verbindung mit der Datenbank benötigen, schalten Sie den Umschalter Privates Vertrauen verwenden in die Position "Ein" um, und füllen Sie die restlichen erforderlichen Felder aus.
    Feldname Beschreibung
    Privates Vertrauen verwenden Wenn Sie ein privates CA-Zertifikat verwenden, um sich bei der Datenbank anzumelden, schalten Sie diesen Umschalter in die ON-Position. Dieser Switch ist nur aktiviert, wenn Sie auf der Seite "Verbindungsdetails" die Option TLS verwenden ausgewählt haben.
    Zertifikatsressource Wählen Sie Selbst verwaltet aus.
    PEM-Datei auswählen und PEM-Text einfügen Wählen Sie eine dieser Optionen aus, um das Zertifikat bereitzustellen.
  10. Klicken Sie auf Service hinzufügen.

    Jetzt können Sie das Datenbankschema in einen Skill importieren, um Abfrageentitys zu erstellen, mit denen Benutzer die Datenbank mit natürlicher Sprache abfragen können.

Ausdrücke für OICD-Profilansprüche

Wenn Sie eine Verbindung zu einem Datenservice mit rollenbasiertem Zugriff haben und Benutzerdefiniert als Benutzer-ID-Typ ausgewählt haben, müssen Sie einen FreeMarker-Ausdruck für eine Benutzerprofilvariable angeben, die die Endbenutzer-ID darstellt, entweder als Standard- oder benutzerdefinierter OpenID Connect-(OIDC-)Claim. Hier finden Sie einige Beispiele:

  • ${userProfile.MyAuthService1.value.sub}
  • ${userProfile.MyAuthService1.value["http://acme.com/custom_identifier"]}

Weitere Informationen zur Funktionsweise von Profilansprüchen in OIDC und einige Beispielansprüche finden Sie in den folgenden Ressourcen:

MySQL-Datenservice

  1. Klicken Sie in Digital Assistant auf Menüsymbol, um das Seitenmenü zu öffnen. Klicken Sie dann auf Einstellungen, Weitere Services und dann auf die Registerkarte Daten.

  2. Klicken Sie auf + Service hinzufügen.

  3. Geben Sie im Dialogfeld Neuer Datenservice die folgenden grundlegenden Informationen an:

    Feldname Beschreibung
    Datenbanktyp Wählen Sie MySQL aus.
    Name Ein eindeutiger Name für den Service.
    Datenservicebeschreibung Eine optionale Beschreibung der Datenserviceintegration, z. B. eine Beschreibung der Datenbank oder des Zwecks.
    Authentifizierungstyp Ihr Datenbankadministrator teilt Ihnen mit, ob Sie Standard, Kerberos oder BS auswählen müssen.
    Benutzername Bitten Sie den Datenbankadministrator um den Benutzernamen und das Kennwort, die Zugriff auf die Tabellen gewähren, die Skillentwickler zum Erstellen der zusammengesetzten Entitys für ihren SQL-Dialogskill benötigen, wie unter Abfrageentitys zum Modellieren des Datenservice erstellen beschrieben.
    Kennwort Das Kennwort des Benutzers. Beachten Sie, dass ein Kennwort für die Oracle Digital Assistant-Integration mindestens 14 Zeichen und nicht mehr als 30 Zeichen umfassen muss und mindestens ein Großbuchstaben, ein Kleinbuchstaben und eine Zahl enthalten muss. Es kann auch nicht mit einer Ziffer beginnen.
  4. Klicken Sie auf Weiter, um die in dieser Tabelle aufgeführten Verbindungsdetails zu konfigurieren:

    Feldname Beschreibung
    TLS verwenden Setzen Sie diesen Schalter in die Position ON, wenn Sie TLS (Transport Layer Security) zur Sicherung der Verbindung verwenden möchten.
    Hinweis

    Wenn Sie ein privates CA-Zertifikat für die Verbindung zur Datenbank verwenden, muss diese Option aktiviert sein.
    Hostname

    Geben Sie den Host für den Datenservice ein. Lassen Sie das Präfix https:// weg. Beispiel: example.com.

    Port Der Port, der Clientverbindungen zur Datenbank zulässt.
    Datenbank

    Name der Datenbank.

    Privater Endpunkt Diese Option wird nur angezeigt, wenn in der Digital Assistant-Instanz private Endpunkte konfiguriert sind.

    Wenn Sie eine Verbindung zu einem privaten Endpunkt herstellen, um auf den Service zuzugreifen, wechseln Sie zum Schalter Privater Endpunkt in die Position "Ein", und wählen Sie dann aus einer Liste privater Endpunkte aus, die mit der Instanz verknüpft sind.

    (Mit einem privaten Endpunkt können Sie auf einen Service zugreifen, auf den Sie nicht direkt über das öffentliche Internet zugreifen können. Weitere Informationen finden Sie unter Privater Endpunkt.)

  5. Wenn Sie auf der Seite Erweiterte Eigenschaften ein privates CA-Zertifikat für die Verbindung mit der Datenbank benötigen, schalten Sie den Umschalter Privates Vertrauen verwenden in die Position "Ein" um, und füllen Sie die restlichen erforderlichen Felder aus.
    Feldname Beschreibung
    Privates Vertrauen verwenden Wenn Sie ein privates CA-Zertifikat verwenden, um sich bei der Datenbank anzumelden, schalten Sie diesen Umschalter in die ON-Position. Dieser Switch ist nur aktiviert, wenn Sie auf der Seite "Verbindungsdetails" die Option TLS verwenden ausgewählt haben.
    Zertifikatsressource Wählen Sie Selbst verwaltet aus.
    PEM-Datei auswählen und PEM-Text einfügen Wählen Sie eine dieser Optionen aus, um das Zertifikat bereitzustellen.
  6. Klicken Sie auf Service hinzufügen.

    Jetzt können Sie das Datenbankschema in einen Skill importieren, um Abfrageentitys zu erstellen, mit denen Benutzer die Datenbank mit natürlicher Sprache abfragen können.

SQL Dialog Skill erstellen

Um einen SQL Dialog-Skill zu erstellen, erstellen Sie einfach einen Skill, wobei der Dialogmodus auf Visuell gesetzt ist.

Abfrageentitys zum Modellieren des Datenservice erstellen

Um Datenserviceabfragen in einem SQL Dialog-Skill zu aktivieren, importieren Sie Informationen zum physischen Modell eines Datenservice (die Tabellen oder Ansichten und deren Spalten), um ein logisches Basismodell zu erstellen. Während des Imports fügt der Skill dem logischen Modell Abfrageentitys hinzu, wobei jede Abfrageentity eine physische Tabelle darstellt.

Hinweis

Ein Skill darf nicht mehr als 50 Abfrageentitys und -attribute enthalten. Beispiel: Sie können 5 Abfrageentitys haben, die zusammen 45 Attribute aufweisen.

Wenn Sie Ihren Skill trainieren, verwendet er die Informationen aus den Abfrageentitys, um ein Modell für den Parser in natürlicher Sprache zu erstellen. Dadurch kann der Skill Benutzeräußerungen in OMRQL übersetzen. OMRQL ist eine Abfragesprache, die SQL ähnelt, jedoch auf Objektmodellen basiert, bei denen es sich in diesem Fall um die Abfrageentitys handelt.

Bevor Sie beginnen, benötigen Sie Folgendes:

So erstellen Sie Abfrageentitys für die gewünschten Tabellen in Ihrem Datenservice:

  1. Klicken Sie auf der Seite Entitys auf Weitere, und wählen Sie Aus Datenservice importieren aus.

    Das Dialogfeld Abfrageentitys importieren wird angezeigt.

  2. Wählen Sie den Datenservice aus, und wählen Sie dann die Tabellen und Attribute aus, die Sie im Skill verwenden möchten.

  3. Klicken Sie auf Importieren.

    Der Skill fügt Abfrageentitys für die ausgewählten Tabellen hinzu. Es legt die primären Namen der Entity und des Attributs basierend auf den kanonischen Namen fest. Beispiel: Wenn der kanonische Name "invoice_num" lautet, lautet der primäre Name "invoice num".

  4. Wählen Sie für jede hinzugefügte Abfrageentity die Entity aus, klicken Sie auf die Registerkarte Konfiguration, und prüfen Sie, ob der Primärschlüssel im Abschnitt Backend-Zuordnung festgelegt ist.

An dieser Stelle können Sie die Abfragen mit den primären Namen für die Entitys und Attribute testen, z.B. "Rechnungen anzeigen, deren Rechnungsnummer 12345 ist". Klicken Sie jedoch zuerst auf Zugsymbol mit Badge, und klicken Sie anschließend auf Abfragen testen, um Äußerungen auszuprobieren, oder klicken Sie auf Vorschau, um sie im Unterhaltungstester zu testen.

Da Sie mit einem minimalen SQL-Dialogskill arbeiten, können Sie entweder mit Trainer Ht oder Trainer Tm trainieren. Nachdem Sie jedoch Vorschläge für die automatische Vervollständigung, Routingdaten und benutzerdefinierte Trainingsdaten hinzugefügt haben, liefert Trainer Tm genauere Ergebnisse.

Im nächsten Schritt lernen Sie den Skill, wie Endbenutzer auf die Entitys und Attribute verweisen. Siehe Skill zum Konvertieren von Äußerungen in natürlicher Sprache in SQL trainieren.

Skill trainieren, um Äußerungen in natürlicher Sprache in SQL zu konvertieren

Als KI-Trainer ist es Ihre Aufgabe, dem Parser in natürlicher Sprache zu ermöglichen, Äußerungen in natürlicher Sprache wie "Wie viele Rechnungen ein Fälligkeitsdatum vor dem 15.12.22 haben" in eine OMRQL-Abfrage zum Abrufen der Antwort aus der zugrunde liegenden Datenquelle (dem physischen Modell) zu übersetzen. Dazu erstellen Sie ein intuitives logisches Modell der Daten, das die natürliche Sprache genau widerspiegelt.

Nachdem das logische Modell durch Importieren aus der Datenquelle erstellt wurde, verwenden Sie primäre Namen, Synonyme, Wertelisten und Äußerungen, damit der Parser der natürlichen Sprache des Skills natürliche Sprachphrasen mit den Tabellen und Spalten des physischen Modells verknüpfen kann.

  • Um dem Skill die verschiedenen Arten beizubringen, wie Personen die Objekte referenzieren, fügen Sie Primärnamen und Synonyme hinzu, wie unter Schulungsdaten über Namen und Synonyme angeben beschrieben. Beispiel: Sie möchten den Skill unterrichten, dass Personen "Rechnungsnummer" verwenden, um auf die Spalte invoice_num zu verweisen. Sie können auch "Rechnungsnummer" und "Ref-Nummer" als Synonyme hinzufügen.

  • Um dem Skill zu helfen, Attributwerte in einer Äußerung zu identifizieren, erstellen Sie Beispielwertlisten und ordnen sie Attributen zu, wie unter Schulungsdaten über Wertelisten bereitstellen beschrieben. Beispiel: Sie können eine Werteliste erstellen, die den tatsächlichen Zahlungsstatus enthält, und die Liste dem Attribut payment status der Rechnung zuordnen.

  • Um dem Skill zu helfen, Attributwerte basierend auf Mustern zu identifizieren, erstellen Sie Entitys für reguläre Ausdrücke und verknüpfen sie mit Attributen, wie unter Schulungsdaten über reguläre Ausdrücke bereitstellen beschrieben. Beispiel: Sie können eine reguläre Ausdrucksentity mit dem Ausdruck (\\d{1, 2}|(0|1)\\d{2}|2[0-4]\\d|25[0-5]) erstellen und mit dem Attribut ip_address verknüpfen.

  • Wenn der Skill eine Äußerung nicht korrekt in OMRQL übersetzen kann, können Sie dem Abfrageentitäts-Dataset eine Äußerung zu OMRQL-Zuordnung hinzufügen, wie unter Schulungsdaten über Äußerungen bereitstellen und Testen und Reparieren beschrieben. Sie können auch Äußerungen hinzufügen, damit der Skill weiß, wann eine Äußerung an den Ablauf weitergeleitet werden soll, der sie als SQL-Ausführung verarbeitet (d.h. in OMRQL übersetzt und dann eine SQL-Abfrage an die Datenquelle sendet).

Trainingsdaten über Namen und Synonyme bereitstellen

Um einem SQL Dialogs-Skill zu helfen, Formulierungen in natürlicher Sprache mit der zugrunde liegenden Datenstruktur (physisches Modell) zu verknüpfen, nehmen Sie zunächst die identifizierten Äußerungen, die der Skill verarbeiten soll (das Trainingskorpus), und analysieren Sie sie, um die verschiedenen Arten zu ermitteln, wie Endbenutzer die Entitys und Attribute referenzieren.

Angenommen, Sie haben diese Äußerungen in Ihrem Trainingskorpus:

  • Rechnungen mit ausstehenden Salden größer als Null anzeigen.

  • Wie hoch ist der fällige Betrag für Referenz 12656?

Hier sehen Sie, dass die Personen den "ausstehenden Saldo" und den "fälligen Betrag" verwenden, um sich auf die Spalte amount_remaining zu beziehen. Sie sehen auch, dass "Referenz" eine Möglichkeit ist, auf invoice_num zu verweisen.

Zusätzlich zum Trainingskorpus möchten Sie möglicherweise auch Äußerungen von Ihren Zielbenutzern aus Crowdsourcing abrufen, um weitere Wortgruppen zu erhalten und diese ebenfalls zu analysieren.

Nachdem Sie die Liste der Verweise von Personen auf die Entitys und Attribute kompiliert haben, wählen Sie den Begriff aus, den Sie für den primären Namen jeder Entity und jedes Attributs verwenden möchten. Sie sollten Namen sein, die den häufigsten Verwendungen am nächsten sind. Wenn Sie den Namen wählen, beachten Sie, dass das Out-of-the-box-NLP-Modell wahrscheinlich keine domänenspezifischen Beziehungen versteht. So wird beispielsweise nicht automatisch erkannt, dass sich Rechnungsnummer und Referenz auf dasselbe beziehen. Da die Rechnungsnummer häufig verwendet wird und auch anderen häufig verwendeten Begriffen wie Rechnungsnummer und Rechnungsnummer am nächsten kommt, wird sie als primärer Name verwendet.

Behandeln Sie den Rest der Begriffe als Synonyme. Im obigen Beispiel würden Sie der Synonymliste Referenz, Rechnungsnummer und Rechnungsnummer hinzufügen.

Beachten Sie, dass der primäre Name der Standardname für die Ergebnisspaltenheader und -labels ist. Sie können diesen jedoch auf der Registerkarte Präsentation ändern.

Mit Ihrer Liste erstellen Sie die Trainingsdaten auf der Seite Entitys.

  • Um den Primären Namen und die Synonyme der Entity festzulegen, öffnen Sie die Registerkarte Konfiguration der Entity, und blenden Sie Natürliche Sprache ein.

  • Um den Primären Namen und die Synonyme des Attributs festzulegen, öffnen Sie die Registerkarte Natürliche Sprache des Attributs.

Hinweis

Bei der Verarbeitung von Äußerungen berücksichtigt der Parser in natürlicher Sprache die kanonischen Namen des physischen Modells nicht, d.h. er prüft keine Tabellen- und Spaltennamen. Es verwendet nur die Zuordnungen natürlicher Sprache, die Sie mit Namen und Synonymen (dem logischen Modell) definieren.

Schulungsdaten über Wertelisten bereitstellen

Sie können die Genauigkeit des Parser in natürlicher Sprache verbessern, indem Sie Attribute Wertelisten oder dynamischen Entitys zuordnen. Auf diese Weise kann der Parser ein Attribut anhand seiner bekannten Werte identifizieren. Verwenden Sie Referenzierte Entity auf der Registerkarte Allgemeine Informationen des Attributs, um das Attribut mit den Werten der Referenzentität zu verknüpfen. Bei Wertelistenentitys können Sie die Entity automatisch erstellen, die Werte des Datenservice importieren und als referenzierte Entity in einem Schritt verknüpfen.

Wenn Sie entscheiden, ob Sie eine Werteliste oder eine dynamische Entity zum Speichern der Werte verwenden möchten, überlegen Sie, ob die Entity offen oder geschlossen ist.

  • Eine offene Liste ist eine Liste, die unendlich oder dynamisch (oder beides) ist. Bei offenen Listen sollten Sie eine dynamische Entity anstelle einer Werteliste erstellen und verwalten. Wenn Sie eine Werteliste verwenden möchten, sollten Sie die Liste kuratieren, um sicherzustellen, dass sie mindestens die am häufigsten verwendeten Werte enthält. Beispiel: Für eine Lieferantenliste, die mit der Zeit am wahrscheinlichsten wächst, soll die Liste Ihre am häufigsten verwendeten Lieferanten enthalten. Dies liegt daran, dass Abfragen zu einem Lieferanten, ohne das Wort "Lieferant" zu verwenden, wie z.B. "Übersicht für Seven Corporation anzeigen", nicht übereinstimmen, wenn dieser Wert nicht in der Werteliste enthalten ist. So erhöhen Sie die Häufigkeit korrekter Auflösungen, indem Sie zumindest die am häufigsten verwendeten Werte einbeziehen.

  • Eine Liste geschlossen ist eine statische endliche Liste. Diese sind ideal für Wertlistenentitys geeignet.

Fügen Sie für Wertelisten und dynamische Entitys Singular- und Pluralversionen (falls zutreffend) von Synonymen für jeden Entitywert hinzu, um anzugeben, wie Endbenutzer auf den Wert verweisen.

Synonyme sind besonders wichtig, wenn die Liste Werte enthält, die Endbenutzer normalerweise nicht verwenden. Beispiel: Diese Liste mit gültigen Zahlungsstatuswerten. Benutzer werden viel wahrscheinlicher Wörter wie bezahlt, unbezahlt und teilweise bezahlt verwenden, als Y, N und P zu verwenden. Das Hinzufügen dieser Wörter als Synonyme trägt dazu bei, sicherzustellen, dass der NLP erkennt, dass die Benutzer auf das Attribut "Zahlungsstatus" verweisen.

Zahlungsstatuswerte Synonyme
Y bezahlt
N Nicht bezahlt, nicht bezahlt
P Teilweise, teilweise bezahlt, unbezahlt

Wenn ein Begriff mehrere Entitywerte beschreibt, fügen Sie diesen Begriff als Synonym zu jedem hinzu. Beispiel: Sowohl N als auch P geben an, dass die Rechnung unbezahlt ist. Wenn Sie "Nicht bezahlt" als Synonym für beide Statusangaben hinzufügen, ruft "Nicht bezahlte Rechnungen anzeigen" Rechnungen mit dem payment_status-Wert N oder P ab.

Für dynamische Entitys erstellen Sie die Entity und verwenden dann Referenzierte Entity auf der Registerkarte Allgemeine Informationen des Attributs, um das Attribut mit der Liste zu verknüpfen.

Für Wertelisten können Sie eine Werteliste aus dem Datenservice erstellen und mit einer Entity verknüpfen, indem Sie die folgenden Schritte ausführen:

  1. Bearbeiten Sie das Attribut auf der Seite Entitys, und gehen Sie zur Registerkarte Allgemeine Informationen.

  2. Wählen Sie in der Dropdown-Liste Typ die Option Entity aus.

  3. Klicken Sie auf Wenn die gewünschte Entity nicht vorhanden ist, können Sie eine Wertelistenentity basierend auf der Hintergrundzuordnung generieren, indem Sie hier klicken. Die Werteliste wird aus dem Datenservice erstellt und aufgefüllt. Die Referenzierte Entity verweist auf die neue Werteliste.

  4. (Optional) Um die Chancen zu erhöhen, dass Benutzereingaben mit einem Wert aus der Liste übereinstimmen, öffnen Sie die Wertelistenentity, und aktivieren Sie Fuzzy Match. Andernfalls wird eine strikte Übereinstimmung verwendet, d.h. die Benutzereingabe muss exakt mit den Werten und Synonymen übereinstimmen. Beispiel: "Autos" stimmen nicht mit "Auto" überein.

    Beim Fuzzy-Matching werden Wortstammdaten verwendet, um Attribute aus der Abfrage zu identifizieren. Beispiel: "Pfund" entspricht "Pfund", "Halten" entspricht "Zurückgestellt", "Genehmigung erforderlich" entspricht "Genehmigung erforderlich" und "Mietvertrag" entspricht "Mietvertrag".

    Beachten Sie, dass Fuzzy Matching nicht für "_" und "?" funktioniert. Teilabgleich funktioniert auch nicht. Beispiel: "Seven" stimmt nicht mit "Seven Corporation" überein. Wenn Sie den Abgleich für solche Zeichenfolgen aktivieren müssen, fügen Sie sie der Synonymliste hinzu.

  5. Klicken Sie auf Übernehmen, um die Änderungen zu speichern.

Hinweis

Wenn ein Wert in der physischen Tabelle des Datenservice mit einem Punkt, einem Fragezeichen oder Leerzeichen endet, werden diese Zeichen nicht in die Werteliste aufgenommen, da sie für kanonische Namen nicht zulässig sind.

Trainingsdaten über reguläre Ausdrücke bereitstellen

Wenn die Werte eines Attributs mit einem bestimmten Muster übereinstimmen müssen, können Sie dem Parser in natürlicher Sprache helfen, die Werte dieses Attributs zu identifizieren, indem Sie das Attribut einer Entity mit regulärem Ausdruck zuordnen.

Dies kann hilfreich sein, wenn alle Werte einem bestimmten Muster folgen müssen und die Gruppe gültiger Werte zu groß für eine Werteliste oder unendlich ist. Beispiel: Bei einem ip_address-Attribut können Sie es mit einer regulären Ausdrucksentität namens IpAddress verknüpfen, die den regulären Ausdruck (\\d{1,2}|(0|1)\\d{2}|2[0-4]\\d|25[0-5]) enthält.

Beachten Sie, dass Benutzer, ähnlich wie Wertelisten, ausreichend Kontext in ihrer Abfrage zwischen den beiden (oder mehreren) Attributen angeben müssen, wenn mehrere Attribute im Modell mit demselben regulären Ausdruck verknüpft werden können.

So verknüpfen Sie ein Attribut mit einem regulären Ausdruck:

  1. Klicken Sie auf der Seite Entitys auf + Entity hinzufügen, wählen Sie im Dropdown-Menü Typ die Option Regulärer Ausdruck aus, geben Sie den regulären Ausdruck ein, und klicken Sie auf Erstellen.

    Stellen Sie sicher, dass Sie den regulären Ausdruck so erstellen, dass der Parser für die natürliche Sprache keine nicht zugehörigen Werte mit dem Attribut verknüpft.

  2. Wählen Sie die Entity mit dem Attribut aus, das Sie mit dem regulären Ausdruck verknüpfen möchten, bearbeiten Sie das Attribut, und navigieren Sie zur Registerkarte Allgemeine Informationen.

  3. Wählen Sie in der Dropdown-Liste Typ die Option Entity aus.

  4. Wählen Sie in der Dropdown-Liste Referenzierte Entity die Entity des regulären Ausdrucks aus.

  5. Klicken Sie auf Übernehmen, um die Änderungen zu speichern.

Trainingsdaten über Äußerungen bereitstellen

Als KI-Trainer werden Äußerungen in natürlichen Sprachen angezeigt, die der Skill nicht in OMRQL übersetzen kann. Beispielsweise kann das Modell möglicherweise keine domänenspezifischen Synonyme verarbeiten, die nicht eng mit dem Primärnamen verwandt zu sein scheinen. Ein anderes Beispiel ist, wenn das Modell nicht in der Lage ist, zwischen zwei ähnlichen Entitys zu unterscheiden. In diesem Fall können Sie Trainingsdaten verwenden, um dem Skill beizubringen, wie die Äußerung korrekt in OMRQL geparst wird.

Das Hinzufügen zu den Schulungsdaten wird oft als benutzerdefinierte Schulung bezeichnet. Mit benutzerdefinierten Schulungen können Sie dem Modell beibringen, Wörter und Wortgruppen Attributen, Entitys und OMRQL-Schlüsselwörtern im Kontext einer vollständigen Äußerung zuzuordnen, indem Sie die Äußerung OMRQL zuordnen.

Beginnen Sie für jedes Szenario, das Sie korrigieren, mit 20 Äußerungen, und fügen Sie bei Bedarf weitere hinzu. Da zu viele Beispiele dazu führen können, dass das Modell Attribute und Operatoren übervorhersagen kann, sollten Sie sich auf eine kleinere Gruppe verschiedener Äußerungen konzentrieren, anstatt auf eine große Gruppe ähnlicher Äußerungen mit geringerer Qualität. Beachten Sie, dass maximal 120 Äußerungen pro Skill vorhanden sind.

Alle Werte in der OMRQL-Anweisung müssen exakt mit dem Datenbankwert und -format übereinstimmen. Nehmen wir zum Beispiel die Äußerung "Wer ist der Angestellte, dessen Name Jones ist?" Wenn die Datenbankwerte für das Namensattribut alle Großbuchstaben enthalten, muss der Namenswert auch alle Großbuchstaben sein. Das ist "SELECT * FROM Emp WHERE name = 'JONES'".

Wenn die Äußerung, die Sie zuordnen, ein Synonym für den tatsächlichen Datenbankwert verwendet, muss dieses Synonym für den Wert in einer Werteliste definiert werden, und OMRQL muss den tatsächlichen Datenbankwert verwenden. Beispiel: Wenn die Äußerung "die Abteilung anzeigen, deren Standort der große Apfel ist", muss "großer Apfel" in der Werteliste dept_loc als Synonym für den Wert "NEW YORK" definiert werden, und OMRQL muss "SELECT * FROM Dept WHERE loc = 'NEW YORK'" lauten.

Sie können Äußerungen hinzufügen, die absolute Datumsangaben enthalten, wie z.B. "Rechnungen, die am 5. Januar 2022 fällig sind", aber keine Äußerungen mit relativen Datumsangaben oder Datumsangaben ohne das Jahr verwenden. Beispiel: Wenn die Äußerung "heute fällige Rechnungen" lautet, wird das heutige Datum als SELECT * FROM-Rechnungen WHERE due_date = '2022-01-01' fest in OMRQL codiert. Wenn Sie ein relatives Datum wie "heute" verwenden, wird möglicherweise ein Fehler angezeigt, dass relative Datumsangaben nicht unterstützt werden.

Im Folgenden finden Sie einige Best Practices für benutzerdefinierte Trainingsäußerungen:

  • Anzahl der Äußerungen ausgleichen: Einige der komplexeren Szenarios benötigen möglicherweise mehr Äußerungen als die einfachen, versuchen jedoch, die Anzahl der Äußerungen pro Szenario auszugleichen.

  • Schulung ähnlicher Attribute und Entitys ausgleichen: Wenn Sie über zwei ähnliche Attribute verfügen und für eines dieser Attribute benutzerdefinierte Schulungsdaten bereitstellen müssen, müssen Sie auch für das andere die gleiche Menge an Schulungsdaten angeben. Wenn sich die Trainingsdaten nur auf eines der ähnlichen Attribute konzentrieren, kann das Modell das Attribut über seinem Gegenstück vorhersagen. Dasselbe gilt für ähnliche Entitäten. Beispiel: Zahlungswährung und Rechnungswährung sind ähnliche Attribute. Wenn die Zahlungswährung in den Trainingsdaten überrepräsentiert ist, kann das Modell die Zahlungswährung vorhersagen, selbst wenn die Äußerung die Rechnungswährung anfordert.

    Wenn Sie dem Modell beibringen müssen, wie man zwischen zwei ähnlichen oder eng verwandten Attributen unterscheidet, gleichen Sie die Gewichtung der Wichtigkeit aus, indem Sie die Hälfte der Äußerungen für ein Attribut und die Hälfte der Äußerungen für das andere angeben.

    Variieren Sie die Äußerungen, die sich auf diese ähnlichen Attribute beziehen. Beispiel: Im Folgenden finden Sie Kontrastpaare von Äußerungen, mit denen das Modell zwischen amount_remaining und amount_paid unterscheiden kann:

    • Restbetrag für genehmigte Rechnungen angeben
    • den bezahlten Betrag für genehmigte Rechnungen anzeigen
    • Gesamt-zahlbaren Betrag an Lieferanten-AD anzeigen
    • den gesamten bezahlten Betrag für Lieferanten-AD berechnen
    • Wie hoch ist der fällige Betrag auf Ausgangsrechnungen an Lieferanten-AD
    • den bezahlten Betrag auf Ausgangsrechnungen an Lieferanten-AD auflisten
  • Ausgleichen des Trainings von Werten, die mit primären Namen oder Synonymen übereinstimmen: Beispiel: Ihr Modell hat ein Attribut manager, und "manager" ist auch ein Wert für das Attribut job des Mitarbeiters. Wenn Sie den Trainingsdaten "Wie viele Manager" hinzufügen möchten, sollten Sie diese Trainingsdaten mit Äußerungen ausgleichen, die das Attribut manager verwenden, wie "Wer ist der Manager des Mitarbeiters Adam Smith", sowie Äußerungen, die den Manager job verwenden, wie "Alle Manager anzeigen". Auf diese Weise kann das Modell lernen, zwischen den beiden Verwendungen zu unterscheiden. Wenn Sie keine Beispiele für beide Nutzungsarten angeben, kann der Skill eine Nutzung gegenüber der anderen vorhersagen.

  • Vielfältige Formulierungen: Die Best Practices für verschiedene Formulierungen für benutzerdefinierte Daten ähneln denen für Intent-Äußerungen:

    • Verwenden Sie vollständige Sätze.

    • Verwenden Sie verschiedene Verben. Beispiel: Anzeigen, Auflisten, Anzeigen, Anzeigen und Anzeigen.

    • Verwenden Sie neben dem Entity- oder Attributnamen verschiedene Synonyme und Paraphrasen.

    • Verwenden Sie verschiedene Pronomen. Zum Beispiel: Zeigen Sie mir, können wir sehen, sagen Sie uns, ich will.

    • Variieren Sie die Satzstruktur. Beispiel: Setzen Sie den Attributwert nahe am Anfang, in der Mitte und am Ende der Sätze.

    • Wenn Äußerungen mit einer Aggregation vorhanden sind, wie AVG, fügen Sie auch Äußerungen mit anderen Operatoren hinzu.

    • Wenn möglich, verwenden Sie verschiedene Klauseln, wie Gruppieren nach und wo Klauseln mit AND- und OR-Bedingungen.

  • Werte diversifizieren: Wenn Sie mehrere Werte in den Äußerungen Ihres Szenarios verwenden, kann das Modell verschiedene Werte besser erkennen. Werte mit unterschiedlichen Wortlängen einschließen. Nehmen Sie einige Werte mit Sonderzeichen auf, wie "/" und "-". Fügen Sie einige Werte mit speziellen Schlüsselwörtern wie "and" ein.

  • Fügen Sie eine Mischung aus bekannten und unbekannten Werten ein. Verwenden Sie für Wertelistenattribute eine repräsentative Gruppe von Attributwerten (aber nicht alle), um zu trainieren, dass Wertelistenübereinstimmungen wichtige Signale sind. Bei Wertelisten, die keine geschlossenen Listen sind, sollten Sie auch Werte in die Werteliste aufnehmen, die nicht in der Werteliste enthalten sind, damit sie dem Attribut bestimmte Formulierungen zuordnen kann.

So fügen Sie den Trainingsdaten eine zugeordnete Äußerung hinzu:

  1. Wenn die Schaltfläche Trainieren ein rotes Badge aufweist, klicken Sie auf Zugsymbol mit Badge, und trainieren Sie mit Trainer Tm.

  2. Gehen Sie auf der Seite Entitys zur Registerkarte Dataset, und klicken Sie auf Abfrageentitys.

  3. Klicken Sie auf die Registerkarte Schulungsdaten.

  4. Klicken Sie auf Äußerung hinzufügen.

    Das Dialogfeld Äußerung erstellen wird angezeigt.

  5. Geben Sie die Äußerung ein, und klicken Sie auf Weiter.

    Im Dialogfeld wird die OMRQL-Abfrage für die Äußerung angezeigt. Wenn die Äußerung nicht in die Abfrage übersetzt werden kann, ist die Abfrage leer.

    Hinweis: Wenn der Skill nicht trainiert wurde, kann er die Äußerung nicht in eine OMRQL-Abfrage übersetzen.

  6. Prüfen Sie die Abfrage, und korrigieren Sie sie, wenn sie falsch ist.

    OMRQL-Schlüsselwörter und -Beispiele finden Sie in der OMRQL-Referenz.

  7. Klicken Sie auf Fertig, um die zugeordnete Äußerung zu den Trainingsdaten hinzuzufügen.

Abfragevorschläge für SQL-Dialogbenutzer angeben

Sie können Benutzern helfen, mehr über die Datenbankabfragen zu erfahren, die sie erstellen können, indem Sie Vorschläge zur automatischen Vervollständigung bereitstellen. Diese Vorschläge geben Hinweise darauf, welche Fragen das logische Modell beantworten kann. Die Äußerungen helfen dem Skill auch beim Routing.

So erstellen Sie Vorschläge für die automatische Vervollständigung für einen SQL Dialogs-Skill:

  1. Wenn die Schaltfläche Trainieren ein rotes Badge aufweist, klicken Sie auf Zugsymbol mit Badge, und trainieren Sie mit Trainer TM.

  2. Gehen Sie auf der Seite Entitys zur Registerkarte Dataset, und klicken Sie auf Abfrageentitys.

  3. Klicken Sie auf die Registerkarte Vorschläge automatisch vervollständigen.

  4. Klicken Sie auf Äußerung hinzufügen.

    Das Dialogfeld Äußerung erstellen wird angezeigt.

  5. Geben Sie die Äußerung ein, klicken Sie außerhalb des Textfeldes, und klicken Sie dann auf Weiter.

    Im Dialogfeld wird die OMRQL-Abfrage für die Äußerung angezeigt. Wenn die Äußerung nicht in eine Abfrage übersetzt werden kann, ist die Abfrage leer.

    Hinweis: Wenn der Skill nicht trainiert wurde, kann er die Äußerung nicht in eine OMRQL-Abfrage übersetzen.

  6. Prüfen Sie die Abfrage, und korrigieren Sie sie, wenn sie falsch ist.

    OMRQL-Schlüsselwörter und -Beispiele finden Sie in der OMRQL-Referenz.

  7. Klicken Sie auf Fertig, um die zugeordnete Äußerung den Vorschlägen für die automatische Vervollständigung hinzuzufügen.

Äußerungen an die SQL-Dialogunterhaltung weiterleiten

Wenn Ihr Skill Intents hat oder sich in einem DA befindet, benötigt Ihr Skill genau wie bei Intents Äußerungen, um SQL-Abfragen an die SQL-Dialogunterhaltung weiterzuleiten. Der Routingmechanismus verwendet die automatischen Vervollständigungsvorschläge, Trainingsdaten, generierte Routingäußerungen und handgefertigte Routingäußerungen, um zu lernen, wie SQL-Abfragen erkannt werden. Die einzelnen Äußerungstypen werden auf den separaten Registerkarten auf der Seite Dataset für Abfrageentitys angezeigt.

Auf der Registerkarte Generierte Routingdaten können Sie schnell 100 Routingäußerungen generieren, die auf dem logischen Modell basieren, wie unter Routingdaten für SQL-Dialogfelder generieren beschrieben. Anschließend können Sie sie prüfen, ggf. bearbeiten und genehmigen oder die Genehmigung aufheben. Die genehmigten Daten werden der Registerkarte Kombinierte Routingdaten hinzugefügt und entweder als synthetisch oder, wenn Sie sie bearbeitet haben, als verfeinert markiert.

Auf der Registerkarte Kombinierte Routingdaten werden alle Dataset-Typen aufgeführt. Außerdem können Sie manuell erstellte Routingdaten hinzufügen, wie unter Routingdaten für Handcraft SQL Dialogs beschrieben.

Beachten Sie, dass die Gesamtanzahl der automatisch abgeschlossenen, Schulungs-, generierten und handgefertigten Äußerungen 10.000 nicht überschreiten darf. Wenn Sie dieses Limit überschreiten, wird die Meldung "Die maximale Anzahl von Korpusbeispielen für diesen Bot (10000) wurde erreicht" angezeigt. Außerdem sind 120 Trainingsäußerungen begrenzt.

Informationen zur automatischen Vervollständigung von Vorschlägen und Schulungsdaten finden Sie unter Abfragevorschläge für SQL-Dialogbenutzer bereitstellen und Schulungsdaten über Äußerungen bereitstellen.

Tipp:

Jede Entity verfügt über eine Dataset-Registerkarte, auf der Sie die Äußerungen anzeigen können, die Attribute aus dieser bestimmten Entity verwenden.

Routingdaten für SQL-Dialogfelder generieren

Wenn Ihr Skill Intents hat oder sich in einem DA befindet, benötigt Ihr Skill genau wie bei Intents Äußerungen, um SQL-Abfragen an die SQL-Dialogunterhaltung weiterzuleiten. Neben den Vorschlägen für die automatische Vervollständigung, den Schulungsdaten und den handgefertigten Routingdaten verwendet der Routingmechanismus generierte Routingäußerungen, die Sie auf der Registerkarte Generierte Routingdaten im Dataset für Abfrageentitäten erstellen. Die generierten Äußerungen stellen eine breite Abdeckung von Fragen zu allen Abfrageentitys im logischen Modell dar.

So generieren Sie Weiterleitungsdaten:

  1. Wenn die Schaltfläche Trainieren ein rotes Badge aufweist, klicken Sie auf Zugsymbol mit Badge, und trainieren Sie mit Trainer TM.

  2. Gehen Sie auf der Seite Entitys zur Registerkarte Dataset, und klicken Sie auf Abfrageentitys.

  3. Klicken Sie auf die Registerkarte Generierte Routingdaten.

  4. Klicken Sie auf Generieren.

    Das Dialogfeld Routingdaten generieren wird angezeigt.

  5. Wählen Sie im Feld Entitys auswählen die Option Alle aus. Wenn Sie die Weiterleitungsdaten zum ersten Mal generieren, müssen Sie Daten für alle Entitys generieren. Nachdem Sie das anfängliche Set generiert haben, können Sie bei Bedarf zurückkommen und für bestimmte Entitys generieren.

  6. Klicken Sie auf Generieren.

    Der Skill generiert 100 Äußerungen, die Fragen widerspiegeln, die das logische Modell beantworten kann.



  7. Prüfen Sie die generierten Daten, und bearbeiten Sie die Daten, die verfeinert werden müssen.

    Tipp:

    Die Äußerung kann nicht bearbeitet werden, wenn sie genehmigt wurde. Wenn Sie eine genehmigte Äußerung ändern möchten, heben Sie die Genehmigung auf, bearbeiten Sie sie, und genehmigen Sie sie erneut.
  8. Löschen Sie bei Bedarf Einträge, und genehmigen Sie den Rest.

    Die genehmigten Äußerungen werden den kombinierten Routingdaten hinzugefügt. Wenn Sie eine Äußerung bearbeitet haben, ist der zugehörige Routingsubtyp auf der Registerkarte Kombinierte Routingdaten Verfeinert. Andernfalls ist es Synthetisch.

Routingdaten für Handcraft-SQL-Dialogfelder

Wenn gültige SQL-Abfragen vorhanden sind, die der DA oder Skill nicht an die SQL-Unterhaltung weiterleitet, müssen Sie diese Äußerungen über die Registerkarte Kombinierte Routingdaten auf der Seite Abfrageentity-Dataset zu den Routingdaten hinzufügen.

So fügen Sie handgefertigte Routingdaten hinzu:

  1. Wenn die Schaltfläche Trainieren ein rotes Badge aufweist, klicken Sie auf Zugsymbol mit Badge, und trainieren Sie mit Trainer TM.

  2. Gehen Sie auf der Seite Entitys zur Registerkarte Dataset, und klicken Sie auf Abfrageentitys.

  3. Klicken Sie auf die Registerkarte Kombinierte Routingdaten.

  4. Klicken Sie auf Äußerung hinzufügen.

    Das Dialogfeld Äußerung erstellen wird angezeigt.

  5. Geben Sie die Äußerung ein, und klicken Sie dann außerhalb des Textfeldes.

  6. Klicken Sie auf Weiter.

  7. Prüfen Sie die OMRQL-Abfrage, um zu prüfen, ob die Ergebnisse die Abfrage beantworten würden. Wenn dies nicht der Fall ist, korrigieren Sie die Abfrage, und klicken Sie auf Erneut interpretieren. Die Schlüsselwörter der OMRQL-Abfrage finden Sie in der OMRQL-Referenz.

  8. Klicken Sie auf Fertig.

    Die Äußerung wird den Daten hinzugefügt, wobei der Routingsubtyp auf "Handcrafted" gesetzt ist.

Darstellung von Entitys und Attributen konfigurieren

Hier können Sie steuern, wann und wie die Entityzeilen und -attribute in den Ergebnissen angezeigt werden:

In der Regel arbeiten der Datenbankexperte und der Konversationsdesigner an dieser Aufgabe zusammen, da der eine über Datenbankschemakenntnisse verfügt und der andere mit den Erwartungen der Benutzer vertraut ist.

Sie können Ihre Änderungen testen, indem Sie auf Vorschau klicken, um den Unterhaltungstester zu öffnen und eine Äußerung einzugeben, um die entsprechenden Daten abzurufen.

Tipp:

Für die meisten von Ihnen vorgenommenen Änderungen ist eine Umschulung des Natural Language Parser (NLP) erforderlich. Wenn Sie Ihre Änderungen testen und das Symbol Schulung mit einem roten Abzeichen (Zugsymbol mit Badge) gekennzeichnet ist, müssen Sie zuerst auf Schulung klicken und den Schulungsprozess abschließen.

Anzeige von Formular oder Tabelle konfigurieren

Der Skill kann die Ergebnisse der Entity als Tabelle, Formular oder Tabellenform anzeigen (wo Sie eine Zeile einblenden können, um weitere Details im Formularmodus anzuzeigen). Mit den Layoutkonvertierungsfeldern auf der Registerkarte Präsentation der Entity können Sie konfigurieren, wann die Ergebnisse in jedem Modus angezeigt werden sollen.

Standardmäßig zeigt der Skill jede Zeile in der Antwort als Formular an, es sei denn, die Anzahl der Zeilen überschreitet einen Schwellenwert, den Sie für Formularlayout für diese Zeilenanzahl oder weniger verwenden angeben. Im Folgenden finden Sie Beispiele für eine Antwort im Form- und Tabellenmodus:


Beschreibung von sql-results-form.png folgt
Beschreibung der Abbildung sql-results-form.png


Beschreibung von sql-results-table.png folgt
Beschreibung der Abbildung sql-results-table.png

Wenn die Anzahl der Spalten einen Schwellenwert überschreitet, zeigt der Skill ein Tabellenformular an. Bei einer Tabellenform wird nur die angegebene Anzahl von Spalten angezeigt, und der Benutzer kann die Form erweitern, um die anderen Attribute anzuzeigen. Verwenden Sie Zu Tabellenformularlayout wechseln, wenn die Anzahl der Spalten diese Anzahl überschreitet, um den Schwellenwert anzugeben. Im Folgenden finden Sie ein Beispiel für ein Tabellenformularlayout für den Spaltenschwellenwert von 2.


Beschreibung von sql-results-table-form.png folgt
Beschreibung der Abbildung sql-results-table-form.png

Einen oder zwei horizontale Abschnitte im Formular anzeigen

Standardmäßig zeigt der Skill im Formularmodus alle Ergebnisattribute untereinander an. Um Platz zu sparen, können Sie Anzahl horizontaler Abschnitte im Formularlayout auf 2 setzen, um zwei Spalten mit Attributen anzuzeigen.

Titel für die Ergebnisse festlegen

Standardmäßig verwendet der Skill den Namen der Abfrageentity für den Ergebnistitel. Sie können jedoch den Anzeigenamen auf der Registerkarte Präsentation verwenden, um einen anderen Titel festzulegen.

Nachdem Sie den Anzeigenamen festgelegt haben, können Sie das Feld nicht mehr löschen.

Standard-Sortierfolge einer Entität definieren

Sie können eine Standardsortierreihenfolge für den Skill angeben, wenn die Äußerung des Benutzers keine angibt. Um den Standardwert festzulegen, navigieren Sie zur Registerkarte Allgemein der Entity, klicken Sie auf Attributreihenfolge hinzufügen, wählen Sie ein Attribut aus, und wählen Sie dessen Reihenfolge aus (aufsteigend oder absteigend). Sie können weiter auf Attributreihenfolge hinzufügen klicken, um der Sortierreihenfolge weitere Attribute hinzuzufügen.

Definieren Sie, welche Attribute berücksichtigt werden sollen, wenn sie nicht durch die Äußerung angegeben werden

Wenn die Äußerung keine Attribute benennt, sollen die Ergebnisse wahrscheinlich einige wichtige Felder enthalten. Sie können diese Felder auf der Registerkarte Präsentation der Entity mit Standardattributen angeben. Beispiel: Für eine invoices-Entity möchten Sie invoice_num, invoice_date und invoice_amount anzeigen, wenn keine Attribute benannt werden.

Beachten Sie, dass Sie der Liste der Standardattribute keine Attribute des Typs "Abfrageentität" hinzufügen können.

Legen Sie fest, welche Attribute immer in die Ergebnisse aufgenommen werden sollen

Wenn eine Äußerung bestimmte Attribute identifiziert, soll das Ergebnis möglicherweise nicht nur die angeforderten Attribute, sondern auch einen bestimmten Kontext enthalten. Beispiel: Wenn jemand "Rechnungsbeträge anzeigen" eingibt, ergeben die Daten keinen Sinn, wenn nur die invoice_amount-Werte angezeigt werden, und nicht irgendeinen identifizierenden Kontext wie invoice_num. Verwenden Sie Mindestattribute auf der Registerkarte Präsentation der Entity, um die Mindestattribute zu identifizieren.

Attribute des Typs "Abfrageentität" können nicht zur Liste der Mindestattribute hinzugefügt werden.

Größe der Ergebnisseite konfigurieren

Verwenden Sie die Registerkarte Maximale Anzahl Zeilen pro Seite in der Präsentation der Entity, um festzulegen, wie viele Zeilen gleichzeitig angezeigt werden sollen.

Der Benutzer kann auf Schaltflächen klicken, um durch die Ergebnisse zu blättern.

Schaltflächen und Links zu Ergebnissen hinzufügen

Sie können Schaltflächen und Links zu den Ergebnissen einer Abfrageentity sowohl auf globaler als auch auf Zeilenebene hinzufügen. In jeder Zeile wird eine Zeilenaktion angezeigt, und unter den Ergebnissen wird eine globale Aktion angezeigt.

Beispiel: Für eine Mitarbeiterentität können Sie eine globale Aktion hinzufügen, die mit der Mitarbeitersuchseite des Unternehmens verknüpft ist. Auf Zeilenebene können Sie eine Aktion für eine allgemeine Nachsorgeabfrage hinzufügen, z.B. eine Abfrage der Abteilung des Mitarbeiters.

Sie können Aktionen auf der Registerkarte Präsentation der Entity hinzufügen. Wenn mehrere Maßnahmen vorhanden sind, können Sie die Reihenfolge angeben, in der die Maßnahmen angezeigt werden. Für die Aktionstypen QUERY müssen Sie eine OMRQL-Abfrage angeben. Bei URL-Aktionstypen müssen Sie die URL festlegen.

Bei Nachfassaktionen auf Zeilenebene können Sie mit ${row.attributeName} die Attributwerte jeder Zeile referenzieren. Beispiel: select * from Emp WHERE dept.loc = "${row.loc}". Zur Laufzeit hat die Schaltfläche jeder Zeile einen anderen Wert für die Abfrage. Diese Syntax ist nur für Aktionen auf Zeilenebene verfügbar.

Sie können optional einschränken, wann die Aktion angezeigt wird. Sie können z.B. eine Datensatzaktion zur Anzeige der direkten Berichtslinie eines Mitarbeiters durchführen. Diese Aktion sollte nur dann angezeigt werden, wenn die Tätigkeit des Mitarbeiters der Manager ist. Setzen Sie dazu den Sichtbarkeitsausdruck auf "Ein", und geben Sie einen FreeMarker-Ausdruck an, wie ${row.job = 'MANAGER'}.

Hinweis

Zeilenaktionen werden als Schaltflächen oder Links in jeder Zeile in einem Formular- oder Tabellenformularlayout angezeigt. Sie werden jedoch nicht in Tabellenlayouts angezeigt.

Benutzerdefiniertes Attribut hinzufügen

Sie können eigene benutzerdefinierte Attribute hinzufügen, um zusätzliche Informationen anzuzeigen, wie abgeleitete oder berechnete Werte.

  1. Klicken Sie auf der Seite "Entity" auf der Registerkarte Attribute auf + Attribut hinzufügen, und geben Sie einen kanonischen Namen und Typ an.

  2. Geben Sie auf der Registerkarte Natürliche Sprache einen Primärnamen an, und fügen Sie optional Synonyme hinzu.

  3. Wählen Sie auf der Registerkarte Backend-Zuordnung die Option SQL-Ausdruck aus, und fügen Sie den Ausdruck hinzu.

Wenn der Ausdruck eine Spalte referenziert, verwenden Sie den Spaltennamen aus dem physischen Modell (Datenbankschema), und stellen Sie ${alias} voran. Beispiel: Für eine invoices-Entity können Sie ein amount_to_pay-Attribut mit dem Ausdruck ${alias}invoice_amount + ${alias}discount_taken hinzufügen. Dabei gilt:

  • invoice_amount und discount_taken sind vorhandene physische Spaltennamen in der Tabelle invoices.
  • Die neue abgeleitete Spalte amount_to_pay ist die Summe der Werte aus den physischen Spalten invoice_amount und discount_taken.

Mit dieser Tabelle können Sie bestimmen, welcher Typ für das Attribut verwendet werden soll:

Typ Verwendung Beispiele
Zahl Die Werte sind nur numerisch und nicht auf eine Set-Liste beschränkt. Numerische Personalnummer, Rechnungsbetrag
Datum Der Wert ist ein Datum ohne Zeit. Einstellungsdatum
Datum/ Uhrzeit Der Wert kann sowohl ein Datum als auch eine Uhrzeit haben. Datum und Uhrzeit der Abreise
Entity Das Attribut ist einer Wertelistenentity zugeordnet. Wenn die Werteliste alle gültigen Werte (d.h. eine geschlossene Liste) auflistet und die Werte selten in Äußerungen in natürlicher Sprache verwendet werden, sollten Sie Synonyme für die Werte in der Liste hinzufügen. Status (geschlossen), Lieferantennamen (offen)
Zeichenfolge Wird für Text verwendet, der Zahlen und Zeichen enthalten kann, bei denen die Zuordnung zu einer Werteliste keinen Sinn ergibt. Alpha-numerische Rechnungsnummer, Produktbeschreibung
Abfrageentity Verwenden Sie diese Option nur, wenn Sie eine Verknüpfung mit einer anderen Abfrageentity herstellen müssen. Keine Beispiele
Boolean Nicht verwenden. Nicht anwendbar

Darstellung mit Event Handlern dynamisch konfigurieren

Wenn der Skill die Art und Weise, wie der Skill SQL-Abfrageergebnisse anzeigt, dynamisch ändern soll, können Sie einem benutzerdefinierten Komponentenpackage Datenabfrage-Event-Handler hinzufügen, das Package dem Skill als benutzerdefinierter Komponentenservice hinzufügen und Ihre Entitys dann über die Registerkarten Präsentation der Entity mit ihren spezifischen Handlern verknüpfen. Der Skill löst das Datenabfrageereignis einer Entity aus, wenn diese Abfrageentity die erste benannte Entity in der FROM-Klausel (die Root-Entity) ist.

Beispiel: Sie können dem Headertext dynamisch eine Zeilenanzahl hinzufügen, der Tabelle eine Zeile hinzufügen, um eine Summe anzuzeigen, oder bestimmen, wann ein Attribut ein- oder ausgeblendet werden soll.

Informationen zum Erstellen von Datenabfrage-Event-Handlern finden Sie unter SQL-Abfrageereignis-Handler schreiben.

Abfrageregeln definieren

Im Folgenden wird beschrieben, wie Sie die Einstellungen einer Entity auf der Seite Entitys verwenden, um zu steuern, wie Endbenutzer nach den Daten fragen und die Ergebnisse auswerten können.

Sie können Ihre Änderungen testen, indem Sie auf Vorschau klicken, um den Unterhaltungstester zu öffnen und eine Äußerung einzugeben, um die entsprechenden Daten abzurufen.

Tipp:

Für einige der vorgenommenen Änderungen ist eine Umschulung des Natural Language Parser (NLP) erforderlich. Wenn Sie Ihre Änderungen testen und das Symbol Schulung mit einem roten Abzeichen (Zugsymbol mit Badge) gekennzeichnet ist, müssen Sie zuerst auf Schulung klicken und den Schulungsprozess abschließen.
  • Welches Attribut zum Messen oder Vergleichen verwenden: Wenn die Äußerung Entityelemente mit einer Zahl vergleichen möchte oder die Entitys mit einem Superlativ wie größter oder weniger einstufen möchte, welches messbare Attribut soll der Skill gegebenenfalls für den Vergleich verwenden? Beispiel: Die Benutzer fragen nach dem größten Lieferanten. Möglicherweise soll der Skill das Attribut rating für Vergleiche verwenden. Um anzugeben, welches Attribut zum Messen oder Vergleichen verwendet werden soll, gehen Sie zur Registerkarte Allgemein der Entity, und wählen Sie das Attribut in der Dropdown-Liste Messen nach aus. Wenn die Einstufung der numerischen Reihenfolge entgegengesetzt ist, z.B. wenn 5 besser als 1 ist, sollten Sie auch den Vergleich invertieren des Attributs auf der Registerkarte Allgemeine Informationen auf "true" setzen.

  • Messbare Attribute vergleichen: Standardmäßig werden messbare Attributwerte in numerischer Reihenfolge verglichen. Dabei ist 1 kleiner als 5. Manchmal ist es jedoch besser, den Vergleich umzukehren, wenn 1 besser als 5 ist. Wenn Sie sich beispielsweise die Rennergebnisse ansehen, sind die 5 besten Zeiten die niedrigsten Werte in den Ergebnissen. Um Vergleiche für ein Attribut umzukehren, setzen Sie die Vergleich umkehren des Attributs auf der Registerkarte Allgemeine Informationen auf "true". Beachten Sie, dass sich diese Einstellung auch auf die Sortierreihenfolge des Attributs auswirkt.

  • Teilweisen Abgleich von Zeichenfolgen zulassen: Wenn Sie davon ausgehen, dass Benutzer häufig führende oder nachgestellte Zeichen oder Werte wie "Manager" anstelle von "Abteilungsmanager" weglassen, sollten Sie einen Teilabgleich aktivieren. Wenn der Teilabgleich aktiviert ist, verwendet die generierte SQL-Where-Klausel upper (<column-name>) LIKE UPPER(%<string>%) anstelle von = <string>. Sie können den teilweisen Abgleich auf der Registerkarte Allgemeine Informationen des Attributs aktivieren. Beachten Sie, dass sich das teilweise Übereinstimmungsverhalten für Entityattribute vom Fuzzy-Abgleichsverhalten für Wertelisten unterscheidet.

  • Geben Sie an, wie mehrdeutige Datums- und Uhrzeitangaben aufgelöst werden sollen: Bei Attributen des Typs "Datum" oder "Datum/Uhrzeit" können Sie angeben, ob mehrdeutige Werte wie "Mittwoch" in die Vergangenheit, die Zukunft oder das nächste Datum oder die nächste Uhrzeit aufgelöst werden sollen. Sie können diese Einstellung über die Zeitliche Voreinstellung auf der Registerkarte Allgemeine Informationen des Attributs festlegen.

    WARNUNG:

    Denken Sie daran, dass die Einstellung der zeitlichen Voreinstellung auf das nächste Datum oder die nächste Uhrzeit nur für die Eingabe von festen Daten und Zeiten wie "Mittwoch" funktioniert. Wenn ein Benutzer einen Wert für die Dauer eingibt, z.B. "zwei Tage", wird die Abfrage nicht aufgelöst, da ein Wert für die Dauer sowohl in der Vergangenheit als auch in der Zukunft identisch ist. Sofern Sie nicht sicher sind, dass ein Benutzer niemals einen Wert für die Dauer eingeben wird, sollten Sie die zeitliche Voreinstellung nur auf "Vergangen" oder "Zukünftig" setzen.

    Tipp:

    Wenn ein Attribut je nach Kontext manchmal standardmäßig die Vergangenheit und manchmal die Zukunft aufweisen kann, sollten Sie benutzerdefinierte Attribute mit unterschiedlichen zeitlichen Voreinstellungen erstellen. Beispiel: Für ein Attribut due_date können Sie ein due-Attribut mit einer zukünftigen Voreinstellung und ein overdue-Attribut mit einer früheren Voreinstellung hinzufügen.

Abfragen in natürlicher Sprache für denormalisierte Spalten aktivieren

Wenn Sie ein denormalisiertes Attribut mit einem Namen haben, der ein Muster verwendet, um die Attribute zu identifizieren, die in der Spalte dargestellt werden, wie PTD_LBR_CST, können Sie das denormalisierte Attribut für das Natural Language-Modell verständlich machen, indem Sie ihm mithilfe einer Backend-Zuordnung für die Spaltenerweiterung eine normalisierte Entity zuordnen.

Beispiel: Sie haben eine Abfrageentity costToSales mit den Attributen PTD_LBR_CST, QTD_LBR_CST, YTD_LBR_CST, PTD_SUB_CST, QTD_SUB_CST, YTD_SUB_CST.

Damit der Skill Abfragen in natürlicher Sprache mit diesen Attributen verknüpfen kann, erstellen Sie eine Kostenabfrageentität, die eindeutig identifizierende Attribute wie project_num plus Periode, Typ und Kosten enthält. Die Perioden- und Typattribute weisen den Typ "Entität" auf und referenzieren die Wertelisten "Periode" (PbD, QbD, YTD) und "Typ" (LBR, SUB). Die Backend-Zuordnung des Kostenattributs ist eine Spaltenerweiterung mit dem Ausdruck "${period}_${type}_CST". Der letzte Schritt besteht darin, der Entity costToSales das Kostenattribut hinzuzufügen, das die Abfrageentity "Kosten" referenziert, um die beiden Entitys zu verknüpfen.

Wenn die Abfrage "Wie hoch sind meine YTD-Arbeitskosten" ist, weist das Backend-Spaltenerweiterungsmapping den Skill an, den Wert aus dem Attribut YTD_LBR_CST abzurufen, das sich in der Entity costToSales befindet (vorausgesetzt, die erforderlichen Primärnamen und Synonyme sind festgelegt).

Test und Reparatur

Wenn Sie Trainingsdaten über Namen, Synonyme, Wertelisten und die Trainingsdaten im Abfrageentity-Dataset definieren und Ihren Entitys und Attributen hinzufügen, sollten Sie testen, wie gut die Trainingsdaten dem Parser in natürlicher Sprache helfen, die Äußerungen des Endbenutzers in SQL-Abfragen zu übersetzen.

Tipp:

Wenn das Train-Symbol ein rotes Badge (Zugsymbol mit Badge) enthält, müssen Sie auf Schulung klicken und den Schulungsprozess abschließen, bevor Sie die Äußerungen testen können.

Die Seite Entitys enthält den Link Testabfragen, mit dem der Abfragetester geöffnet wird, um Ihre Groß-/Kleinschreibung auszuprobieren. Im Tester können Sie Ihre Testäußerung eingeben und die OMRQL-Abfrage prüfen, die der Skill generiert hat.



Wenn der Tester die Äußerung in eine Abfrage übersetzt, prüfen Sie die OMRQL-Abfrage, um zu prüfen, ob sie die gewünschten Ergebnisse liefert. Wenn die OMRQL-Abfrage nicht korrekt ist, müssen Sie den Skill mit dem entsprechenden Fix reparieren:

Tipp:

Verwenden Sie die Option Als Testfall speichern, um einige Ihrer gültigen Abfragen im Batchtester zu speichern. Mit dieser Option können Sie sicherstellen, dass Änderungen, die Sie vornehmen, sich nicht negativ auf andere Bereiche auswirken. Siehe Mit Abfrageentitäts-Batchtests überwachen.

Beachten Sie, dass einige Äußerungen aufgrund von Einschränkungen im Feature "SQL-Dialog" möglicherweise nicht korrekt übersetzt werden. In einigen Fällen können Sie diese Einschränkungen umgehen, indem Sie benutzerdefinierte Trainingsdaten hinzufügen. Siehe Fehlerbehebung bei SQL-Abfragen.

Wenn der Abfragetester meldet, dass unzureichende Trainingsdaten vorhanden sind, können Sie auf JSON anzeigen klicken, um Informationen darüber zu erhalten, wie die Äußerung geparst wurde. Der Wert translatable gibt an, ob das Modell die Abfrage unterstützt. Mit der confusionSpanText können Sie einen Hinweis darauf erhalten, welcher Teil der Abfrage nicht unterstützt wird.


Beschreibung von query-tester-json.png folgt
Beschreibung der Abbildung query-tester-json.png

Prüfen Sie bei Äußerungen, die nicht übersetzt werden können, zuerst, ob Sie einen Tippfehler eingeführt haben, Ihre Abfrage zu vage ist oder ob Ihre Abfrage außerhalb des Modellbereichs liegt. Diese Probleme können nicht durch Schulungen gelöst werden. Andernfalls können Sie möglicherweise nicht genügend Trainingsdaten auflösen, indem Sie ein Synonym hinzufügen oder die Äußerung zu den benutzerdefinierten Trainingsdaten im Abfrageentitäts-Dataset hinzufügen. Im Folgenden finden Sie einige Beispiele für die Arten von unzureichenden Trainingsdatenproblemen, die Sie möglicherweise durch Hinzufügen benutzerdefinierter Trainingsdaten lösen können.

  • Attributverwechslung: Beispiel: Der Status bezieht sich auf den Zahlungs- oder Genehmigungsstatus.

  • Attribut/Wert-Verwirrung: Beispiel: "Wie viele Manager gibt es?" ( referenziert er den Wert des Attributs manager oder den Tätigkeitswert des Mitarbeiters?).

  • Suchwerte, die auch Schlüsselwörter oder Operatoren sind: Beispiel: Unterscheiden Sie das Synonym "gesamt" vom Operator SUM.

Wenn OMRQL gültig ist, können Sie testen, wie der Skill OMRQL in SQL übersetzt, indem Sie auf Klicken Sie hier, um dies im Unterhaltungstester zu testen klicken. Der Unterhaltungstester wird zusammen mit den Ergebnissen angezeigt.

Im Unterhaltungstester werden die OMRQL- und SQL-Anweisungen auf der Registerkarte SQL-Dialogfelder angezeigt. Wenn die Abfrage nicht übersetzt werden kann, zeigt sie an, dass die Abfrage nicht übersetzbar ist, und zeigt an, welcher Text die Verwirrung verursacht hat.



Fehlerbehebung bei SQL-Abfragen

Wenn eine Abfrage nicht wie erwartet aufgelöst wird, liegt dies möglicherweise daran, dass das Modell nicht genügend Informationen enthält oder die Äußerung außerhalb des Geltungsbereichs liegt. Dies kann auch an den Einschränkungen von SQL Dialogs liegen.

In Fällen, in denen das Modell nicht über ausreichende Informationen verfügt, wird unter Test und Reparatur beschrieben, wie Sie die Probleme lösen. Es gibt Einschränkungen für slso SQL Dialogs, die verhindern können, dass der Parser in natürlicher Sprache die Äußerung korrekt in OMRQL übersetzt. Dieser Abschnitt enthält Informationen zu diesen Einschränkungen und Möglichkeiten, wie Sie diese nach Möglichkeit umgehen können.

Allgemeine Einschränkungen in SQL-Dialogfeldern

In der folgenden Tabelle werden allgemeine Einschränkungen in SQL-Dialogfeldern beschrieben, die Sie kennen sollten. Diese Einschränkungen haben keine Workarounds.

Kategorie Einschränkung Beispiele für nicht unterstützte Abfragen
Anzahl unterstützte Entitys und Attribute Das logische Modell kann insgesamt 50 Attribute plus Entitys enthalten. Dieser Grenzwert umfasst alle erstellten virtuellen Attribute und Entitys.  
Nicht-englische Abfrage Jede Abfrage in einer anderen Sprache als Englisch. Numero total de empleadas
Verwendung von Pronomen Verwenden von Pronomen wie "Ich", "Ich" und "mein" in einer Äußerung.
  • Wie hoch ist mein Gehalt?
  • Wessen Manager bin ich?
  • Mitarbeiter, die vor mir eingestellt wurden
Ja und keine Fragen Jede Frage, bei der die Antwort ein Ja oder ein Nein ist. SQL-Dialoge unterstützen nur Abfragen, bei denen die Antwort eine Gruppe von Ergebnissen aus einer Datentabellenabfrage ist.
  • Ist John ein Angestellter?
  • Haben wir Analysten in der Buchhaltung?
  • Haben wir weniger als 30 Mitarbeiter im Vertrieb?
Negation

Äußerungen, die negative Wörter enthalten, wie "not" und "no" oder Abfragen für Werte, die Negations- oder Nullwerte angeben.

  • Welche Mitarbeiter sind nicht in der Buchhaltung?
  • welche Mitarbeiter eine Provision verdienen (Provisionsabfragen sind nicht Null)
  • Welche Rechnungen werden nicht bezahlt?
  • Rechnungen für nicht föderierten Lieferanten (Abfragen für einen Wert, der Negation enthält)
Komplexe SQL-Operatoren SQL Dialogs unterstützt nicht die komplexeren Abfragen, die Unterabfragen, SET-Operatoren (INTERSECT, UNION, EXCEPT und NONE), Abfragen, die arithmetische Operatoren erfordern, sowie die Schlüsselwörter EXISTS und NOT.

In seltenen Fällen finden Sie jedoch möglicherweise eine komplexe Abfrage, die korrekt aufgelöst wird. Um konsistente Ergebnisse zu gewährleisten, sollten Sie die Verwendung von Datenbankansichten oder das Erstellen virtueller Attribute in Betracht ziehen, wie unter Benutzerdefiniertes Attribut hinzufügen beschrieben.

  • Mitarbeiter anzeigen, deren Gehälter das höchste Gehalt der Vertriebsabteilung übersteigen
  • Wie hoch ist die Gesamtvergütung der einzelnen Mitarbeiter?
  • Stellen anzeigen, die sowohl männliche als auch weibliche Mitarbeiter beschäftigen
    • Wählen Sie eine Tätigkeit aus, wobei Geschlecht = M INTERSECT eine Tätigkeit aus dem Mitarbeiter auswählen, wobei Geschlecht = F
Implizite SQL-Operatoren

SQL Dialogs unterstützt keine SQL-Klauselfunktionen, die nicht explizit angefordert werden. Beispiel:

  • Implizite Unterscheidung: Das implizieren, dass zurückgegebene Ergebnisse eindeutig sein müssen.
  • Implizite Aggregationen: Ein Aggregationsvorgang wird impliziert.
  • Implizite Reihenfolge nach: Eine Reihenfolge der Ergebnisse wird impliziert. Sie sollten den Standard-Reihenfolgeausdruck in der Registerkarte Allgemein der Entity festlegen.

Eindeutig:

  • Städte aller Mitarbeiter anzeigen (gibt mehrere Datensätze mit sich wiederholenden Städten zurück)
  • Abteilungsnamen anzeigen, bei denen alle Mitarbeiter mehr als 10000 verdienen (gibt mehrere Datensätze mit demselben Abteilungsnamen zurück, einen für jeden Mitarbeiter, der mehr als 10.000 verdient)

Aggregation:

  • Wie viel zahlen wir an alle Mitarbeiter in der Buchhaltung (bietet eine Anfrage für das Gesamtgehalt aller Mitarbeiter in der Buchhaltung an)
  • Gehalt pro Abteilung anzeigen (Implementierungsübersicht)

Anordnen nach

  • Alle Mitarbeiternamen anzeigen (der Benutzer möchte sie möglicherweise alphabetisch sortieren, aber die Sortierreihenfolge ist nicht explizit impliziert)
  • Mitarbeiter in aufsteigender Reihenfolge anzeigen (das Attribut, nach dem sortiert werden soll, ist impliziert)
Begrenzter Support für Nachfassfragen SQL Dialogs unterstützt keine Out-of-the-box-Fragen. Das heißt, Benutzer können keine neue Nachfassfrage zum Aktualisieren der Antwort aussprechen.

Tipp:

Sie können den Ergebnissen Schnellaktionen in Form von Links oder Schaltflächen hinzufügen, die allgemeine Nachfassabfragen ausführen. Siehe Schaltflächen und Links zu Ergebnissen hinzufügen.
Hier sind Beispiele für Nachfassabfragen für die ursprüngliche Äußerung "Alle Mitarbeiter in Seattle anzeigen"
  • Nur Angestellte anzeigen
  • jetzt die Manager anzeigen
  • Welche davon verdienen über 3000?
In diesen Fällen müssen Benutzer die vollständige Frage eingeben, z. B. "Alle Mitarbeiter in Seattle anzeigen, die als Sachbearbeiter arbeiten".

Grundlegende Abfrageprobleme beheben

Kategorie Beschreibung des Problems Beispiele für nicht unterstützte Abfragen Zwischenlösung
Attribut auswählen Auswahl von mehr als 3 Attributen Name, Berufsbezeichnung, Gehalt und Provision aller Mitarbeiter anzeigen Fügen Sie benutzerdefinierte Trainingsdaten hinzu. Die Trainingsdaten können Beispiele für verschiedene Entitys und einige verschiedene Sets von 4 (oder mehr) Attributen enthalten.
Entity wählen Mehr als eine Entity wird angefordert
  • Alle Mitarbeiter und ihre Abteilungen anzeigen
  • Lieferanten- und Lieferantenadresse für alle Rechnungen anzeigen
Verwenden Sie benutzerdefinierte Trainingsdaten, um der Entity beizubringen, ein Attribut aus der zweiten Entity auszugeben. Beispiel: Für "Lieferanten jeder Rechnung anzeigen" können Sie Trainingsdaten hinzufügen, die der OMRQL die Abfrage zuordnen: select invoiceid, vendor.vendor_name from invoices
wobei Drei oder mehr Bedingungen in der Where-Klausel Mitarbeiter anzeigen, die nach 2000 eingestellt wurden und in der Finanzabteilung als Analyst arbeiten Weiterbildungsdaten mit Beispielen hinzufügen, die mehrere Bedingungen enthalten
Anordnen nach Reihenfolge nach mehr als einem einzelnen Attribut oder einer einzelnen Entity Mitarbeiter sortiert nach Tätigkeit und Namen anzeigen Trainingsdaten mit Beispielen hinzufügen, die eine Reihenfolge nach 2 oder mehr Attributen enthalten
Gruppieren nach Nach mehreren Attributen oder Entitys gruppieren Durchschnittsgehalt pro Tätigkeit und Abteilungsstandort anzeigen Trainingsdaten mit Beispielen hinzufügen, die Gruppierung nach 2 weiteren Attributen oder Entitys enthalten
Gruppieren nach + Haben Mehr als eine Bedingung in der WHERE-Klausel Stellen anzeigen, die mindestens 20 Mitarbeiter und ein Durchschnittsgehalt von über 30000 haben Weiterbildungsdaten mit Beispielen hinzufügen, die mehrere Bedingungen in der WHERE-Klausel enthalten
Self Joins Wenn eine Entity einen Link zu sich selbst hat, ist diese Berechnung für das Modell möglicherweise nicht möglich, selbst bei benutzerdefinierten Trainingsdaten. Hier werden bei den Abfragen Mitarbeiterdaten angefordert, die mit Mitarbeiterdaten verknüpft sind.
  • Namen und Gehalt von Johns Manager anzeigen
  • Welche Mitarbeiter berichten Chris?
Es gibt keinen geprüften Workaround.

Fehlerbehebung bei Datums- und Uhrzeitproblemen

Kategorie Beschreibung des Problems Beispiele für nicht unterstützte Abfragen Zwischenlösung
Implizite Datums- und Datums-/Uhrzeitwerte Wenn Sie nach einem Datum oder Datum/Uhrzeit filtern, müssen Sie explizit Kontext für die Where-Klausel angeben.

Beispiel: Anstatt zu sagen, "welche Rechnungen überfällig sind", müssen Sie so etwas wie "welche Rechnungen ein Fälligkeitsdatum vor dem heutigen Datum haben".

  • Was ist das nächste Ereignis?
  • Welche Rechnungen sind überfällig?
Erstellen Sie ein virtuelles Attribut (z. B. um anzugeben, ob ein Ereignis ansteht) und verwenden Sie dann benutzerdefiniertes Training, um dem Modell das erwartete Verhalten beizubringen.
Implizite vergangene oder zukünftige Referenz Bei Datums- und Datum-/Uhrzeitattributen verwenden Sie die zeitliche Voreinstellung des Attributs auf der Registerkarte Allgemeine Informationen, um anzugeben, wie mehrdeutige Datums- oder Datum-/Uhrzeitwerte aufgelöst werden sollen.

Äußerungen, die darauf hindeuten, dass ein mehrdeutiger Wert als vergangenes oder zukünftiges Datum oder Datum/Uhrzeit aufgelöst werden muss, werden ignoriert, und die Zeitliche Voreinstellung wird verwendet.

Mitarbeiter, die am Mittwoch eingestellt werden
    • Wenn die standardmäßige zeitliche Voreinstellung in der Vergangenheit liegt, wird sie in ein vergangenes Datum aufgelöst, auch wenn der Kontext implizit in der Zukunft liegt
Möglicherweise können Sie 2 abgeleitete Attribute erstellen, um dieses Problem für Ihr Szenario zu lösen.
Kontext "Vergangen" mit den Operatoren < und > SQL Dialogs unterstützt nicht die Verwendung der Operatoren < und > für vergangene Datumsangaben oder Datum/Uhrzeit, die eine Dauer enthalten.
  • Mitarbeiter vor mehr als 2 Tagen eingestellt
  • Rechnungen, die um weniger als 2 Tage überfällig sind
Keine zuverlässigen Lösungen. Der Versuch, so etwas mit benutzerdefiniertem Training zu unterrichten, kann dazu führen, dass das Modell in anderen Fällen falsch damit beginnt, dies vorherzusagen.
Zeit ohne Datum SQL Dialogs unterstützt keine Abfragen, die Zeiten, aber keine Datumsangaben enthalten. Bestellungen, die ab 3 Uhr geliefert werden Kein bekannter Workaround.
Wiederholungsdaten SQL Dialogs unterstützt keine Datumsangaben, die einen sich wiederholenden Wert über ein bestimmtes Intervall angeben. Welches Treffen findet am ersten Montag eines jeden Monats statt? Keine bekannte Problemumgehung

Fehler bei der Attributauswahl beheben

Kategorie Beschreibung des Problems Beispiele für nicht unterstützte Abfragen Zwischenlösung
Begrenzte Leistung für domänenspezifische Entitäts-/Attributsynonyme Bei domänenspezifischen oder technischen Synonymen, die nicht häufig als Synonyme verwendet werden, kann das Modell Schwierigkeiten haben, es dem richtigen Attribut zuzuordnen

Attribut: ip_address

Synonym: Geräte

Fügen Sie benutzerdefinierte Trainingsdaten hinzu. Beispiele mit den Synonymen des Attributs und weitere Beispiele mit dem Primärnamen einschließen, um sicherzustellen, dass das Modell die vorhandene Funktionalität nicht vergisst
Identifikationsattribut für Entitys Attribut durch Verweis auf die Entity implizieren Rechnungen mit 1234 anzeigen
  • Implikationsfilterung nach Rechnungsnummer
Fügen Sie benutzerdefinierte Trainingsdaten hinzu.
  • Daten mit Beispielen mit =, LIKE, starts with und ends with erstellen (z.B. "Alle Rechnungen mit 1234 anzeigen")
  • Stellen Sie sicher, dass die Trainingsdaten einige Beispiele enthalten, in denen der Entitätsname verwendet wird, um auf die Entität selbst zu verweisen (z. B. "Alle Rechnungen anzeigen")
Beschreibung In mehrdeutigen Fällen mit mehreren Möglichkeiten kann das Modell nicht eindeutig sein Betrag für alle Rechnungen anzeigen
  • Unklar, ob "Betrag" sich auf "Rechnungsbetrag" oder "Bruttobetrag" bezieht
Fügen Sie benutzerdefinierte Trainingsdaten hinzu.
  • Nehmen Sie Beispiele auf, die den mehrdeutigen Namen dem gewünschten Attribut zuordnen.
  • Nehmen Sie einige Beispiele auf, indem Sie die vollständigen (deutlichen) Namen der Optionen für diese bestimmte mehrdeutige Verwendung verwenden.
Implizite Attributreferenz für Werte, die nicht in der Wertelistenentity enthalten sind Wenn ein Attribut nur nach Wert referenziert wird und dieser Wert nicht in der Werteliste vorhanden ist (entweder kanonischer Wert/Synonym)
  • Gehalt aller Mitarbeiter in ODA anzeigen
    • Dabei ist "ODA" kein Wert in der Werteliste für Abteilungsnamen
  • Abteilungen in USA anzeigen
    • Wo "USA" kein Synonym für "Vereinigte Staaten" in der Standortwerteliste ist
Sie können benutzerdefinierte Trainingsdaten hinzufügen, diese sind jedoch in allen Fällen nicht zuverlässig. Beispiel: Das Modell kann erfahren, dass "Von WERT ausgestellte Ausgangsrechnungen" dem Attribut "Lieferantenname" zugeordnet werden müssen. Das Modell kann jedoch nicht "Rechnungen für WERT" oder "Rechnungen nachWert" lernen, da die Wörter für, nach, in usw. sehr allgemein sind und in einer Vielzahl von Kontexten verwendet werden können.
Reihenfolge der Werte und des Attributnamens Das Odel ist weniger robust, wenn der Wert vor dem Attributnamen in der Äußerung angegeben wird. (Dies ist eher ein Problem, wenn die Werte nicht in der Werteliste und bei Werten mit mehreren Wörtern enthalten sind.) Genehmigte Rechnungen anzeigen Fügen Sie benutzerdefinierte Trainingsdaten hinzu.
  • Erstellen Sie Beispiele mit dem Wert vor dem Attribut in den Bedingungen sowie einige Beispiele mit Attributen vor den Werten.

Fehlerbehebung bei gruppierten Problemen

Kategorie Beschreibung des Problems Beispiele für nicht unterstützte Abfragen Zwischenlösung
Nach mehr als 2 Entitys gruppieren Mehrere Entitys mit Aggregationen gruppieren
  • Anzahl Ratenzahlungen für jeden Lieferanten anzeigen
    • mit drei beteiligten Entitäten: Lieferanten, Rechnungen, Ratenzahlungen
  • Restgesamtbetrag für jeden Lieferanten
    • wobei der verbleibende Betrag in der Ratenentität liegt
Sie können versuchen, benutzerdefinierte Trainingsdaten hinzuzufügen. Der Versuch, dieses Problem zu umgehen, ist jedoch riskant und würde viele benutzerdefinierte Trainingsdaten erfordern.
Nach + Sortieren nach + Min oder Max Entitys nach der Gruppierung nach dieser Entity basierend auf den Mindest- oder Höchstwerten des Attributs sortieren.
  • Alle Abteilungen sortiert nach ihrem höchsten Mitarbeitergehalt anzeigen
  • Alle Tätigkeiten in der Reihenfolge des Mindestgehalts anzeigen, das den Mitarbeitern in dieser Tätigkeit gezahlt wurde
Fügen Sie benutzerdefinierte Trainingsdaten hinzu.
Gruppieren nach + Sortieren nach + Min/Max + Limit 1 oder Limit N Zuerst nach dem Attribut oder der Entity gruppieren, nach dem Minimum oder Maximum eines numerischen Attributs sortieren und dann die erste Zeile auswählen welche Abteilung das höchste Mindestgehalt hat Fügen Sie benutzerdefinierte Trainingsdaten hinzu.
Klauseln mit unterschiedlichen Aggregationen auswählen und verwenden Select- und Have-Klausel haben unterschiedliche Aggregationen Durchschnittsgehalt für jede Abteilung mit mindestens 10 Mitarbeitern anzeigen
  • Die SELECT-Klausel muss "avg(invoices.amount)" enthalten, und die HAVING-Klausel muss "count(invoice)" enthalten
Fügen Sie benutzerdefinierte Trainingsdaten hinzu.
SELECT- und ORDER BY-Klauseln weisen unterschiedliche Aggregationen auf SELECT- und ORDER BY-Klauseln weisen unterschiedliche Aggregationen auf den Namen und die durchschnittliche Rechnung jedes Lieferanten anzeigen und die Lieferanten in alphabetischer Reihenfolge nach Lieferantennamen sortieren
  • Hier muss die SELECT-Klausel avg(invoices.amount) enthalten, und die ORDER BY-Klausel muss vendor_name enthalten
Fügen Sie benutzerdefinierte Trainingsdaten hinzu.
Mehrere Aggregationen in Select-Klausel SQL-Dialoge unterstützen Select-Klauseln mit einer einzelnen Aggregation, durchschnittlicher plus Summe und min plus max.

Andere Kombinationen wie "Durchschnitt plus Min", "Durchschnitt plus Summe plus Max" und "Anzahl plus Summe" werden nicht unterstützt.

  • Durchschnittsgehalt und geringstes Gehalt pro Abteilung anzeigen
  • Zeigen Sie für jede Tätigkeit die Mitarbeiteranzahl und das Durchschnittsgehalt an
Fügen Sie benutzerdefinierte Trainingsdaten hinzu.
Mit + Where-Klauseln Gruppieren nach Abfrage mit einer WHERE- und einer WHERE-Klausel Welche Lieferanten des Typs LEGAL haben mehr als 6 Rechnungen? Fügen Sie benutzerdefinierte Trainingsdaten hinzu.

Entitätsprobleme beheben

Kategorie Beschreibung des Problems Beispiele für nicht unterstützte Abfragen Zwischenlösung
Typos  
  • Mitarbeiter in der Buchhaltungsabteilung
    • Wert-Acounting hat einen Tippfehler
  • Abteilung Emlpoyee Nme John Doe
    • Attribut emlpoyee nme hat einen Tippfehler
Kein Workaround. Typos in Werten funktionieren auch nicht mit benutzerdefiniertem Training.
Andere Entitys als Wertelisten und reguläre Ausdrücke Attribute mit anderen Entitytypen als der Werteliste verknüpfen (z.B. benutzerdefinierte ML-Entitys)   Keine Problemumgehung.
Fuzzyübereinstimmung Für Fuzzy Matching wird nur Stemming unterstützt. Rechnungen von Amazon
  • Wenn es keinen Kontext gibt und die Werteliste "Amazon LLC" enthält
Fügen Sie Synonyme in der Werteliste hinzu.
Fuzzyübereinstimmung Fuzzy-Übereinstimmung funktioniert für die Zeichen _ und ? nicht Mit DBX EFT bezahlte Rechnungen
  • Wenn kein Kontext vorhanden ist und die Werteliste "DBX_EFT" enthält
Fügen Sie Synonyme in der Werteliste hinzu.
Zahlen in nicht numerischer Form SQL Dialogs unterstützt eine begrenzte Liste von Zahlen, die in anderen Formularen dargestellt werden können (0-10, 20 und 50). Alle anderen Zahlen, wenn sie in einem anderen Format als numerisch referenziert werden, werden nicht unterstützt
  • Rechnungen mit fälligem Betrag kleiner als dreißig anzeigen
  • Rechnungen anzeigen, deren fälliger Betrag kleiner als 1k ist
  • Rechnungen mit fälligem Betrag kleiner als 1 Tausend anzeigen
  • Rechnungen mit fälligem Betrag kleiner als 1.000 anzeigen
Keine Problemumgehung.

Sonstige Probleme beheben

Kategorie Beschreibung des Problems Beispiele für nicht unterstützte Abfragen Zwischenlösung
2 oder mehr numerische Filter Zwei Where-Klauseln mit Zahlen (ob es sich um dasselbe Attribut oder ein anderes Attribut handelt)
  • Mitarbeiter, deren Gehalt mehr als 10000 beträgt und die Provision mindestens 2000 beträgt
  • Mitarbeiter, deren Gehalt unter 2000 liegt oder mindestens 5000 beträgt
Fügen Sie benutzerdefinierte Trainingsdaten hinzu.
Bestellung von Superlative

Nach den oberen oder unteren N-Objekten fragen.

Hinweis

Das Modell ist robuster, wenn es oben als unten angezeigt wird.
Beste Mitarbeiter anzeigen
  • Die ideale OMRQL ist "SELECT * FROM Emp ORDER BY * DESC LIMIT 1"
  • Das Modell hat jedoch Probleme mit order by *
Fügen Sie benutzerdefinierte Trainingsdaten hinzu.
Attribute, bei denen Aggregationen vorab berechnet werden Wenn das Schema vorberechnete Aggregationen wie total_amount enthält, in denen bereits die Summe gespeichert ist, oder total_servers, in dem die Gesamtanzahl der Server gespeichert ist, wird das Modell möglicherweise zwischen der Verwendung der Funktion SUM/COUNT oder dem Attribut mit der vorberechneten Aggregation verwechselt. Gesamtbetrag für Rechnung 1234 anzeigen
  • Dabei ist total_amount ein abgeleitetes Attribut, das Modell kann jedoch SUM(amount) vorhersagen
Fügen Sie benutzerdefinierte Trainingsdaten hinzu.
Standardeinstellung Das Modell sagt manchmal den Namen oder die ID der Entity voraus, anstatt * auszuwählen.

Dies ist ein seltener Fehler, und die Auswirkung ist nicht kritisch, da dem Benutzer das Mindestattribut anstelle von Standardattributen der Entity angezeigt wird.

Zeigen Sie die genehmigten Rechnungen an.
  • Die ideale OMRQL ist "SELECT * aus Rechnungen, wobei approval_status = "genehmigt" ist"
  • Das Modell sagt jedoch "select invoice_num" voraus.
Fügen Sie benutzerdefinierte Trainingsdaten hinzu, wenn dies tatsächlich ein Problem ist

Überwachen und verbessern

Während Sie Ihren Skill erstellen und testen, können Sie mit Insights und Batchtests überwachen, wie gut der Skill seine Ziele erreicht und Bereiche verfügbar macht, die verbessert werden müssen. Wenn Sie in die Testphase eintreten und den Skill schließlich für die Öffentlichkeit freigeben, sollten Sie weiterhin regelmäßige Überwachung und Tests durchführen.

Mit Insights überwachen

Die Seite Insights des Skills enthält mehrere Metriken, mit denen Sie messen können, wie gut Ihr SQL Dialog-Skill abschneidet und wo Verbesserungen vorgenommen werden sollen.

Als Business Analyst könnten Sie an diesen Datenabfragemetriken auf der Registerkarte Überblick interessiert sein:

  • Performance: Unterhaltungen - Trend nach Status (Linie) zeigt die Anzahl der Unterhaltungen über einen bestimmten Zeitraum an und gibt an, ob der Traffic nach oben, unten oder seitwärts tendiert.

  • Das Verhältnis zwischen Korrekte Abfragen und Falsche Abfragen gibt an, wie zufrieden die Botbenutzer mit der Genauigkeit der Übersetzung von Äußerungen in SQL-Abfragen sind.

  • Das Verhältnis zwischen Unterhaltungen mit dem Status Abgeschlossen und Nicht abgeschlossen zeigt, inwieweit technische Probleme die Benutzererfahrung beeinflussen.

  • Das Verhältnis zwischen Unterhaltungen gesamt und Nicht aufgelöste (OOD/OOS-)Abfragen hilft dabei, das Ausmaß zu messen, in dem der Skill die Erwartungen der Endbenutzer erfüllt.

  • Sowohl unter Unterhaltungen - Trend nach Typ als auch im Verhältnis zwischen Unterhaltungen gesamt und Unterhaltungen mit Datenabfragen wird der Anteil der Äußerungen angezeigt, bei denen es sich um SQL-Abfragen handelt.

  • Datenabfrageentitys zeigen an, welche Entitys am häufigsten abgefragt werden.

Als KI-Trainer können Sie die Benutzernachrichten auf der Registerkarte Unterhaltungen prüfen, um Verbesserungsmöglichkeiten zu ermitteln. Beispiel: Sie können die folgenden Benutzernachrichten prüfen:

  • Typ: Intent, Ergebnis: Unvollständig Benutzernachrichten weisen auf Probleme bei der Übersetzung der Äußerung in eine SQL-Abfrage hin. Häufig können Sie diese Probleme beheben, indem Sie Synonyme hinzufügen oder bei komplexeren Abfragen dem Dataset der Abfrageentitäten zugeordnete Äußerungen hinzufügen. Beachten Sie, dass Sie diese Meldungen auch anzeigen können, indem Sie in der Dropdown-Liste Fehler die Option Systembehandelte Fehler auswählen.

  • Typ: Intent, Intent: unresolvedIntent-Benutzernachrichten geben sowohl Äußerungen als auch Äußerungen außerhalb des Geltungsbereichs an, die der Skill nicht als Datenabfrageäußerung erkennt. Bei Äußerungen, bei denen es sich um gültige Datenabfragen handelt, die der Skill jedoch nicht als solche erkennt, können Sie die Probleme häufig beheben, indem Sie Synonyme hinzufügen oder die Äußerungen OMRQL im Abfrage-Dataset zuordnen.

  • Typ: Datenabfrage, Entitys zeigt die Benutzernachrichten nach Abfrageentity an.

  • Typ: Datenabfrage, Ergebnis: Falsch zeigt die Meldungen an, von denen die Benutzer dachten, dass sie falsche Ergebnisse zurückgegeben haben. Prüfen Sie, ob die Ergebnisse falsch sind, und fügen Sie gegebenenfalls Synonyme, Wertelisten und Dataset-Einträge hinzu.

Mit Abfrageentitäts-Batchtests überwachen

Als KI-Trainer sollten Sie Batchtests erstellen, um sicherzustellen, dass sich die Verbesserung eines Bereichs nicht negativ auf einen anderen auswirkt. Sie können auch Batchtests verwenden, um sicherzustellen, dass Änderungen am logischen Modell keine negativen Auswirkungen auf das benutzerdefinierte Training oder das Routing zu SQL-Unterhaltungen haben.

Genau wie bei Batchtests für Intent-Äußerungen möchten Sie möglicherweise etwa 20% der realen Abfragen beiseite legen, die Sie für das Testen von Abfragebatches erfasst haben. Sie können den Batchtest in regelmäßigen Abständen sowie nach Änderungen am logischen Modell, am benutzerdefinierten Training oder an den Routingdaten ausführen.

Jeder Testfall muss zu einer Test-Suite gehören. Bevor Sie also einen Testfall erstellen, erstellen Sie zunächst eine Testsuite, die einige Aspekte der Abfragetests widerspiegelt, wie z. B. Fehlertests, Domain-Tests oder Out-of-Domain-Tests. Wir stellen eine Suite namens Standardtestsuite bereit. Sie können dieser Testsuite Testfälle zuweisen, wenn Sie noch keine anderen Suites erstellt haben.

Sie haben zwei Möglichkeiten, einem Batchtest einen Testfall hinzuzufügen:

  • Nachdem Sie eine Äußerung aus dem Abfragetester getestet haben, können Sie eine Testsuite aus der Dropdown-Liste Als Testfall speichern auswählen, um sie in dieser Suite zu speichern.

  • Sie können im Batchtester auf der Registerkarte Testsuiten auf + Testfall klicken.

So greifen Sie auf den Batchtester zu:

  1. Klicken Sie auf der Seite Entitys auf Testabfragen.

    Der Abfragetester wird geöffnet.

  2. Klicken Sie auf Zu Testfällen gehen.

    Wählen Sie auf der Registerkarte Testsuites eine Testsuite aus, und führen Sie entweder alle Testfälle aus, oder wählen Sie bestimmte Fälle aus, und führen Sie sie aus. Die Ergebnisse werden auf der Seite Testergebnisse angezeigt. Es dauert einige Zeit, bis die Tests abgeschlossen sind. Sie wissen, dass die Ausführung abgeschlossen ist, wenn unter In Bearbeitung die Option 0 angezeigt wird.

OMRQL-Referenz

Im Folgenden finden Sie die Schlüsselwörter, die Sie verwenden können, wenn Sie OMRQL-Abfragen für die Äußerungen definieren, die Sie dem Abfrageentitäts-Dataset hinzufügen. Beachten Sie, dass Sie die kanonischen Namen und keine primären Namen und Synonyme verwenden.

Komponente OMRQL-Schlüsselwörter OMRQL-Beispiel Constraints
Basiskomponenten
  • WÄHLEN
  • *
  • VON
AUS MA AUSWÄHLEN OMRQL kann keine Attribute benennen, die nicht in der Äußerung referenziert werden.
Filtern WO Mitarbeiter WHERE Gehalt > 100000 Kein
Entitys verknüpfen

Eine Erläuterung dazu finden Sie unter Linkattribute.

. (Punkt) SELECT * FROM Employee WHERE Departments.location = 'NYC' Kein
Reihenfolge
  • SORTIEREN NACH
  • LIMIT
  • ASC
  • BESCHREIBUNG
SELECT name FROM Employee ORDER BY salary DESC LIMIT 10 OMRQL kann Daten nur dann mit ORDER BY <ATTR> [LIMIT N] sortieren, wenn die Äußerung die Wortreihenfolge oder ihre natürlichen Sprachsynonyme wie sortiert, sortiert, am höchsten und am kleinsten enthält.
Bestellungen ohne ein bestimmtes Attribut

Das Sternchen (*) wird in Verbindung mit ORDER BY verwendet, wenn ein Benutzer etwas bestellen möchte, ohne anzugeben, nach was bestellt werden soll. Beispiel: "Zeigen Sie die Top 10 Mitarbeiter an" (unklar, nach welchem Attribut wir bestellen müssen). Das Backend ersetzt dann * durch ein vorab angegebenes Standardattribut (measure_by).

SORTIEREN NACH * SELECT name FROM Employee ORDER BY * DESC LIMIT 10 (Name aus Mitarbeiteranforderung auswählen) ORDER BY * funktioniert nur Ende-zu-Ende, wenn der Wert "measure_by" für die Entity in der UI festgelegt ist
Aggregatfunktionen
  • Anzahl
  • EINDEUTIG
  • AVG
  • SUMME
  • MIN
  • MAX
AVG (sal) aus Mitarbeiter auswählen OMRQL kann nur dann DISTINCT enthalten, wenn die Äußerung dieses Wort oder ein Synonym in natürlicher Sprache enthält, wie z.B. anders oder eindeutig.
Gruppierung
  • GRUPPIEREN NACH
Standort auswählen, AVG(Employees.salary) FROM Department GROUP BY-Standort Die FROM-Klausel muss die Entity enthalten, zu der das group by-Attribut gehört
Nach Entität gruppieren GRUPPIEREN NACH * SELECT *, MAX(Employees.salary) FROM Department GROUP BY *

Hinweis: Gruppiert nach der Entity in der From-Klausel (Das Backend konvertiert "Gruppieren nach *" in "Gruppieren nach" als Primärschlüssel der Root-Entity)

 
Gruppierung und Filterung HAVING Standort AUS Abteilung GRUPPE NACH Standort mit AVG auswählen (Employees.salary) < 4000  
Vergleichsoperatoren
  • =
  • !=
  • <>
  • >
  • >=
  • <
  • <=
  • WIE
  • NICHT ÄHNLICH
  • ZWISCHEN
  • IN
  • NOT IN
SELECT * from Department WHERE name IN ('Vertrieb', 'HR') Für die Operatoren >, >=, < und <= muss die Äußerung ein äquivalentes Synonym für natürliche Sprache enthalten, wie z.B. größer als, mindestens kleiner als und höchstens.

Wenn die Äußerung kein Operatorsynonym enthält, muss OMRQL = enthalten.

OMRQL kann nur dann LIKE enthalten, wenn die Äußerung dieses Wort oder ein Synonym in natürlicher Sprache enthält, wie "Enthält", "Enthält" oder "Teilzeichenfolge".

Die OMRQL kann nur ZWISCHEN enthalten, wenn die Äußerung dieses Wort oder ein Synonym in natürlicher Sprache enthält, z.B. im Bereich von.

Logische Operatoren
  • AND
  • Oder
  • NICHT
Name AUS Mitarbeiter auswählen WHERE-Gehalt > 10000 UND Rolle = 'VP' Kein

Alle Werte in der OMRQL-Anweisung müssen exakt mit dem Datenbankwert und -format übereinstimmen. Nehmen wir zum Beispiel die Äußerung "Wer ist der Angestellte, dessen Name Jones ist?" Wenn die Datenbankwerte für das Namensattribut alle Großbuchstaben enthalten, muss der Namenswert auch alle Großbuchstaben sein. Das ist "SELECT * FROM Emp WHERE name = 'JONES'".

Wenn die Äußerung, die Sie zuordnen, ein Synonym für den tatsächlichen Datenbankwert verwendet, muss dieses Synonym für den Wert in der Werteliste definiert werden, und OMRQL muss den tatsächlichen Datenbankwert verwenden. Beispiel: Wenn die Äußerung "die Abteilung anzeigen, deren Standort der große Apfel ist", muss "großer Apfel" in der Werteliste dept_loc als Synonym für den Wert "NEW YORK" definiert werden, und OMRQL muss "SELECT * FROM Dept WHERE loc = 'NEW YORK'" lauten.

Im Folgenden finden Sie einige Beispiele für das Schreiben von OMRQL für Ihre Äußerungen:

Äußerung SQL OMRQL Anmerkungen
Zeigen Sie mir alle Mitarbeiter, die als Sachbearbeiter arbeiten SELECT * FROM Emp WHERE job = 'CLERK' SELECT * FROM Emp WHERE job = 'CLERK' OMRQL ist mit SQL identisch.
Anzahl der Mitarbeiter anzeigen, die in der Vertriebsabteilung arbeiten Wählen Sie COUNT(*) FROM Emp AS T1 JOIN Dept AS T2 ON T1.deptno = T2.deptno WHERE T2.dname = 'SALES' SELECT COUNT(*) FROM Emp WHERE dept.dname = 'SALES' Verwenden Sie anstelle einer JOIN "link_attribute.attribute_name", um ein Attribut von einer anderen Entity zu referenzieren.
Adams ist Mitglied in welcher Abteilung? AUSWÄHLEN * VON Abteilung AS T1 JOIN Emp AS T2 AUF T1.deptno = T2.deptno WHERE T2.ename = 'Adams' SELECT * FROM Dept WHERE emp.ename = 'ADAMS' Verwenden Sie anstelle einer JOIN "link_attribute.attribute_name", um ein Attribut von einer anderen Entity zu referenzieren.
Standort der Abteilung und Tätigkeitsrolle des Mitarbeiters Adams WÄHLEN SIE T1 AUS. STANDORT, T2. JOB AUS ABTEILUNG T1 BEITRITT MITARBEITER T2 AUF T1. ABTEILUNG = T2. WOBEI T2. ENAME = 'ADAMS' SELECT loc, emp.job FROM Dept WHERE emp.ename = 'ADAMS' Beachten Sie, dass OMRQL einfacher zu schreiben ist als SQL.
Wie viele Mitarbeiter gibt es für jede Tätigkeit? SELECT COUNT(*), job FROM Emp GROUP BY job SELECT COUNT(*), job FROM Emp GROUP BY job OMRQL ist mit SQL identisch.
Welcher Mitarbeiter hat das höchste Gehalt? SELECT * FROM Emp ORDER BY salary DESC LIMIT 1 SELECT * FROM Emp ORDER BY salary DESC LIMIT 1 OMRQL ist mit SQL identisch.
Mitarbeiternamen und Abteilungsnamen nach Gehalt in aufsteigender Reihenfolge anzeigen Wählen Sie T1.ename, T2.dname FROM Emp AS T1 JOIN Dept AS T2 ON T1.deptno = T2.deptno ORDER BY T1.sal ASC. SELECT ename, dept.dname FROM Emp ORDER BY salary ASC Beachten Sie, dass OMRQL einfacher zu schreiben ist als SQL.
Anzahl der Mitarbeiter an jedem Standort Wählen Sie COUNT(*), loc FROM Emp AS T1 JOIN Dept AS T2 ON T1.deptno = T2.deptno GROUP BY T2.loc Standort auswählen, COUNT(emp) aus Abteilung GROUP BY loc Wenn wir mit GROUP BY eine verknüpfte Entity zählen, verwenden wir anstelle von COUNT(*) eine neue COUNT(LINK)-Syntax. Dadurch ist OMRQL lesbarer als SQL.
Standorte mit einem Durchschnittsgehalt von mindestens 40000 anzeigen T2.name FROM Emp AS T1 JOIN Dept AS T2 ON T1.deptno = T2.deptno GROUP BY T2.name HAVING AVG(T1.sal) >= 40000 Standort aus Abteilung GROUP BY Standort mit AVG auswählen (emp.sal) <= 40000 Ein Beispiel für GROUP BY mit HAVING-Klausel.
Durchschnittsgehalt der Mitarbeiter in jeder Abteilung Wählen Sie AVG(T1.sal), T2.dno FROM Emp AS T1 JOIN Dept AS T2 ON T1.deptno = T2.deptno GROUP BY T2.dno SELECT *, AVG(sal) from Dept GROUP BY * Das Ziel ist hier, nach einem eindeutigen Attribut in der Entity "Abteilung" zu gruppieren. Der Primärschlüssel ist der am besten geeignete Kandidat. Die Anzeige des Primärschlüssels ist jedoch möglicherweise nicht immer nützlich.

In OMRL gruppieren wir stattdessen nach *. Das Backend gruppiert sich nach dem Primärschlüssel und zeigt auch die Mindestattribute der Entity an, um das Ergebnis benutzerfreundlicher zu machen

Standort und Mindestgehalt der Mitarbeiter für jede Abteilung anzeigen Wählen Sie T2.dno, T2.loc, MIN(T1.sal) FROM Emp AS T1 JOIN Dept AS T2 ON T1.deptno = T2.deptno GROUP BY T2.dno, T2.loc SELECT *, loc, MIN(sal) from Dept GROUP BY *, loc Hier möchten wir weiterhin nach der Abteilungsentität gruppieren, aber die Äußerung fordert auch speziell die Anzeige des Standorts der Abteilungen an. Beachten Sie, dass sowohl die SELECT- als auch die GROUP BY-Klausel ein * und die angeforderten Anzeigeattribute aufweisen.
Namen und Standort der Abteilung mit dem höchsten Durchschnittsgehalt anzeigen Wählen Sie T2.name, T2.loc FROM Emp AS T1 JOIN Dept AS T2 ON T1.deptno = T2.deptno GROUP BY T2.name ORDER BY AVG(T1.sal) LIMIT 1 SELECT *, Name, Standort aus Abteilung GROUP BY *, Name, Standort ORDER BY AVG(emp.sal) LIMIT 1 Ein weiteres Beispiel für die Gruppierung nach einer Entity und die Anzeige der angeforderten Attribute, diesmal mit ORDER BY LIMIT 1
Top 10 Mitarbeiter anzeigen Wählen Sie * aus Emp ORDER BY Bewertung LIMIT 10 SELECT * from Emp ORDER BY * LIMIT 10 Unter der Annahme, dass "beste Mitarbeiter" nach ihrer Bewertung sortiert sind, wird die Bewertung als Attribut "measure_by" für die Entity "Emp" festgelegt

Linkattribute

Mit Ausnahme der Verknüpfung von Entitys ähneln die OMRQL-Komponenten SQL. Anstelle einer SQL-JOIN verwenden Sie ein Paar von Linkattributen, um eine Entity mit einer anderen zu verknüpfen. Linkattribut enthält Primärnamen und Synonyme, mit denen die Beziehung zwischen den Entitys definiert wird. Beispiel: Ein Mitarbeiter-/Abteilungsattributlink mit einer 1-1-Beziehung kann den Primärnamen "Abteilung" und die Synonyme "funktioniert in", "gehört zu" und "Team" aufweisen. Ein Abteilungs-/Mitarbeiterattributlink mit einer 1:n-Beziehung kann den Primärnamen "Mitarbeiter" und die Synonyme "Mitglieder" und "Mitarbeiter" enthalten.

Neben den typischen Verknüpfungsattributen für Primärschlüssel/Fremdschlüssel können Sie auch die folgenden Typen von Verknüpfungsattributen verwenden:

  • Mehrere Verknüpfungsattribute von einer Entity zur anderen, die mehrere semantische Beziehungen definieren.
  • Ein Linkattribut von einer Entity zu sich selbst, das einen Self Join impliziert.
  • Ein Linkattribut für eine Kreuzungstabelle aufgrund eines m:n-Join