Aptitudes de dialogue SQL

Les dialogues SQL sont des compétences qui peuvent traduire les énoncés en langage naturel d'un utilisateur en interrogations SQL, envoyer les interrogations à une source de données dorsale et afficher la réponse. Cette version des dialogues SQL prend en charge l'intégration avec les services de base de données Oracle, tels qu'Oracle Enterprise Database Service.

Note

Cette version ne prend pas en charge les compétences de dialogue SQL multilingue ou les compétences dont la langue principale n'est pas l'anglais. Lorsque vous créez une nouvelle compétence (ou version ou clone d'une compétence), vous utilisez le champ Primary Language dans la boîte de dialogue Create (Créer) pour spécifier la langue principale. Une compétence est multilingue si l'ensemble de ressources, les exemples d'énoncés, l'apprentissage automatique et les listes de valeurs, par exemple, ont plus d'une langue ou si le flux de dialogue contient du code pour détecter la langue de l'entrée utilisateur et la traduire en arrière-plan.

Lors de l'écriture de compétences qui fournissent des informations de base de données aux utilisateurs finaux, les développeurs doivent généralement définir les cas d'utilisation, écrire des composants personnalisés pour extraire les données, créer des intentions pour les cas d'utilisation, mapper les énoncés d'utilisateur aux intentions et écrire le flux de dialogue pour gérer chaque intention. Avec les compétences de dialogue SQL, vous n'avez pas besoin d'effectuer ces étapes. Au lieu de cela, vous mappez les modèles mentaux des données des utilisateurs à la source de données physique, et la compétence utilise la carte pour générer dynamiquement du code SQL à partir d'énoncés en langage naturel.

Par exemple, les utilisateurs peuvent savoir que les employés appartiennent à des services situés à différents emplacements et qu'ils ont des codes d'employé, des titres d'emploi, des dates d'embauche et parfois des commissions. Compte tenu de leur modèle mental, ils peuvent récupérer les données en demandant la compétence " Quel est le travail de James Smith? ", " Quand James Smith a-t-il été embauché? ", " Combien d'employés sont à New York? " et " Qui a la plus haute commission?

Vous créez une compétence de dialogue SQL différemment des compétences standard. Pour permettre à la compétence de comprendre les énoncés en langage naturel et d'y répondre, vous créez un modèle logique à partir d'un modèle physique et vous enseignez ce modèle à l'aide de termes en langage naturel pour décrire le modèle physique.

Fonctionnement des dialogues SQL

Pour mettre en oeuvre une compétence de dialogue SQL, vous créez une compétence de dialogue visuel et vous importez des informations sur le modèle physique (schéma de base de données) à partir du service de données. Oracle Digital Assistant utilise ces informations pour créer une entité d'interrogation pour chaque table importée (modèle logique). Les entités d'interrogation contiennent des attributs qui modélisent les colonnes de la table.

Si une table du modèle physique comporte une clé étrangère, l'entité d'interrogation comporte un attribut qui est lié à l'entité d'interrogation connexe. Par exemple, si une table Emp a une clé étrangère pour la table Dept, l'entité d'interrogation Emp a un attribut dept, qui est lié à l'entité Dept.

Dès que vous créez les entités d'interrogation et identifiez leurs clés primaires, vous pouvez entraîner la compétence et elle est prête à être utilisée de manière rudimentaire. Autrement dit, vous pouvez utiliser des énoncés à structure libre, mais pour l'instant, l'interrogation doit utiliser les noms primaires d'entité et d'attribut exacts, qui sont initialement dérivés des noms du modèle physique (les noms canoniques). Cela changera au fur et à mesure que vous améliorerez le modèle logique pour refléter plus étroitement le langage naturel.

Pour permettre aux utilisateurs finaux d'utiliser le langage naturel pour poser des questions sur les données, vous mappez la terminologie de l'utilisateur final au modèle physique en modifiant les noms principaux et en ajoutant des synonymes pour les entités d'interrogation et leurs attributs. Par exemple, vous pouvez remplacer le nom principal de la table Emp par "employé" et ajouter le synonyme "membre du personnel". L'ajout de noms principaux et de synonymes est l'une des deux façons dont vous entraînez l'analyseur de langage naturel (TLN) pour résoudre les énoncés en interrogations Oracle signifiant langage d'interrogation de représentation (OMRQL). Les interrogations OMRQL sont semblables à des interrogations SQL, mais sont basées sur les noms canoniques des modèles d'objet (les entités d'interrogation). Par exemple, si vous remplacez le nom principal de empno par "numéro d'employé", alors "qu'est-ce que le numéro d'employé de Joe Smith" se résout en SELECT empno FROM emp WHERE ename = "Joe Smith".

Pour améliorer encore la résolution du processeur de langage naturel (TLN), vous pouvez également associer les attributs à des listes de valeurs, qui sont automatiquement alimentées à partir du service de données lors de la création.

Par exemple, supposons que vous importiez des tables Emp et Dept à partir d'un service de données, ce qui entraîne des entités d'interrogation Emp et Dept. Immédiatement après avoir importé les tables et entraîné la compétence, vous pouvez interroger les entités d'interrogation à l'aide d'énoncés comme suit :

Show all Emp in dept 10

Après avoir remplacé les noms principaux des entités et des attributs par des termes en langage naturel, tels que Employees pour l'entité et department pour l'attribut, vous pouvez utiliser des énoncés comme celui-ci :

Show all the employees in department 10

Vous pouvez ajouter des synonymes pour modéliser toutes les façons dont les personnes se réfèrent généralement à l'entité ou à l'attribut. Par exemple, vous pouvez ajouter les synonymes district et territory pour department afin que le TLN reconnaisse cet énoncé :

Show all employees in district 10

Avec des énoncés plus complexes, vous pouvez enseigner à la compétence comment résoudre les interrogations à OMRQL en ajoutant des données d'entraînement personnalisées qui associent les énoncés à des énoncés OMRQL spécifiques.

Si votre compétence a des intentions pour gérer des cas d'utilisation non SQL ou est incluse dans un assistant numérique, vous voudrez ajouter des énoncés d'acheminement au jeu de données d'entités d'interrogation pour aider la compétence à différencier les énoncés liés SQL des énoncés non liés à SQL.

Lorsque la compétence produit un résultat d'interrogation, elle permet à l'utilisateur de donner des pouces vers le haut ou vers le bas pour indiquer si le résultat est correct. La page Insights (Données clés) affiche les nombres de pouce vers le haut (interrogations correctes) et de pouce vers le bas (interrogations incorrectes) afin que vous puissiez voir à quel point la compétence fonctionne bien.

Interrogations prises en charge

Le modèle de traitement du langage naturel des dialogues SQL prend en charge les interrogations qui se traduisent par les clauses SQL de base : SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY et LIMIT.

Une requête peut impliquer jusqu'à 3 entités différentes. Autrement dit, il peut avoir jusqu'à 2 jointures. Les interrogations impliquant 3 jointures peuvent être résolues pour corriger les résultats en fonction du cas d'utilisation. Pour 4 jointures ou plus, vous devez ajouter des données d'entraînement personnalisées pour vous assurer que la compétence donne les bons résultats.

Les dialogues SQL ne prennent pas en charge les interrogations plus complexes impliquant des sous-interrogations et des opérateurs SET (INTERSECT, UNION, EXCEPT et NONE). Il ne prend pas non plus en charge les requêtes non anglaises, les requêtes qui demandent une réponse oui ou non, les requêtes avec des pronoms et les requêtes de suivi. Pour en savoir plus sur ces limitations d'interrogation et sur d'autres dialogues SQL, voir Dépannage des interrogations SQL.

Pour certaines interrogations qui ne sont pas prises en charge, vous pouvez peut-être résoudre le problème en utilisant des vues de base de données ou en créant des attributs virtuels, comme décrit dans Ajouter un attribut personnalisé.

Le tableau ci-dessous décrit les types d'interrogation pris en charge par les dialogues SQL. Il utilise les valeurs de base de données suivantes :

Table des employés

employee_id nom rôle salaire department_id
1 Alex Smith Vice-président 500,000 1
2 Samyra Kent Associé aux ventes 60,000 1
3 Laticia Fan Associé aux ventes 80,000 1

Table de service

department_id nom emplacement
1 Ventes Dallas

Voici les types d'interrogation pris en charge par les dialogues SQL :

Catégorie Description Exemples
Afficher

Vous pouvez demander une entité, des attributs et des agrégations d'attributs.

Les agrégations prises en charge sont avg, sum, min, max, count(attribute), count(column), count(distinct attribute).

Si l'interrogation ne nomme aucun attribut, la compétence affiche ceux listés pour Attributs par défaut dans l'onglet Présentation de l'entité.

  • afficher tous les employés
  • nom, salaire et nom de service des employés
  • Quels sont les emplois uniques qu'un employé peut occuper?
  • combien d'employés
  • retourner le salaire le plus élevé de tous les employés
Filtres

Vous pouvez filtrer les rangées de la table par conditions sur des attributs spécifiques

Les attributs de texte peuvent être égaux à une valeur, contenir une valeur ou commencer ou se terminer par une valeur.

Vous pouvez utiliser différents comparateurs pour filtrer les colonnes numériques et de date/heure (=, <, <=, >, >=).

Vous utilisez AND et OR pour combiner plusieurs conditions.

  • afficher les noms des employés dont le titre d'emploi est commis
  • retourner le salaire de tous les commis
  • employés dont le nom commence par Jo
  • Voir les employés qui ont rejoint le groupe en 2020 et gagnent plus de 7000
Filtre avec dates

Lorsque vous filtrez par attribut date ou date-heure, tenez compte des points suivants :

  • Pour les attributs date et heure, les valeurs doivent contenir des dates et des heures (10 décembre 2020 à 3 heures).
  • Les valeurs peuvent être absolues (10 décembre 2020) ou relatives (aujourd'hui).
  • Le filtre peut être un intervalle tel que "l'année dernière" ou "du 5 janvier au 5 juillet" et peut avoir des dates ou des dates avec des heures.
  • Utilisez le paramètre Préférence temporelle de l'attribut dans l'onglet Informations générales pour définir si les valeurs ambiguës, telles que "Mercredi", doivent correspondre par défaut à la date la plus proche, passée ou future.
  • Les valeurs de durée qui doivent être contraintes en dates, telles que "2 jours", sont prises en charge.
  • Exemple absolu : qui étaient les employés embauchés le 10 décembre 2020
  • Exemple d'intervalle relatif : qui étaient les employés embauchés l'année dernière
  • Exemple de date relative : qui étaient les employés embauchés aujourd'hui
  • Exemple date + heure : colis livrés hier à 6 h
  • Exemple de date + intervalle de temps : Paquets livrés entre le 5 janvier 7 h et le 5 février 10 h
  • Exemple de date ambiguë : qui étaient les employés embauchés mercredi
  • Exemple de durée : employés embauchés depuis 1 mois
Tri et limitation du nombre de lignes Vous pouvez demander explicitement à la compétence de trier les rangées résultantes en fonction d'un attribut particulier. Vous pouvez également demander un certain nombre des valeurs les plus élevées ou les plus faibles d'un attribut ou d'une entité.
  • afficher les employés triés par nom de service
  • employés classés par nom de Z à A
  • retourner le nom et le salaire de tous les employés par ordre décroissant de salaire
  • Quels sont les 10 salaires les plus élevés de tous les employés
  • quel employé a le salaire le plus bas
  • afficher les 5 meilleurs employés
Groupement par Vous pouvez demander différents agrégats après le regroupement par un attribut ou une entité.
  • le salaire moyen de chaque emploi
  • Quel est le salaire le plus élevé par département?
  • afficher le nom, l'emplacement et le nombre d'employés par service
Regrouper par et filtrer Vous pouvez filtrer les attributs ou les entités en fonction des agrégations.
  • afficher tous les emplois dont le salaire moyen est supérieur à 3000
  • départements dont le salaire minimum est de 4000
  • Quels départements ont au moins 20 employés?
Regrouper par et trier avec limite facultative Vous pouvez trier les attributs ou les entités en fonction des agrégations, et éventuellement demander à voir un certain nombre de lignes supérieures ou inférieures.
  • afficher tous les emplois triés selon le salaire le plus élevé versé aux employés de cet emploi
  • Quel service a le salaire moyen le plus bas?
  • afficher le nom des services ayant les 3 effectifs les plus élevés

Tutoriel : Introduction aux dialogues SQL

Vous pouvez obtenir un aperçu pratique des dialogues SQL en suivant ce tutoriel :

Introduction aux boîtes de dialogue SQL.

Flux de travail des dialogues SQL

La façon dont vous créez une compétence de dialogue SQL diffère des compétences habituelles. Voici les principales étapes pour créer une compétence de dialogue SQL et l'entraîner afin que les utilisateurs puissent utiliser le langage naturel pour interroger les services de données.

Les participants aux étapes suivantes sont le développeur de compétences, l'administrateur de service, l'expert en base de données et le formateur en intelligence artificielle.

  • Le développeur de compétence collecte les exigences de compétence (personnes d'utilisateur, cas d'utilisation et tâches) et le corpus d'entraînement (exemples d'énoncés d'utilisateur) et crée la compétence. Le développeur aide également à définir comment les résultats sont affichés. Cette personne est parfois appelée concepteur de conversation.

  • L'administrateur de service ajoute une connexion au service de données.

  • L'expert en base de données analyse les exigences de compétence et le corpus d'entraînement pour identifier les tables et les attributs qui fournissent les réponses. L'expert crée ensuite le modèle logique de base en important les informations du modèle physique dans la compétence. L'expert aide également le développeur de compétences et le formateur de l'IA à effectuer des tâches telles que l'ajout d'attributs basés sur des expressions SQL, l'association d'attributs à des listes de valeurs chargées à partir de tables, l'association d'attributs à des expressions régulières et l'exécution d'un entraînement personnalisé.

  • Le formateur IA ajoute des noms principaux et des synonymes pour enseigner à l'analyseur de langage naturel comment comprendre les énoncés en langage naturel. Pour les énoncés que la compétence ne peut pas traduire dans OMRQL, le formateur AI ajoute une formation personnalisée pour enseigner à l'analyseur de langage naturel comment comprendre ces énoncés. Le formateur surveille et teste continuellement la compétence pour augmenter la précision de la traduction du langage naturel en requêtes de base de données.

Pour illustrer le flux de travail, nous utiliserons un exemple de service de données des comptes fournisseurs avec les tableaux suivants. Pour plus de brièveté, nous montrons simplement les colonnes mentionnées dans ce sujet.

Table Colonnes
factures
  • invoice_num
  • invoice_date
  • pmt_status_flag
  • invoice_amount
  • fournisseur
payment_schedules
  • invoice_num
  • due_date
  • amount_remaining
fournisseurs
  • vendor_num
  • vendor_name
  1. Define the Requirements (Définir les exigences) : Le développeur de la compétence collecte les cas d'utilisation et les tâches que la compétence de dialogue SQL doit prendre en charge. Par exemple, un service des comptes fournisseurs peut avoir ce cas d'utilisation :

    • Cas d'utilisation : Payez toutes les factures dont les soldes impayés sont échus dans les 30 jours afin d'éviter les pénalités.

      • Tâche : Recherchez toutes les factures non approuvées arrivant à échéance dans les 30 jours afin que nous puissions les approuver à temps.

      • Tâche : Recherchez toutes les factures approuvées en attente arrivant à échéance dans les 30 jours afin que nous puissions les programmer le paiement à temps.

    Dans le cadre de cette phase d'exigences, le développeur de compétences compile une liste représentative des différentes façons dont les gens demandent ces informations. Cette liste sert d'exemple d'énoncés que le formateur de l'IA utilise pour le corpus d'entraînement.

  2. Configurer la compétence : L'administrateur du service, le développeur de la compétence et l'expert de la base de données travaillent ensemble pour configurer la compétence de base.

    1. Intégrer au service : L'administrateur de service crée une connexion d'Oracle Digital Assistant au service de données. Voir Se connecter au service de données.

    2. Créer la compétence de dialogue SQL : Le développeur de compétence crée la compétence de dialogue SQL, en s'assurant que le mode de dialogue est réglé à Visuel dans la boîte de dialogue Créer une compétence. Voir Créer la compétence de dialogue SQL.

    3. Importer le schéma : L'expert de la base de données identifie les tables et les champs nécessaires pour prendre en charge les cas d'utilisation, puis, à partir de la page Entités de la compétence, les importe à partir du service de données, comme décrit dans Créer des entités d'interrogation pour modéliser le service de données. Cela crée un modèle logique de base qui contient une entité d'interrogation pour chaque table importée.

      Dans notre exemple, l'expert de la base de données importe les tables invoices, payment_schedules et vendors.

      À ce stade, la compétence est prête à être utilisée avec des fonctionnalités limitées. Pour le modèle logique de base, les noms d'entité et d'attribut sont dérivés des noms de table et de champ du modèle physique. Par exemple, si le nom de la table est payment_schedules, le nom principal est payment schedules. Le formateur de l'IA peut tester les interrogations à partir de la page Entités ou utiliser le testeur de conversation (Aperçu) pour essayer la fonctionnalité SQL.

      Dans notre exemple de service de données, ils peuvent utiliser des énoncés de test tels que "Afficher les factures avec l'indicateur Statut de paiement N", "Afficher la facture numéro 17445" ou "Afficher les calendriers de paiement avec une date d'échéance antérieure à 2022-08-30".

  3. Formation : Ajoutez des données d'entraînement au moyen de noms principaux, de synonymes, de listes de valeurs, d'expressions rationnelles et d'interrogations en langage naturel mappées à OMRQL.

    1. Add Natural Language Terminology (Ajouter une terminologie en langage naturel) : Pour aider à associer des expressions en langage naturel à la structure de données sous-jacente, le formateur IA enseigne à la compétence les différentes façons dont les utilisateurs finaux font référence aux entités et aux attributs. C'est-à-dire les noms que les gens utiliseront dans leurs énoncés en langage naturel. L'entraîneur commence par analyser les expressions collectées par le développeur de la compétence pour identifier les énoncés que la compétence doit gérer (le corpus d'entraînement). En outre, ils peuvent consulter un thésaurus pour les synonymes et source de foule pour un phrasé similaire. Ensuite, le formateur AI enregistre les termes équivalents en modifiant les noms principaux et en ajoutant des synonymes. Voir Fournir des données d'entraînement au moyen de noms et de synonymes.

      Dans notre exemple, l'un des énoncés recueillis au cours de la phase des exigences est "Donnez-moi la liste des factures dont le solde impayé est supérieur à zéro". L'attribut qui contient le solde est amount remaining. Le formateur AI ajoute donc le synonyme outstanding balance à cet attribut.

    2. Associer à des listes de valeurs : Pour améliorer l'exactitude, le formateur IA peut, le cas échéant, créer des listes de valeurs contenant des exemples de valeurs à partir du service de données. La compétence associe automatiquement les listes à leurs attributs respectifs, ce qui aide l'analyseur de langage naturel à comprendre les types de valeur que ces attributs peuvent contenir. Voir Fournir des données de formation au moyen de listes de valeurs.

      Dans notre exemple, ils associent l'attribut vendor_name à une liste de valeurs extraite du service de données. Si la liste de valeurs comprend "Seven Corporation" et qu'un utilisateur demande "Afficher indicateur sommaire pour Seven Corporation", le TLN déduira que Seven Corporation est un nom de fournisseur.

    3. Associer à des expressions rationnelles : Lorsque les valeurs d'un attribut doivent correspondre à un modèle spécifique, le formateur IA peut créer une entité d'expression rationnelle et l'associer à cet attribut. Voir Fournir des données d'entraînement au moyen d'expressions rationnelles.

      Par exemple, le formateur AI peut associer un attribut ip_address à l'expression rationnelle (\\d{1,2}|(0|1)\\d{2}|2[0-4]\\d|25[0-5]).

    4. Mapper les interrogations complexes : Dans les cas où la compétence ne peut pas traduire un énoncé valide en OMRQL, le entraîneur IA ajoute cet énoncé aux données d'entraînement et le mappe à OMRQL, comme décrit dans Fournir des données d'entraînement au moyen d'énoncés. Par exemple, vous pouvez mapper "Afficher les factures impayées" à SELECT * payment_schedules WHERE payment_status_flag = 'Y'.

    5. Fournir des suggestions de remplissage automatique : Pour aider les utilisateurs à savoir à quoi le modèle logique peut répondre, ajoutez des exemples d'énoncés comme décrit sous Fournir des suggestions d'interrogation pour les utilisateurs de dialogues SQL.

    6. Fournir des données de routage : Si votre compétence de dialogue SQL a des intentions ou si elle se trouve dans un assistant numérique, vous devrez ajouter des énoncés pour aider la compétence à distinguer les interrogations de base de données. Voir Énoncés de routage vers la conversation de dialogues SQL.

    7. Entraîner le modèle de TLN : Pour incorporer des données d'entraînement dans le modèle de TLN, le développeur de compétence ou le formateur IA clique sur l'icône Entraîner et sur Soumettre.

  4. Configurer l'affichage des informations : L'expert de la base de données et le développeur de compétence travaillent ensemble pour affiner l'affichage des résultats de chaque entité, comme décrit dans Configurer la présentation des entités et des attributs. Par exemple, ils peuvent définir l'ordre de tri par défaut d'une entité, s'afficher sous forme de formulaire ou de table, définir les attributs minimum à inclure dans la sortie, ajouter des boutons et des liens aux résultats et ajouter des attributs qui affichent des données dérivées ou calculées.

    Dans notre exemple, ils peuvent régler à la fois l'ordre de tri par défaut et les attributs minimum de l'entité de facture à invoice_num, et régler les attributs par défaut à invoice_num, invoice_date, pmt_status_flag et invoice_amount. Ils peuvent également ajouter un attribut age calculé à l'aide de la différence entre la date du jour et la date de la facture.

  5. Configurer les règles d'interrogation : L'expert en base de données et le entraîneur IA travaillent ensemble pour définir les règles d'interrogation, par exemple quand utiliser une correspondance partielle et quel attribut utiliser pour mesurer lorsque quelqu'un demande de comparer des rangées sans spécifier d'attribut à comparer. Voir Définir les règles d'interrogation.

    Dans notre exemple, ils anticipent que les utilisateurs finaux demandent les 10 paiements les plus importants à effectuer, de sorte qu'ils configureront l'entité payment schedules pour utiliser due_date pour les comparaisons, et ils inverseront les comparaisons pour cet attribut afin que les dates antérieures soient supérieures aux dates ultérieures.

  6. Tester et réparer : Le entraîneur IA utilise le testeur d'interrogation de la page Entités pour vérifier que les énoncés de test sont résolus en OMRQL souhaité et que la compétence peut traduire OMRQL en SQL exécutable. Lorsque le testeur d'interrogation ne peut pas traduire OMRQL en SQL, il demande des données d'entraînement. Dans de nombreux cas, vous pouvez résoudre ce problème en ajoutant l'énoncé aux données de formation et en l'associant à un énoncé OMRQL. Voir Test et réparation.

  7. Surveiller et améliorer : Une fois la compétence entrée dans la phase de test bêta et au-delà, le formateur IA, le développeur de compétences, le gestionnaire de projet et les parties prenantes peuvent surveiller en continu les tests par lots et les données clés pour voir le rendement de la compétence et identifier les domaines à améliorer. Voir Surveiller et améliorer.

Se connecter au service de données

Avant de pouvoir accéder à un service de données à partir d'une compétence de dialogue SQL, vous devez ajouter une intégration du service de données qui permet à Oracle Digital Assistant d'accéder au service de données. Vous n'avez besoin que d'une seule intégration par service de données.

Les intégrations ont été testées avec Oracle Database Cloud Service Enterprise Edition 12c et 19c Oracle Autonomous Transaction Processing et MySQL HeatWave Database Service avec MySQL version 8.

Note

Après avoir créé le service, vous ne pouvez pas le modifier. Si le mot de passe change, vous devrez supprimer et recréer l'intégration du service de données.

Service de données d'Oracle

Pour vous connecter à une base de données Oracle, procédez comme suit :

  1. Dans Digital Assistant, cliquez sur icône de menu côté pour ouvrir le menu latéral, sur Settings, sur Additional Services et sur l'onglet Data.

  2. Cliquez sur + Add Service.

  3. Dans la boîte de dialogue Nouveau service de données, fournissez les informations de base suivantes :

    Nom du champ Description
    Type de base de données Sélectionnez Oracle.
    Name (Nom) Nom unique pour le service.
    Description du service de données Description facultative de l'intégration du service de données, telle qu'une description de la base de données ou de l'objectif.
    User Name (Nom d'utilisateur) Demandez à l'administrateur de base de données le nom d'utilisateur et le mot de passe qui donnent accès aux tables dont les développeurs de compétences ont besoin pour créer les entités composites pour leur compétence de dialogue SQL, comme décrit dans Créer des entités d'interrogation pour modéliser le service de données.
    Password (Mot de passe) Mot de passe de l'utilisateur. Notez que pour l'intégration à Oracle Digital Assistant, un mot de passe doit comporter au moins 14 caractères et au plus 30 caractères, et doit contenir au moins un caractère majuscule, un caractère minuscule et un nombre. Il ne peut pas non plus commencer par un chiffre.
  4. Cliquez sur Continuer pour configurer l'authentification de l'utilisateur final si votre service de données est configuré pour l'accès basé sur le rôle. Voici une description des champs de cette page :

    Nom du champ Description
    L'authentification de l'utilisateur final est requise Sélectionnez cette option si votre service de données est configuré pour l'accès basé sur les rôles.
    Service d'authentification

    Sélectionnez les services d'authentification que vous avez configurés dans Paramètres > Services d'authentification.

    Identificateur de l'utilisateur final Sélectionnez le type d'identificateur d'utilisateur final.
    Expression personnalisée

    Si le type d'identificateur d'utilisateur final sélectionné est personnalisé, entrez une expression FreeMarker dans une variable de profil d'utilisateur qui représente l'identificateur d'utilisateur final.

    Voir Expressions pour les réclamations de profil OICD pour plus d'informations et des exemples.

  5. Cliquez sur Continuer pour ajouter les détails de la connexion.

  6. Dans la page Détails de la connexion, sélectionnez De base ou Connexion au portefeuille en nuage pour le type de connexion.

    • Pour les bases de données à noeud unique et les bases de données RAC, vous devez sélectionner De base.
    • Si vous êtes connecté à une base de données ATP, vous devez sélectionner Connexion au portefeuille en nuage.
  7. Si le type de connexion est De base, entrez les valeurs suivantes, que vous pouvez obtenir de l'administrateur de base de données :

    Nom du champ Description
    Utiliser TLS Déplacez ce commutateur à la position ON si vous souhaitez utiliser TLS (Transport Layer Security) pour sécuriser la connexion.
    Note

    Si vous utilisez un certificat d'autorité de certification privé pour vous connecter à la base de données, cette option doit être activée.
    Nom d'hôte

    Entrez l'hôte du service de données. Supprimez le préfixe https://. Par exemple : example.com.

    Port Port qui autorise les connexions de client à la base de données.
    Identificateur de service

    Effectuez l'une des actions suivantes :

    • Sélectionnez IDS et entrez l'identificateur de système Oracle de l'instance de base de données.

    • Sélectionnez Nom du service et entrez le nom du service pour la base de données.

    Point d'extrémité privé Cette option n'apparaît que si des points d'extrémité privés sont configurés dans votre instance Digital Assistant.

    Si vous êtes connecté à un point d'extrémité privé pour accéder au service, basculez le point d'extrémité privé vers la position ON, puis sélectionnez-le dans la liste des points d'extrémité privés associés à l'instance.

    (L'utilisation d'un point d'extrémité privé vous permet d'accéder à un service qui n'est pas accessible directement à partir de l'Internet public. Voir Point d'extrémité privé pour plus de détails.)

  8. Si le type de connexion est Connexion au portefeuille en nuage, entrez les valeurs suivantes, que vous pouvez obtenir de l'administrateur de base de données :

    Nom du champ Description
    Fichier de portefeuille Recherchez et sélectionnez le fichier de portefeuille en nuage qui contient les données d'identification du client ou glissez-déposez-le dans le champ.
    Mot de passe pour le portefeuille Entrez le mot de passe fourni lors du téléchargement du fichier de portefeuille. Notez que pour l'intégration d'Oracle Digital Assistant, un mot de passe de portefeuille doit comporter au moins 15 caractères et au plus 30 caractères et contenir au moins une majuscule, une minuscule, un caractère spécial et un nombre. Il ne peut pas non plus commencer par un chiffre.
    Service Sélectionnez le nom du service de base de données. Veillez à sélectionner un service dont la simultanéité d'accès aux services est suffisamment élevée pour que les interrogations ne prennent pas plus de 30 secondes (à quel moment elles expirent). Les noms de service avec les suffixes _tp et _tpurgent sont généralement les choix les plus appropriés ici. Pour en savoir plus sur ces considérations, voir Noms de service de base de données pour Autonomous Database et Concurrence de service.
    Point d'extrémité privé Cette option n'apparaît que si des points d'extrémité privés sont configurés dans votre instance Digital Assistant.

    Si vous êtes connecté à un point d'extrémité privé pour accéder au service, basculez le point d'extrémité privé vers la position ON, puis sélectionnez-le dans la liste des points d'extrémité privés associés à l'instance.

    (L'utilisation d'un point d'extrémité privé vous permet d'accéder à un service qui n'est pas accessible directement à partir de l'Internet public. Voir Point d'extrémité privé pour plus de détails.)

  9. Dans la page Propriétés avancées, si vous avez besoin d'un certificat d'autorité de certification privé pour vous connecter à la base de données, basculez l'option Utiliser la confiance privée vers la position ON et remplissez les autres champs obligatoires.
    Nom du champ Description
    Utiliser la fiducie privée Si vous utilisez un certificat d'autorité de certification privé pour vous connecter à la base de données, basculez vers la position ON. Ce commutateur n'est activé que si vous avez sélectionné Utiliser TLS dans la page Détails de la connexion.
    Ressource de certificat Sélectionnez Autogéré.
    Sélectionner un fichier PEM et Coller le texte PEM Sélectionnez l'une de ces options pour fournir le certificat.
  10. Cliquez sur Ajouter un service.

    Vous pouvez maintenant importer le schéma de base de données dans une compétence pour créer des entités d'interrogation, ce qui permet aux utilisateurs d'interroger la base de données à l'aide du langage naturel.

Expressions pour les réclamations de profil OICD

Si vous disposez d'une connexion à un service de données avec un accès basé sur le rôle et que vous avez sélectionné Personnalisé comme type d'identificateur d'utilisateur, vous devez fournir une expression FreeMarker à une variable de profil d'utilisateur qui représente l'identificateur d'utilisateur final, en tant que revendication OpenID Connect (OIDC) standard ou personnalisée. Voici quelques exemples :

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

Pour plus d'informations sur le fonctionnement des réclamations de profil dans OIDC et pour des exemples de réclamations, consultez les ressources suivantes :

MySQL Service de données

  1. Dans Digital Assistant, cliquez sur icône de menu côté pour ouvrir le menu latéral, sur Settings, sur Additional Services et sur l'onglet Data.

  2. Cliquez sur + Add Service.

  3. Dans la boîte de dialogue Nouveau service de données, fournissez les informations de base suivantes :

    Nom du champ Description
    Type de base de données Sélectionnez MySQL.
    Name (Nom) Nom unique pour le service.
    Description du service de données Description facultative de l'intégration du service de données, telle qu'une description de la base de données ou de l'objectif.
    Type d'authentification L'administrateur de la base de données vous indiquera si vous devez sélectionner Par défaut, Kerberos ou Système d'exploitation.
    User Name (Nom d'utilisateur) Demandez à l'administrateur de base de données le nom d'utilisateur et le mot de passe qui donnent accès aux tables dont les développeurs de compétences ont besoin pour créer les entités composites pour leur compétence de dialogue SQL, comme décrit dans Créer des entités d'interrogation pour modéliser le service de données.
    Password (Mot de passe) Mot de passe de l'utilisateur. Notez que pour l'intégration à Oracle Digital Assistant, un mot de passe doit comporter au moins 14 caractères et au plus 30 caractères, et doit contenir au moins un caractère majuscule, un caractère minuscule et un nombre. Il ne peut pas non plus commencer par un chiffre.
  4. Cliquez sur Continuer pour configurer les détails de connexion répertoriés dans ce tableau :

    Nom du champ Description
    Utiliser TLS Déplacez ce commutateur à la position ON si vous souhaitez utiliser TLS (Transport Layer Security) pour sécuriser la connexion.
    Note

    Si vous utilisez un certificat d'autorité de certification privé pour vous connecter à la base de données, cette option doit être activée.
    Nom d'hôte

    Entrez l'hôte du service de données. Supprimez le préfixe https://. Par exemple : example.com.

    Port Port qui autorise les connexions de client à la base de données.
    Base de données

    Le nom de la base de données.

    Point d'extrémité privé Cette option n'apparaît que si des points d'extrémité privés sont configurés dans votre instance Digital Assistant.

    Si vous êtes connecté à un point d'extrémité privé pour accéder au service, basculez le point d'extrémité privé vers la position ON, puis sélectionnez-le dans la liste des points d'extrémité privés associés à l'instance.

    (L'utilisation d'un point d'extrémité privé vous permet d'accéder à un service qui n'est pas accessible directement à partir de l'Internet public. Voir Point d'extrémité privé pour plus de détails.)

  5. Dans la page Propriétés avancées, si vous avez besoin d'un certificat d'autorité de certification privé pour vous connecter à la base de données, basculez l'option Utiliser la confiance privée vers la position ON et remplissez les autres champs obligatoires.
    Nom du champ Description
    Utiliser la fiducie privée Si vous utilisez un certificat d'autorité de certification privé pour vous connecter à la base de données, basculez vers la position ON. Ce commutateur n'est activé que si vous avez sélectionné Utiliser TLS dans la page Détails de la connexion.
    Ressource de certificat Sélectionnez Autogéré.
    Sélectionner un fichier PEM et Coller le texte PEM Sélectionnez l'une de ces options pour fournir le certificat.
  6. Cliquez sur Ajouter un service.

    Vous pouvez maintenant importer le schéma de base de données dans une compétence pour créer des entités d'interrogation, ce qui permet aux utilisateurs d'interroger la base de données à l'aide du langage naturel.

Créer la compétence de dialogue SQL

Pour créer une compétence de dialogue SQL, il vous suffit de créer une compétence avec le mode de dialogue réglé à Visuel.

Créer des entités d'interrogation pour modéliser le service de données

Pour activer les interrogations de service de données dans une compétence de dialogue SQL, vous importez des informations sur le modèle physique d'un service de données (les tables ou les vues et leurs colonnes) pour créer un modèle logique de base. Lors de l'importation, la compétence ajoute des entités d'interrogation au modèle logique, où chaque entité d'interrogation représente une table physique.

Note

Une compétence ne peut pas avoir plus de 50 entités et attributs d'interrogation. Par exemple, vous pouvez avoir 5 entités d'interrogation combinées avec 45 attributs.

Lorsque vous entraînez votre compétence, elle utilise les informations des entités d'interrogation pour créer un modèle pour l'analyseur de langage naturel, ce qui permet à la compétence de traduire les énoncés d'utilisateur en OMRQL. OMRQL est un langage d'interrogation similaire à SQL, mais basé sur des modèles d'objet, qui, dans ce cas, sont les entités d'interrogation.

Avant de commencer, vous devez disposer des éléments suivants :

  • Une compétence qui a été créée à l'aide du mode Visuel.

  • Intégration du service de données pour la connexion au service de données, comme décrit sous Se connecter au service de données.

Pour créer des entités d'interrogation pour les tables voulues dans votre service de données :

  1. Dans la page Entités, cliquez sur Plus, puis sélectionnez Importer à partir du service de données.

    La boîte de dialogue Importer des entités d'interrogation s'affiche.

  2. Sélectionnez le service de données, puis sélectionnez les tables et les attributs à utiliser dans la compétence.

  3. Cliquez sur Importer.

    La compétence ajoute des entités d'interrogation pour les tables sélectionnées. Il définit les noms principaux d'entité et d'attribut en fonction des noms canoniques. Par exemple, si le nom canonique est "invoice_num", le nom principal sera "numéro de facture".

  4. Pour chaque entité d'interrogation ajoutée, sélectionnez l'entité, cliquez sur l'onglet Configuration et vérifiez que la clé primaire est définie dans la section Mappage dorsal.

À ce stade, vous pouvez tester les interrogations à l'aide des noms principaux des entités et des attributs, tels que "Afficher les factures dont le numéro de facture est 12345". Mais vous devez d'abord cliquer sur icône de train avec badge, puis, une fois l'opération terminée, vous pouvez cliquer sur Tester les interrogations pour essayer des énoncés, ou cliquer sur Prévisualiser pour les tester dans le testeur de conversation.

Comme vous utilisez une compétence de boîte de dialogue SQL minimale, vous pouvez effectuer l'entraînement avec Ht du formateur ou Tm du formateur. Cependant, après avoir ajouté des suggestions de saisie semi-automatique, des données d'acheminement et des données d'entraînement personnalisées, Trainer Tm produit des résultats plus précis.

L'étape suivante consiste à enseigner à la compétence comment les utilisateurs finaux se réfèrent aux entités et aux attributs. Voir Entraîner la compétence à convertir des énoncés en langage naturel en SQL.

Entraîner la compétence à convertir des énoncés en langage naturel en SQL

En tant qu'entraîneur d'IA, votre travail consiste à permettre à l'analyseur de langage naturel de traduire des énoncés en langage naturel tels que " combien de factures ont une date d'échéance antérieure au 12/15/22 " dans une interrogation OMRQL pour extraire la réponse de la source de données sous-jacente (le modèle physique). Pour ce faire, vous créez un modèle logique intuitif des données qui reflète de près le langage naturel.

Une fois le modèle logique créé par importation à partir de la source de données, vous utilisez des noms principaux, des synonymes, des listes de valeurs et des énoncés pour aider l'analyseur de langage naturel de la compétence à associer des expressions de langage naturel aux tables et aux colonnes du modèle physique.

  • Pour enseigner à la compétence les différentes façons dont les personnes font référence aux objets, vous ajoutez des noms et des synonymes principaux, comme décrit dans Fournir des données d'entraînement au moyen de noms et de synonymes. Par exemple, vous pouvez enseigner à la compétence que les gens utilisent "numéro de facture" pour faire référence à la colonne invoice_num, et vous pouvez également ajouter "numéro de facture" et "numéro de référence" comme synonymes.

  • Pour aider la compétence à identifier les valeurs d'attribut dans un énoncé, vous créez des exemples de listes de valeurs et les associez à des attributs, comme décrit dans Fournir des données d'entraînement au moyen de listes de valeurs. Par exemple, vous pouvez créer une liste de valeurs contenant les statuts de paiement réels et l'associer à l'attribut payment status de la facture.

  • Pour aider la compétence à identifier les valeurs d'attribut en fonction de modèles, vous créez des entités d'expression rationnelle et vous les associez à des attributs, comme décrit dans Fournir des données d'entraînement au moyen d'expressions rationnelles. Par exemple, vous pouvez créer une entité d'expression rationnelle avec l'expression (\\d{1, 2}|(0|1)\\d{2}|2[0-4]\\d|25[0-5]) et l'associer à l'attribut ip_address.

  • Lorsque la compétence ne parvient pas à traduire correctement un énoncé dans OMRQL, vous pouvez ajouter un mappage d'énoncé à OMRQL au jeu de données d'entité d'interrogation, comme décrit sous Fournir des données d'entraînement au moyen d'énoncés et Tester et réparer. Vous pouvez également ajouter des énoncés pour aider la compétence à savoir quand acheminer un énoncé vers le flux qui le traite en tant qu'exécution SQL (c'est-à-dire qu'il se traduit par OMRQL, puis envoie une interrogation SQL à la source de données).

Fournir des données de formation au moyen de noms et de synonymes

Pour aider une compétence de dialogue SQL à associer des expressions en langage naturel à la structure de données sous-jacente (modèle physique), commencez par prendre les énoncés identifiés que la compétence doit gérer (le corpus d'entraînement) et analysez-les pour découvrir les différentes façons dont les utilisateurs finaux font référence aux entités et aux attributs.

Par exemple, supposons que vous ayez ces énoncés dans votre corpus d'entraînement :

  • Afficher les factures dont les soldes impayés sont supérieurs à zéro.

  • Quel est le montant dû pour la référence 12656?

Ici, vous voyez que les personnes utilisent "solde impayé" et "montant dû" pour se référer à la colonne amount_remaining. Vous voyez également que "référence" est une façon dont les gens se réfèrent à invoice_num.

En plus du corpus d'entraînement, vous pouvez également rechercher des énoncés provenant des utilisateurs cibles afin d'obtenir plus d'expressions et de les analyser.

Après avoir compilé votre liste des façons dont les gens se réfèrent aux entités et aux attributs, choisissez le terme que vous souhaitez utiliser pour le nom principal de chaque entité et attribut. Ils doivent être des noms qui sont les plus proches des usages les plus courants. Lorsque vous choisissez le nom, considérez que le modèle de TLN prêt à l'emploi ne comprendra probablement pas les relations propres au domaine. Par exemple, il ne comprend pas automatiquement que le numéro de facture et la référence font référence à la même chose. Comme le numéro de facture est couramment utilisé et est également le plus proche d'autres termes couramment utilisés, tels que numéro de facture et numéro de facture, vous en feriez le nom principal.

Traitez le reste des termes comme des synonymes. Dans l'exemple ci-dessus, vous ajouteriez une référence, un numéro de facture et un numéro de facture à la liste des synonymes.

Notez que le nom principal est la valeur par défaut pour les en-têtes et les étiquettes de colonne de résultats, mais vous pouvez le modifier dans l'onglet Présentation.

À l'aide de votre liste, vous créez les données d'entraînement dans la page Entités.

  • Pour définir le nom principal et les synonymes de l'entité, ouvrez l'onglet Configuration de l'entité et développez Langage naturel.

  • Pour définir le nom principal et les synonymes de l'attribut, ouvrez l'onglet Langue naturelle de l'attribut.

Note

Lors du traitement des énoncés, l'analyseur de langage naturel ne tient pas compte des noms canoniques du modèle physique, c'est-à-dire qu'il ne tient pas compte des noms de table et de colonne. Il utilise uniquement les mappings en langage naturel que vous définissez à l'aide de noms et de synonymes (le modèle logique).

Fournir des données de formation au moyen de listes de valeurs

Vous pouvez améliorer l'exactitude de l'analyseur en langage naturel en associant des attributs à des listes de valeurs ou à des entités dynamiques. Cela permet à l'analyseur d'identifier un attribut en fonction de ses valeurs connues. Vous utilisez Entité référencée dans l'onglet Informations générales de l'attribut pour associer l'attribut aux valeurs de l'entité de référence. Pour les entités de liste de valeurs, vous pouvez créer automatiquement l'entité, importer les valeurs du service de données et l'associer en tant qu'entité référencée en une seule étape.

Lorsque vous décidez d'utiliser une liste de valeurs ou une entité dynamique pour stocker les valeurs, déterminez si l'entité est ouverte ou fermée.

  • Une liste ouverte est une liste infinie ou dynamique (ou les deux). Pour les listes ouvertes, envisagez de créer et de tenir à jour une entité dynamique au lieu d'une liste de valeurs. Si vous choisissez d'utiliser une liste de valeurs, vous devez organiser la liste pour vous assurer qu'elle contient au moins les valeurs les plus couramment utilisées. Par exemple, pour une liste de fournisseurs qui croît probablement au fil du temps, vous voudrez que la liste inclue vos fournisseurs les plus fréquemment utilisés. En effet, les interrogations sur un fournisseur sans utiliser le mot "fournisseur", telles que "afficher l'indicateur de sommaire pour Seven Corporation", ne correspondront pas si cette valeur ne figure pas dans la liste de valeurs. Vous augmentez ainsi la fréquence des résolutions correctes en incluant au moins les valeurs les plus fréquemment utilisées.

  • Une liste fermée est une liste statique limitée. Elles sont idéales pour les entités de liste de valeurs.

Pour les listes de valeurs et les entités dynamiques, ajoutez des versions singulières et plurielles (le cas échéant) de synonymes pour chaque valeur d'entité afin d'indiquer la façon dont les utilisateurs finaux feront référence à la valeur.

Les synonymes sont particulièrement importants lorsque la liste contient des valeurs que les utilisateurs finaux n'utilisent généralement pas. Prenez, par exemple, cette liste de statuts de paiement valides. Les utilisateurs seront beaucoup plus susceptibles d'utiliser des mots comme payés, non payés et partiellement payés que d'utiliser Y, N et P. L'ajout de ces mots comme synonymes permet de s'assurer que le TLN reconnaît que les utilisateurs font référence à l'attribut de statut de paiement.

Valeurs de statut de paiement Synonymes
Y payé
N non payé, non payé
P partiel, partiellement payé, non payé

Lorsqu'un terme décrit plusieurs valeurs d'entité, ajoutez ce terme en tant que synonyme à chacune d'elles. Par exemple, N et P indiquent que la facture n'est pas payée. Si vous ajoutez "non payé" comme synonyme pour les deux statuts, "Afficher les factures non payées" extrait les factures avec une valeur payment_status de N ou P.

Pour les entités dynamiques, vous créez l'entité, puis utilisez Entité référencée dans l'onglet Informations générales de l'attribut pour associer l'attribut à la liste.

Pour les listes de valeurs, vous pouvez créer une liste de valeurs à partir du service de données et l'associer à une entité en suivant les étapes suivantes :

  1. Dans la page Entités, modifiez l'attribut et allez à l'onglet Informations générales.

  2. Sélectionnez Entité dans la liste déroulante Type.

  3. Cliquez sur Si l'entité souhaitée n'existe pas, vous pouvez générer une entité de liste de valeurs en fonction du mappage en arrière-plan en cliquant ici. La liste de valeurs est créée et alimentée à partir du service de données, et l'entité référencée pointe vers la nouvelle liste de valeurs.

  4. (Facultatif) Pour augmenter les chances que l'entrée de l'utilisateur corresponde à une valeur de la liste, ouvrez l'entité de liste de valeurs et activez Correspondance floue. Sinon, il utilise une correspondance stricte, ce qui signifie que l'entrée utilisateur doit correspondre exactement aux valeurs et aux synonymes. Par exemple, "voitures" ne correspondra pas à "voiture".

    La mise en correspondance floue utilise l'ajustement de mot pour identifier les attributs de l'interrogation. Par exemple, " livre " correspond à " livres ", " blocage " correspond à " en attente ", " approbation requise " correspond à " approbation requise " et " location " correspond à " location ".

    Notez que la mise en correspondance floue ne fonctionne pas pour "_" et "?". En outre, la mise en correspondance partielle ne fonctionne pas. Par exemple, "Seven" ne correspond pas à "Seven Corporation". Si vous devez activer la mise en correspondance pour de telles chaînes, ajoutez-les à la liste des synonymes.

  5. Cliquez sur Appliquer pour enregistrer vos modifications.

Note

Si une valeur de la table physique du service de données se termine par un point, un point d'interrogation ou des espaces, ces caractères ne sont pas inclus dans la liste de valeurs car ils ne sont pas autorisés pour les noms canoniques.

Fournir des données de formation au moyen d'expressions régulières

Si les valeurs d'un attribut doivent correspondre à un certain modèle, vous pouvez aider l'analyseur de langage naturel à identifier les valeurs de cet attribut en l'associant à une entité d'expression rationnelle.

Cela peut être utile lorsque toutes les valeurs doivent suivre un modèle spécifique et que le jeu de valeurs valides est trop volumineux pour une liste de valeurs ou infini. Par exemple, pour un attribut ip_address, vous pouvez l'associer à une entité d'expression rationnelle nommée IpAddress, qui a l'expression rationnelle (\\d{1,2}|(0|1)\\d{2}|2[0-4]\\d|25[0-5]).

Notez que, comme les listes de valeurs, si plusieurs attributs du modèle peuvent être associés à la même expression rationnelle, les utilisateurs devront fournir un contexte suffisant dans leur interrogation pour distinguer les deux (ou plusieurs) attributs.

Pour associer un attribut à une expression rationnelle :

  1. Dans la page Entités, cliquez sur + Ajouter une entité, sélectionnez Expression rationnelle dans la liste déroulante Type, entrez l'expression rationnelle et cliquez sur Créer.

    Assurez-vous de créer l'expression rationnelle de manière à empêcher l'analyseur de langage naturel d'associer des valeurs non liées à l'attribut.

  2. Sélectionnez l'entité avec l'attribut à associer à l'expression rationnelle, modifiez l'attribut et allez à l'onglet Informations générales.

  3. Sélectionnez Entité dans la liste déroulante Type.

  4. Dans la liste déroulante Entité référencée, sélectionnez l'entité de l'expression rationnelle.

  5. Cliquez sur Appliquer pour enregistrer vos modifications.

Fournir des données de formation au moyen d'énoncés

En tant qu'entraîneur de l'IA, vous rencontrerez des énoncés de langues naturelles que la compétence ne peut pas traduire en OMRQL. Par exemple, le modèle peut ne pas être en mesure de gérer des synonymes propres au domaine qui ne semblent pas être étroitement liés au nom principal. Un autre exemple est lorsque le modèle n'est pas en mesure de distinguer deux entités similaires. Lorsque cela se produit, vous pouvez utiliser les données d'entraînement pour enseigner à la compétence comment analyser correctement l'énoncé dans OMRQL.

L'ajout aux données d'entraînement est souvent appelé entraînement personnalisé. Vous utilisez un entraînement personnalisé pour apprendre au modèle à associer des mots et des expressions à des attributs, des entités et des mots clés OMRQL dans le contexte d'un énoncé complet en mappant l'énoncé à OMRQL.

Pour chaque scénario que vous corrigez, commencez par 20 énoncés et ajoutez-en d'autres au besoin. Étant donné que trop d'exemples peuvent entraîner une prédiction excessive des attributs et des opérateurs, vous devez vous concentrer sur un plus petit ensemble d'énoncés divers plutôt que sur un grand ensemble d'énoncés similaires de moindre qualité. Notez qu'il y a une limite de 120 énoncés par compétence.

Toutes les valeurs de l'instruction OMRQL doivent correspondre exactement à la valeur et au format de la base de données. Prenons, par exemple, l'énoncé "qui est l'employé dont le nom est Jones". Si les valeurs de la base de données pour l'attribut de nom sont toutes des lettres majuscules, la valeur du nom doit également être toutes les lettres majuscules. Il s'agit de "SELECT * FROM Emp WHERE name = 'JONES'".

Lorsque l'énoncé que vous mappez utilise un synonyme pour la valeur réelle de la base de données, ce synonyme doit être défini pour la valeur d'une liste de valeurs et OMRQL doit utiliser la valeur réelle de la base de données. Par exemple, si l'énoncé est "Afficher le service dont l'emplacement est la grande pomme", alors "grande pomme" doit être défini dans la liste de valeurs dept_loc comme synonyme de la valeur "NEW YORK", et l'OMRQL doit être "SELECT * FROM Dept WHERE loc = 'NEW YORK'".

Vous pouvez ajouter des énoncés qui contiennent des dates absolues, telles que "factures échues le 5 janvier 2022", mais n'utilisez pas d'énoncés avec des dates relatives ou des dates sans année. Par exemple, si l'énoncé est "Factures échues aujourd'hui", la date d'aujourd'hui sera figée dans le code OMRQL en tant que SELECT * FROM invoice WHERE due_date = '2022-01-01'. En outre, si vous utilisez une date relative telle que "aujourd'hui", vous pouvez obtenir une erreur indiquant que les dates relatives ne sont pas prises en charge.

Voici quelques meilleures pratiques pour les énoncés d'entraînement personnalisés :

  • Équilibrer le nombre d'énoncés : Certains scénarios plus complexes peuvent avoir besoin de plus d'énoncés que les scénarios simples, mais essayez d'équilibrer le nombre d'énoncés par scénario.

  • Équilibrer l'entraînement d'attributs et d'entités similaires : Si vous avez deux attributs similaires et que vous devez fournir des données d'entraînement personnalisées pour l'un d'entre eux, vous devez également fournir la même quantité de données d'entraînement pour l'autre. Lorsque les données d'entraînement se concentrent uniquement sur l'un des attributs similaires, le modèle peut surestimer cet attribut par rapport à sa contrepartie. Il en va de même pour les entités similaires. Par exemple, la devise du paiement et la devise de la facture sont des attributs similaires. Si la devise de paiement est surreprésentée dans les données d'entraînement, le modèle peut prédire la devise de paiement même lorsque l'énoncé demande la devise de la facture.

    Lorsque vous devez enseigner au modèle comment faire la distinction entre deux attributs similaires ou étroitement liés, équilibrez la pondération de l'importance en fournissant la moitié des énoncés pour un attribut et la moitié des énoncés pour l'autre.

    Variez les énoncés qui font référence à ces attributs similaires. Par exemple, voici des paires d'énoncés contrastantes pour aider le modèle à faire la distinction entre amount_remaining et amount_paid :

    • me dire le montant restant pour les factures approuvées
    • afficher le montant payé pour les factures approuvées
    • voir le montant à payer total au DAA du fournisseur
    • calculer le montant payé total au DAA du fournisseur
    • quel est le montant dû des factures au fournisseur AAD?
    • Répertorier le montant payé des factures au fournisseur AAD
  • Équilibrer l'entraînement des valeurs qui correspondent aux noms principaux ou aux synonymes : Supposons, par exemple, que votre modèle comporte un attribut manager et que "manager" est également une valeur pour l'attribut job de l'employé. Si vous souhaitez ajouter "Combien de gestionnaires" aux données d'entraînement, vous devez équilibrer ces données d'entraînement avec des énoncés qui utilisent l'attribut manager, tels que "Qui est le gestionnaire de l'employé Adam Smith", ainsi que des énoncés qui utilisent le gestionnaire job, tels que "Afficher tous les gestionnaires". De cette façon, le modèle peut apprendre à différencier les deux utilisations. Si vous n'incluez pas d'exemples pour les deux types d'utilisation, la compétence peut surestimer une utilisation par rapport à l'autre.

  • Diversify phrases (Diversifier les expressions) : Les meilleures pratiques en matière de formulation diverse pour les données personnalisées sont similaires à celles des énoncés d'intention :

    • Utilisez des phrases complètes.

    • Utilisez différents verbes. Par exemple : afficher, lister, afficher, indiquer et voir.

    • Utilisez divers synonymes et paraphrases en plus du nom de l'entité ou de l'attribut.

    • Utilisez différents pronoms. Par exemple : montrez-moi, pouvons-nous voir, dites-nous, je veux.

    • Variez la structure de la phrase. Par exemple, placez la valeur d'attribut près du début, du milieu et de la fin des phrases.

    • Si vous avez des énoncés avec une agrégation, telle que AVG, ajoutez également des énoncés avec d'autres opérateurs.

    • Si possible, utilisez différentes clauses, telles que les clauses group by et where avec les conditions AND et OR.

  • Diversifier les valeurs : Lorsque vous utilisez plus d'une valeur dans les énoncés de votre scénario, le modèle est mieux en mesure de reconnaître différentes valeurs. Inclure des valeurs avec des longueurs de mot différentes. Inclure certaines valeurs avec des caractères spéciaux tels que '/' et "-". Incluez quelques valeurs avec des mots clés spéciaux tels que 'and'.

  • Incluez une combinaison de valeurs connues et inconnues. Pour les attributs de liste de valeurs, utilisez un jeu représentatif de valeurs d'attribut (mais pas tous) pour entraîner que les correspondances de liste de valeurs sont des signaux importants. De plus, pour les listes de valeurs qui ne sont pas fermées, incluez des valeurs qui ne figurent pas dans la liste de valeurs pour lui apprendre à associer également des phrasages particuliers à l'attribut.

Pour ajouter un énoncé mappé aux données d'entraînement :

  1. Si le bouton Entraîner comporte une pastille rouge, cliquez sur icône de train avec badge et entraînez-vous à l'aide de Trainer Tm.

  2. Dans la page Entités, allez à l'onglet Jeu de données et cliquez sur Entités d'interrogation.

  3. Cliquez sur l'onglet Données d'entraînement.

  4. Cliquez sur Add Utterance (Ajouter une expression).

    La boîte de dialogue Créer une expression s'affiche.

  5. Entrez l'énoncé et cliquez sur Continue (Continuer).

    La boîte de dialogue affiche l'interrogation OMRQL pour l'énoncé. S'il ne peut pas traduire l'énoncé dans l'interrogation, l'interrogation sera vide.

    Notez que si la compétence n'a pas été entraînée, elle ne peut pas traduire l'énoncé en une interrogation OMRQL.

  6. Vérifiez l'interrogation et corrigez-la si elle est incorrecte.

    Pour obtenir des mots clés et des exemples OMRQL, voir Informations de référence sur OMRQL.

  7. Cliquez sur Terminé pour ajouter l'énoncé mappé aux données d'entraînement.

Fournir des suggestions d'interrogation pour les utilisateurs de la boîte de dialogue SQL

Vous pouvez aider les utilisateurs à connaître les interrogations de base de données qu'ils peuvent effectuer en fournissant des suggestions de saisie semi-automatique. Ces suggestions fournissent des conseils sur les types de questions auxquelles le modèle logique est capable de répondre. Les énoncés aident également la compétence à l'acheminement.

Pour créer des suggestions de saisie semi-automatique pour une compétence de dialogue SQL :

  1. Si le bouton Entraîner comporte un badge rouge, cliquez sur icône de train avec badge et entraînez-vous à l'aide de Trainer TM.

  2. Dans la page Entités, allez à l'onglet Jeu de données et cliquez sur Entités d'interrogation.

  3. Cliquez sur l'onglet Suggestions d'achèvement automatique.

  4. Cliquez sur Add Utterance (Ajouter une expression).

    La boîte de dialogue Créer une expression s'affiche.

  5. Entrez l'énoncé, cliquez à l'extérieur de la zone de texte, puis cliquez sur Continuer.

    La boîte de dialogue affiche l'interrogation OMRQL pour l'énoncé. S'il ne peut pas traduire l'énoncé en interrogation, l'interrogation sera vide.

    Notez que si la compétence n'a pas été entraînée, elle ne peut pas traduire l'énoncé en une interrogation OMRQL.

  6. Vérifiez l'interrogation et corrigez-la si elle est incorrecte.

    Pour obtenir des mots clés et des exemples OMRQL, voir Informations de référence sur OMRQL.

  7. Cliquez sur Terminé pour ajouter l'énoncé mappé aux suggestions de remplissage automatique.

Acheminer les énoncés dans la conversation des dialogues SQL

Si votre compétence comporte des intentions ou qu'elle se trouve dans un assistant numérique, comme pour les intentions, elle a besoin d'énoncés pour l'aider à acheminer les interrogations SQL vers la conversation des dialogues SQL. Le mécanisme d'acheminement utilise les suggestions de saisie semi-automatique, les données d'entraînement, les énoncés d'acheminement générés et les énoncés d'acheminement fabriqués à la main pour apprendre à reconnaître les interrogations SQL. Vous pouvez voir chaque type d'énoncé dans les onglets distincts de la page Jeu de données des entités d'interrogation.

Dans l'onglet Données de routage générées, vous pouvez générer rapidement 100 énoncés de routage basés sur le modèle logique, comme décrit dans Générer les données de routage des dialogues SQL. Vous pouvez ensuite les réviser, les modifier si nécessaire, et approuver ou annuler l'approbation. Ceux que vous approuvez sont ajoutés à l'onglet Données de routage combiné et sont marqués comme synthétiques ou, si vous les avez modifiés, comme affinés.

L'onglet Données de routage combiné répertorie tous les types de jeu de données. De plus, c'est là que vous pouvez ajouter manuellement des données de routage, comme décrit dans Données de routage des dialogues SQL de Handcraft.

Notez que le nombre total d'énoncés de saisie semi-automatique, d'entraînement, générés et fabriqués à la main ne peut pas dépasser 10 000. Si vous dépassez cette limite, vous verrez le message "Le nombre maximal d'exemples de corpus pour ce robot (10000) a été atteint." Il y a aussi une limite de 120 énoncés d'entraînement.

Pour en savoir plus sur la saisie semi-automatique des suggestions et des données d'entraînement, voir Fournir des suggestions d'interrogation pour les utilisateurs de dialogues SQL et Fournir des données d'entraînement au moyen d'énoncés.

Conseil :

Chaque entité a un onglet de jeu de données dans lequel vous pouvez voir les énoncés qui utilisent des attributs de cette entité spécifique.

Générer les données de routage des dialogues SQL

Si votre compétence comporte des intentions ou se trouve dans un assistant numérique, comme pour les intentions, elle a besoin d'énoncés pour l'aider à acheminer les interrogations SQL vers la conversation des dialogues SQL. En plus des suggestions de saisie semi-automatique, des données d'entraînement et des données d'acheminement conçues manuellement, le mécanisme d'acheminement utilise les énoncés d'acheminement générés que vous créez à partir de l'onglet Données d'acheminement générées dans le jeu de données des entités d'interrogation. Les énoncés générés représentent une large couverture des questions relatives à toutes les entités d'interrogation du modèle logique.

Pour générer des données de routage :

  1. Si le bouton Entraîner comporte un badge rouge, cliquez sur icône de train avec badge et entraînez-vous à l'aide de Trainer TM.

  2. Dans la page Entités, allez à l'onglet Jeu de données et cliquez sur Entités d'interrogation.

  3. Cliquez sur l'onglet Données de routage générées.

  4. Cliquez sur Créer.

    La boîte de dialogue Générer les données de routage s'affiche.

  5. Dans le champ Sélectionner des entités, sélectionnez Toutes. La première fois que vous générez les données d'acheminement, vous devez générer des données pour toutes les entités. Après avoir généré le jeu initial, vous pouvez revenir et générer pour des entités spécifiques s'il y a un besoin.

  6. Cliquez sur Créer.

    La compétence génère 100 énoncés, qui reflètent les questions auxquelles le modèle logique peut répondre.



  7. Vérifiez les données générées et modifiez celles qui doivent être affinées.

    Conseil :

    L'énoncé n'est pas modifiable s'il a été approuvé. Si vous voulez modifier un énoncé approuvé, annulez-le, modifiez-le, puis approuvez-le de nouveau.
  8. Supprimez les entrées si nécessaire et approuvez le reste.

    Les énoncés approuvés sont ajoutés aux données d'acheminement combinées. Si vous avez modifié un énoncé, son sous-type d'acheminement dans l'onglet Données d'acheminement combinées est Défini. Sinon, il s'agit de synthétique.

Données de routage des dialogues SQL de Handcraft

S'il existe des interrogations SQL valides que l'assistant numérique ou la compétence n'achemine pas vers la conversation SQL, vous devez ajouter ces énoncés aux données d'acheminement à partir de l'onglet Données d'acheminement combinées de la page Jeu de données des entités d'interrogation.

Pour ajouter des données de routage artisanales :

  1. Si le bouton Entraîner comporte un badge rouge, cliquez sur icône de train avec badge et entraînez-vous à l'aide de Trainer TM.

  2. Dans la page Entités, allez à l'onglet Jeu de données et cliquez sur Entités d'interrogation.

  3. Cliquez sur l'onglet Données de routage combiné.

  4. Cliquez sur Add Utterance (Ajouter une expression).

    La boîte de dialogue Créer une expression s'affiche.

  5. Entrez l'énoncé, puis cliquez en dehors de la zone de texte.

  6. Cliquez sur Continue (Continuer).

  7. Vérifiez l'interrogation OMRQL pour vérifier que ses résultats répondent à l'interrogation. Si ce n'est pas le cas, corrigez l'interrogation, puis cliquez sur Réinterpréter. Voir Informations de référence sur OMRQL pour les mots clés d'interrogation OMRQL.

  8. Cliquez sur Terminé.

    L'énoncé est ajouté aux données avec le sous-type d'acheminement réglé à Fabriqué à la main.

Configurer la présentation des entités et des attributs

Voici ce que vous pouvez faire pour contrôler quand et comment les lignes d'entité et les attributs sont affichés dans les résultats :

En général, l'expert en base de données et le concepteur de conversation travaillent ensemble sur cette tâche, car l'un possède une expertise en schéma de base de données et l'autre connaît les attentes des utilisateurs.

Vous pouvez tester vos modifications en cliquant sur Preview (Prévisualiser) pour ouvrir le testeur de conversation et entrer un énoncé pour extraire les données appropriées.

Conseil :

La plupart des modifications que vous apportez nécessiteront un réentraînement de l'analyseur de langage naturel (TLN). Lorsque vous testez vos modifications, si l'icône Entraîner comporte un badge rouge (icône de train avec badge), vous devez d'abord cliquer sur Entraîner et terminer le processus d'entraînement.

Configurer l'affichage du formulaire ou de la table

La compétence peut afficher les résultats de l'entité sous la forme d'une table, d'un formulaire ou d'un formulaire de table (où vous pouvez développer une rangée pour voir plus de détails en mode de formulaire). Vous utilisez les champs de conversion de disposition de l'onglet Présentation de l'entité pour configurer le moment où les résultats doivent être affichés dans chaque mode.

Par défaut, la compétence affiche chaque rangée de la réponse sous forme de formulaire, sauf si le nombre de rangées dépasse un seuil que vous spécifiez pour Utiliser la disposition de formulaire pour ce nombre de rangées ou moins. Voici des exemples de réponse en mode formulaire et en mode table :


Description de sql-results-form.png :
Description de l'illustration sql-results-form.png


Description de sql-results-table.png :
Description de l'illustration sql-results-table.png

Dans le cas où le nombre de colonnes dépasse un seuil, la compétence affiche un formulaire de table. Avec un formulaire de table, seul le nombre spécifié de colonnes est affiché et l'utilisateur peut développer le formulaire pour voir les autres attributs. Utilisez Passer à la disposition de formulaire de table lorsque le nombre de colonnes dépasse ce nombre pour spécifier le seuil. Voici un exemple de disposition de formulaire de tableau pour le seuil de colonne 2.


Description de sql-results-table-form.png :
Description de l'illustration sql-results-table-form.png

Afficher une ou deux sections horizontales dans le formulaire

Par défaut, en mode formulaire, la compétence affiche tous les attributs de résultat l'un sous l'autre. Pour enregistrer de la place, vous pouvez régler Nombre de sections horizontales dans la disposition du formulaire à 2 pour afficher deux colonnes d'attributs.

Définir le titre des résultats

Par défaut, la compétence utilise le nom de l'entité d'interrogation pour le titre des résultats, mais vous pouvez utiliser le nom d'affichage dans l'onglet Présentation pour définir un autre titre.

Notez qu'après avoir défini le nom d'affichage, vous ne pouvez pas effacer le champ.

Définir l'ordre de tri par défaut d'une entité

Vous pouvez spécifier un ordre de tri par défaut que la compétence doit utiliser lorsque l'énoncé de l'utilisateur n'en spécifie pas un. Pour définir la valeur par défaut, allez à l'onglet Général de l'entité, cliquez sur Ajouter un ordre d'attribut, sélectionnez un attribut et sélectionnez son ordre (croissant ou décroissant). Vous pouvez continuer à cliquer sur Ajouter un ordre d'attribut pour ajouter d'autres attributs à l'ordre de tri.

Définir les attributs à inclure lorsqu'ils ne sont pas spécifiés par l'énoncé

Si l'énoncé ne nomme aucun attribut, vous voulez probablement que les résultats incluent certains champs essentiels. Vous pouvez utiliser Attributs par défaut dans l'onglet Présentation de l'entité pour spécifier ces champs. Par exemple, pour une entité invoices, vous pouvez afficher invoice_num, invoice_date et invoice_amount lorsqu'aucun attribut n'est nommé.

Notez que vous ne pouvez pas ajouter d'attributs de type entité d'interrogation à la liste d'attributs par défaut.

Définir les attributs à inclure systématiquement dans les résultats

Lorsqu'un énoncé identifie des attributs spécifiques, vous pouvez souhaiter que le résultat inclue non seulement les attributs demandés, mais aussi un certain contexte. Par exemple, si quelqu'un entre "Afficher les montants de facture", les données n'auront pas de sens si elles affichent uniquement les valeurs invoice_amount et non un contexte d'identification tel que invoice_num. Utilisez Attributs minimum dans l'onglet Présentation de l'entité pour identifier les attributs minimum.

Vous ne pouvez pas ajouter des attributs de type entité d'interrogation à la liste d'attributs minimum.

Configurer la taille de page des résultats

Utilisez le champ Nombre maximal de rangées par page de l'onglet Présentation de l'entité pour définir le nombre de rangées à afficher à la fois.

L'utilisateur peut cliquer sur des boutons pour parcourir les résultats.

Ajouter des boutons et des liens aux résultats

Vous pouvez ajouter des boutons et des liens aux résultats d'une entité d'interrogation au niveau global et au niveau ligne. Une action de ligne apparaît dans chaque ligne et une action globale apparaît sous les résultats.

Par exemple, pour une entité d'employé, vous pouvez ajouter une action globale qui renvoie à la page de recherche d'employé de la société. Au niveau ligne, vous pouvez ajouter une action pour une interrogation de suivi commune, telle qu'une interrogation sur le service de l'employé.

Vous ajoutez des actions à partir de l'onglet Présentation de l'entité. Si vous avez plus d'une action, vous pouvez indiquer la séquence d'affichage des actions. Pour les types d'action QUERY, vous devez fournir une interrogation OMRQL. Pour les types d'action URL, vous devez définir l'URL.

Pour les actions de suivi au niveau de la rangée, vous pouvez utiliser ${row.attributeName} pour référencer les valeurs d'attribut de chaque rangée. Par exemple, select * from Emp WHERE dept.loc = "${row.loc}". Au moment de l'exécution, le bouton de chaque ligne aura une valeur différente pour l'interrogation. Cette syntaxe n'est disponible que pour les actions au niveau de la rangée.

Vous pouvez éventuellement restreindre l'affichage de l'action. Par exemple, vous pourriez avoir une action d'enregistrement pour afficher les subordonnés immédiats d'un employé, qui ne devrait s'afficher que si l'emploi de l'employé est un gestionnaire. Pour ce faire, activez l'expression de visibilité et fournissez une expression FreeMarker, telle que ${row.job = 'MANAGER'}.

Note

Les actions de rangée s'affichent sous forme de boutons ou de liens dans chaque rangée dans une disposition de formulaire ou de tableau. Cependant, ils n'apparaissent pas dans les dispositions de table.

Ajouter un attribut personnalisé

Vous pouvez ajouter vos propres attributs personnalisés pour afficher des informations supplémentaires, telles que des valeurs dérivées ou calculées.

  1. Dans l'onglet Attributs de la page d'entité, cliquez sur + Ajouter un attribut et indiquez un nom et un type canoniques.

  2. Dans l'onglet Langue naturelle, indiquez un nom principal et ajoutez éventuellement des synonymes.

  3. Dans l'onglet Mappage dorsal, sélectionnez Expression SQL et ajoutez l'expression.

Si l'expression référence une colonne, utilisez le nom de colonne du modèle physique (schéma de base de données) et ajoutez le préfixe ${alias}. Par exemple, pour une entité invoices, vous pouvez ajouter un attribut amount_to_pay avec l'expression ${alias}invoice_amount + ${alias}discount_taken où :

  • invoice_amount et discount_taken sont des noms de colonne physiques existants dans la table invoices.
  • La nouvelle colonne dérivée amount_to_pay est la somme des valeurs des colonnes physiques invoice_amount et discount_taken.

Vous pouvez utiliser cette table pour déterminer le type à utiliser pour l'attribut :

Type Cas d'emploi Exemples
Numéro Les valeurs sont uniquement numériques et ne sont pas limitées à une liste définie. ID employé numérique, montant de la facture
Date La valeur est une date sans heure. Date d'embauche
Date et heure La valeur peut avoir à la fois une date et une heure. Date et heure de départ
Entité L'attribut est associé à une entité de liste de valeurs. Notez que si la liste de valeurs énumère toutes les valeurs valides (c'est-à-dire une liste fermée) et que les valeurs sont rarement utilisées dans les énoncés en langage naturel, vous devez ajouter des synonymes pour les valeurs de la liste. statut (fermé), noms de fournisseurs (ouvert)
Chaîne À utiliser pour le texte qui peut contenir des chiffres et des caractères où il n'est pas logique de l'associer à une liste de valeurs. Numéro de facture alphanumérique, description du produit
Entité d'interrogation N'utilisez cette option que lorsque vous devez créer un lien vers une autre entité d'interrogation. Aucun exemple
Boolean N'utilisez pas. Non applicable

Configurer dynamiquement la présentation à l'aide des programmes de traitement d'événements

Si vous souhaitez que la compétence modifie dynamiquement la façon dont elle présente les résultats de l'interrogation SQL, vous pouvez ajouter des programmes de traitement d'événements d'interrogation de données à un ensemble de composants personnalisés, ajouter l'ensemble à la compétence en tant que service de composants personnalisés, puis associer vos entités à leurs programmes de traitement spécifiques à partir des onglets Présentation d'entité. La compétence déclenche l'événement d'interrogation de données d'une entité lorsque cette entité d'interrogation est la première entité nommée dans la clause FROM (entité racine).

Par exemple, vous pouvez ajouter dynamiquement un nombre de lignes au texte d'en-tête, ajouter une ligne à la table pour afficher une somme ou déterminer quand afficher ou masquer un attribut.

Pour savoir comment créer des programmes de traitement d'événements d'interrogation de données, voir Écriture de programmes de traitement d'événements d'interrogation SQL.

Définir les règles d'interrogation

Voici comment utiliser les paramètres d'une entité dans la page Entités pour contrôler les façons dont les utilisateurs finaux peuvent poser des questions sur les données et évaluer les résultats.

Vous pouvez tester vos modifications en cliquant sur Preview (Prévisualiser) pour ouvrir le testeur de conversation et entrer un énoncé pour extraire les données appropriées.

Conseil :

Certaines des modifications que vous apportez nécessiteront un réentraînement de l'analyseur de langage naturel (TLN). Lorsque vous testez vos modifications, si l'icône Entraîner comporte un badge rouge (icône de train avec badge), vous devez d'abord cliquer sur Entraîner et terminer le processus d'entraînement.
  • Identifier l'attribut à utiliser pour la mesure ou la comparaison : Si l'énoncé demande de comparer des éléments d'entité à un nombre ou de classer les entités à l'aide d'un superlatif comme le plus grand ou le moins, quel attribut mesurable, le cas échéant, la compétence doit-elle utiliser pour effectuer la comparaison? Supposons, par exemple, que les utilisateurs posent des questions sur le fournisseur le plus important, que vous souhaitiez que la compétence utilise l'attribut rating pour les comparaisons. Pour spécifier l'attribut à utiliser pour la mesure ou la comparaison, allez à l'onglet Général de l'entité et sélectionnez-le dans la liste déroulante Mesure par. Si le classement est opposé à l'ordre numérique, par exemple 5 étant supérieur à 1, vous devez également régler l'attribut Inverser la comparaison à Vrai dans son onglet Informations générales.

  • Spécifier comment comparer les attributs mesurables : Par défaut, les valeurs d'attribut mesurables sont comparées par ordre numérique, où 1 est inférieur à 5. Cependant, il est parfois plus approprié d'inverser la comparaison où 1 vaut mieux que 5. Par exemple, lorsque vous examinez les résultats de la course, les 5 meilleurs moments sont les valeurs les plus faibles dans les résultats. Pour inverser les comparaisons d'un attribut, réglez l'option Inverser la comparaison de l'attribut à Vrai dans l'onglet Informations générales. Notez que ce paramètre affecte également l'ordre de tri de l'attribut.

  • Autoriser la mise en correspondance partielle pour les chaînes : Si vous prévoyez que les utilisateurs laisseront souvent de côté les caractères ou les valeurs de début ou de fin, tels que "gestionnaire" au lieu de "gestionnaire de services", envisagez d'activer la mise en correspondance partielle. Lorsque la mise en correspondance partielle est activée, la clause WHERE SQL générée utilise upper (<column-name>) LIKE UPPER(%<string>%) au lieu de = <string>. Vous pouvez activer la mise en correspondance partielle dans l'onglet Informations générales de l'attribut. Notez que le comportement de mise en correspondance partielle pour les attributs d'entité est différent du comportement de mise en correspondance floue pour les listes de valeurs.

  • Spécifier comment résoudre les dates et heures ambiguës : Pour les attributs de type date ou date-heure, vous pouvez spécifier si des valeurs ambiguës, telles que "Mercredi", doivent être résolues au passé, au futur ou à la date ou à l'heure la plus proche. Vous pouvez définir cela à l'aide de la préférence temporelle dans l'onglet Informations générales de l'attribut.

    AVERTISSEMENT :

    Gardez à l'esprit que le réglage de la préférence temporelle à la date ou à l'heure la plus proche ne fonctionne que pour l'entrée de dates et d'heures fixes, telles que "Mercredi". Si un utilisateur entre une valeur de durée, telle que "deux jours", la requête ne sera pas résolue, car une valeur de durée est la même pour le passé et le futur. À moins d'être certain qu'un utilisateur n'entrera jamais de valeur de durée, vous ne devez régler la préférence temporelle qu'à une valeur passée ou future.

    Conseil :

    Si un attribut peut parfois être attribué par défaut au passé et parfois au futur en fonction du contexte, envisagez de créer des attributs personnalisés avec des préférences temporelles différentes. Par exemple, pour un attribut due_date, vous pouvez ajouter un attribut due avec une préférence future et un attribut overdue avec une préférence passée.

Activer les interrogations en langage naturel pour les colonnes dénormalisées

Si vous avez un attribut dénormalisé avec un nom qui utilise un modèle pour identifier les attributs que la colonne représente, tels que PTD_LBR_CST, vous pouvez rendre l'attribut dénormalisé compréhensible pour le modèle de langage naturel en lui mappant une entité normalisée à l'aide d'un mappage dorsal d'expansion de colonne.

Par exemple, supposons que vous ayez une entité d'interrogation costToSales avec les attributs PTD_LBR_CST, QTD_LBR_CST, YTD_LBR_CST, PTD_SUB_CST, QTD_SUB_CST, YTD_SUB_CST.

Pour permettre à la compétence d'associer des interrogations en langage naturel à ces attributs, vous créez une entité d'interrogation de coût qui contient les attributs d'identification unique, tels que project_num, plus la période, le type et le coût. Les attributs de période et de type sont de type entité et font référence aux listes de valeurs de période (C/P, C/T, C/E) et de type (LBR, SUB). Le mappage dorsal de l'attribut de coût est un développement de colonne avec l'expression "${period}_${type}_CST". L'étape finale consiste à ajouter l'attribut de coût à l'entité costToSales, qui référence l'entité d'interrogation de coût pour lier les deux entités.

Lorsque l'interrogation est "Quels sont mes coûts de main-d'oeuvre C/E", le mappage d'expansion de colonne dorsale indique à la compétence d'extraire la valeur de l'attribut YTD_LBR_CST, qui se trouve dans l'entité costToSales (en supposant que les noms principaux et les synonymes nécessaires sont définis).

Test et réparation

Lorsque vous définissez et ajoutez des données d'entraînement à vos entités et attributs au moyen de noms, de synonymes, de listes de valeurs et des données d'entraînement dans le jeu de données des entités d'interrogation, vous voulez tester dans quelle mesure les données d'entraînement aident l'analyseur de langage naturel à traduire les énoncés de l'utilisateur final en interrogations SQL.

Conseil :

Si l'icône Train (Entraîner) comporte une pastille rouge (icône de train avec badge), vous devez cliquer sur Train (Entraîner) et terminer le processus d'entraînement avant de tester les énoncés.

La page Entités comporte un lien Tester les interrogations, qui ouvre le testeur d'interrogation pour tester vos énoncés de cas d'utilisation. Dans le testeur, vous pouvez entrer votre énoncé de test et vérifier l'interrogation OMRQL générée par la compétence.



Si le testeur traduit l'énoncé en une interrogation, vérifiez l'interrogation OMRQL pour vérifier qu'elle produira les résultats souhaités. Si l'interrogation OMRQL n'est pas correcte, vous devrez réparer la compétence à l'aide de la correction appropriée :

Conseil :

Envisagez d'utiliser Enregistrer en tant que scénario de test pour enregistrer certaines de vos interrogations valides dans le testeur par lots, que vous pouvez utiliser pour vous assurer que les modifications apportées n'ont pas d'incidence négative sur d'autres zones. Voir Surveiller avec le test par lots d'entités d'interrogation.

Notez que certains énoncés peuvent ne pas être traduits correctement en raison des limites de la fonction de dialogue SQL. Dans certains cas, vous pouvez contourner ces limitations en ajoutant des données d'entraînement personnalisées. Voir Dépannage des interrogations SQL.

Si le testeur d'interrogation signale qu'il y a des données d'entraînement insuffisantes, vous pouvez cliquer sur Voir JSON pour obtenir des informations sur la façon dont il a analysé l'énoncé. La valeur translatable indique si le modèle prend en charge l'interrogation. confusionSpanText peut vous donner une idée de la partie de l'interrogation qui n'est pas prise en charge.


Description de query-tester-json.png ci-dessous
Description de l'illustration query-tester-json.png

Pour les énoncés qui ne peuvent pas être traduits, vérifiez d'abord si vous avez introduit une faute de frappe, si votre interrogation est trop vague ou si votre interrogation est en dehors de la portée du modèle. Ces problèmes ne peuvent pas être résolus par la formation. Sinon, vous pourriez être en mesure de résoudre les données d'entraînement insuffisantes en ajoutant un synonyme ou en ajoutant l'énoncé aux données d'entraînement personnalisées dans le jeu de données des entités d'interrogation. Voici quelques exemples de problèmes de données d'entraînement insuffisants que vous pourriez être en mesure de résoudre en ajoutant des données d'entraînement personnalisées.

  • Confusion d'attribut : Par exemple, le statut fait référence au statut de paiement ou au statut d'approbation.

  • Confusion attribut-valeur : Par exemple, "combien de gestionnaires y a-t-il" (s'agit-il de la valeur de l'attribut manager ou de la valeur de l'emploi de l'employé?).

  • Rechercher des valeurs qui sont également des mots clés ou des opérateurs : Par exemple, en distinguant le synonyme "total" de l'opérateur SUM.

Si OMRQL est valide, vous pouvez tester la façon dont la compétence traduit OMRQL en SQL en cliquant sur Cliquez pour tester cela dans le testeur de conversation. Le testeur de conversation s'affiche avec les résultats.

Dans le testeur de conversation, vous pouvez voir les énoncés OMRQL et SQL dans l'onglet Boîtes de dialogue SQL. Lorsqu'elle ne peut pas traduire l'interrogation, elle indique que celle-ci n'est pas traduisible et indique le texte à l'origine de la confusion.



Dépannage des interrogations SQL

Lorsqu'une interrogation ne se résout pas comme prévu, il se peut que le modèle n'ait pas assez d'informations ou que l'énoncé soit hors de portée. Cela peut également être dû aux limites des dialogues SQL.

Pour les cas où le modèle ne dispose pas d'informations suffisantes, voir Tester et réparer pour savoir comment résoudre les problèmes. Il existe des limitations de dialogues SQL slso qui peuvent empêcher l'analyseur de langage naturel de traduire correctement l'énoncé en OMRQL. Cette section fournit des informations sur ces limitations et sur les moyens de les contourner, si possible.

Limites générales dans les dialogues SQL

Le tableau ci-dessous présente les limites générales des dialogues SQL que vous devez connaître. Ces limitations n'ont pas de solution de rechange.

Catégorie Limitation Exemples d'interrogations non prises en charge
Nombre d'entités et d'attributs pris en charge Le modèle logique peut avoir un total de 50 attributs plus des entités. Cette limite inclut tous les attributs virtuels et entités créés.  
Interrogation non anglaise Toute requête dans une langue autre que l'anglais. numero total de empleadas
Utilisation des pronoms Utiliser des pronoms tels que "I", "moi" et "mon" dans un énoncé.
  • Quel est mon salaire?
  • Quel manager suis-je?
  • employés embauchés avant moi
Oui et non questions Toute question pour laquelle la réponse est oui ou non. Les dialogues SQL prennent uniquement en charge les interrogations pour lesquelles la réponse est un ensemble de résultats d'une interrogation de table de données.
  • John est-il clerc?
  • Y a-t-il des analystes au service comptable?
  • Avons-nous moins de 30 employés au service des ventes?
Négation

Énoncés qui contiennent des mots négation tels que "non" et "non" ou des interrogations pour des valeurs qui indiquent une négation ou des valeurs nulles.

  • Quels employés ne sont pas au service de comptabilité?
  • les employés qui gagnent une commission (les demandes de commission ne sont pas nulles)
  • Quelles factures ne sont pas payées?
  • factures pour un fournisseur non fédéral (interrogations pour une valeur contenant une négation)
Opérateurs SQL complexes Les dialogues SQL ne prennent pas en charge les interrogations plus complexes qui impliquent des sous-interrogations, des opérateurs SET (INTERSECT, UNION, EXCEPT et NONE), des interrogations qui nécessitent des opérateurs arithmétiques, et les mots clés EXISTS et NOT.

Bien que, dans de rares cas, vous puissiez trouver une interrogation complexe qui se résout correctement, pour garantir la cohérence des résultats, vous devez envisager d'utiliser des vues de base de données ou de créer des attributs virtuels, comme décrit dans Ajouter un attribut personnalisé.

  • afficher les employés dont le salaire est supérieur au salaire le plus élevé du service des ventes
  • Quelle est la rémunération totale gagnée par chaque employé?
  • afficher les emplois qui emploient à la fois des hommes et des femmes
    • sélectionner un emploi de l'employé où sexe = M INTERSECT sélectionner emploi de l'employé où sexe = F
opérateurs SQL implicites

Les dialogues SQL ne prennent pas en charge les fonctions de clause SQL qui ne sont pas explicitement demandées. Par exemple :

  • Distinct implicite : Impliquer que les résultats renvoyés doivent être distincts.
  • Agrégations implicites : Impliquer une opération d'agrégation.
  • Ordre implicite par : Impliquer un ordre des résultats. Envisagez de définir l'expression de commande par défaut dans l'onglet Général de l'entité.

Valeur distincte :

  • afficher les villes de tous les employés (retourne plusieurs lignes avec des villes répétitives)
  • afficher les noms de service où tous les employés gagnent plus de 10000 (retourne plusieurs enregistrements avec le même nom de service, un avant chaque employé qui gagne plus de 10 000)

Agrégation :

  • Combien payons-nous à tous les employés du service de comptabilité (implique une demande pour le salaire total de tous les employés en comptabilité)
  • afficher le salaire par service (implique la somme)

Trier par

  • afficher tous les noms d'employé (l'utilisateur peut vouloir le trier par ordre alphabétique, mais l'ordre de tri n'est pas explicitement implicite)
  • afficher les employés par ordre croissant (l'attribut sur lequel effectuer le tri est implicite)
Soutien limité pour les questions de suivi Les dialogues SQL ne prennent pas en charge les questions de suivi prêtes à l'emploi. Autrement dit, les utilisateurs ne peuvent pas poser une nouvelle question de suivi pour mettre à jour la réponse.

Conseil :

Vous pouvez ajouter des actions rapides aux résultats sous la forme de liens ou de boutons qui exécutent des interrogations de suivi communes. Voir Ajouter des boutons et des liens aux résultats.
Voici des exemples d'interrogations de suivi pour l'énoncé initial " Afficher tous les employés à Seattle "
  • afficher uniquement les commis
  • afficher maintenant les gestionnaires
  • Qui d'entre eux gagne plus de 3000?
Dans ces cas, les utilisateurs doivent entrer la question complète, par exemple "montrer tous les employés à Seattle qui travaillent comme commis".

Dépannage des problèmes d'interrogation de base

Catégorie Description du problème Exemples d'interrogations non prises en charge Solution de rechange
Sélectionner l'attribut Sélection de plus de 3 attributs Afficher le nom, le titre de l'emploi, le salaire et la commission de tous les employés Ajouter des données d'entraînement personnalisées. Les données d'entraînement peuvent inclure des exemples couvrant différentes entités et quelques ensembles différents de 4 attributs (ou plus).
Sélectionner une entité Demande de plusieurs entités
  • afficher tous les employés et leurs services
  • afficher le fournisseur et le lieu du fournisseur pour toutes les factures
Utilisez des données d'entraînement personnalisées pour enseigner à l'entité à sortir un attribut de la deuxième entité. Par exemple, pour "Afficher le fournisseur de chaque facture", vous pouvez ajouter des données de formation qui mappent l'interrogation à OMRQL : select invoiceid, vendor.vendor_name from invoices
Trois conditions ou plus dans la clause WHERE montrer aux employés qui ont été embauchés après 2000 et qui travaillent au service des finances en tant qu'analyste Ajouter des données d'entraînement avec des exemples contenant plusieurs conditions
Trier par Trier par plus d'un attribut ou d'une entité afficher les employés triés par titre et nom d'emploi Ajouter des données d'entraînement avec des exemples contenant un classement par 2 attributs ou plus
Groupement par Regrouper par plus d'un attribut ou d'une entité afficher le salaire moyen par emploi et par emplacement de service Ajouter des données d'entraînement avec des exemples qui contiennent un regroupement par 2 attributs ou entités supplémentaires
Regrouper par + Ayant Plus d'une condition dans la clause ayant afficher les emplois qui ont au moins 20 employés et un salaire moyen supérieur à 30000 Ajoutez des données d'entraînement avec des exemples qui contiennent plusieurs conditions dans la clause ayant
Auto-jointures Si une entité a un lien vers elle-même, ce calcul peut ne pas être possible pour le modèle, même avec des données d'entraînement personnalisées. Ici, les interrogations demandent des données sur les employés qui sont liées aux données sur les employés.
  • montrer le nom et le salaire du manager de John
  • Quels employés relèvent de Chris?
Il n'y a aucune solution de rechange vérifiée.

Dépannage des problèmes de date et d'heure

Catégorie Description du problème Exemples d'interrogations non prises en charge Solution de rechange
Valeurs date et heure implicites Lorsque vous filtrez par date ou date-heure, vous devez fournir explicitement un contexte pour la clause WHERE.

Par exemple, au lieu de dire " quelles factures sont en retard ", vous devez dire quelque chose comme " quelles factures ont une date d'échéance avant aujourd'hui ".

  • Quel est le prochain événement?
  • Quelles factures sont échues?
Créez un attribut virtuel (par exemple, pour indiquer si un événement est à venir) puis utilisez un entraînement personnalisé pour enseigner au modèle le comportement attendu.
Référence passée ou future implicite Pour les attributs de date et de date et d'heure, vous utilisez la préférence temporelle de l'attribut dans l'onglet Informations générales de l'attribut pour spécifier comment résoudre les dates et heures ambiguës.

Les énoncés qui impliquent qu'une valeur ambiguë doit être résolue en tant que date ou heure passée ou future sont ignorés et la préférence temporelle est utilisée.

employés qui seront embauchés mercredi
    • Si la préférence temporelle par défaut est passée, elle sera résolue à une date passée, même si le contexte est implicitement futur
Vous pouvez créer 2 attributs dérivés pour résoudre ce problème pour votre scénario.
Contexte "passé" avec opérateurs < et > Les dialogues SQL ne prennent pas en charge l'utilisation des opérateurs < et > aux dates ou heures passées contenant une durée.
  • employés embauchés il y a plus de 2 jours
  • factures en retard de moins de 2 jours
Aucune solution de rechange fiable. Tenter d'enseigner quelque chose comme ça avec un entraînement personnalisé peut entraîner un démarrage incorrect du modèle pour prédire cela dans d'autres cas.
Heure sans date Les dialogues SQL ne prennent pas en charge les interrogations qui ont des heures, mais pas des dates. commandes livrées à 3 h Aucune solution de rechange connue.
Dates récurrentes Les dialogues SQL ne prennent pas en charge les dates qui spécifient une valeur de répétition sur un intervalle spécifique. Quelle réunion a lieu le premier lundi de chaque mois? Aucune solution de rechange connue

Dépannage des problèmes de sélection d'attributs

Catégorie Description du problème Exemples d'interrogations non prises en charge Solution de rechange
Performance limitée pour les synonymes d'entité ou d'attribut propres au domaine Pour les synonymes propres à un domaine ou techniques, non couramment utilisés comme synonymes, le modèle peut avoir du mal à le mapper à l'attribut correct

Attribut : ip_address

Synonyme : appareils

Ajouter des données d'entraînement personnalisées. Inclure des exemples utilisant les synonymes de l'attribut, ainsi qu'un autre jeu d'exemples portant le nom principal pour s'assurer que le modèle n'oublie pas les fonctionnalités existantes
Attribut d'identification pour les entités Imposer un attribut en se référant uniquement à l'entité Afficher les factures contenant 1234
  • Implique le filtrage par numéro de facture
Ajouter des données d'entraînement personnalisées.
  • Créez des données avec des exemples à l'aide de =, LIKE, starts with et ends with (par exemple, "afficher toutes les factures contenant 1234")
  • Assurez-vous que les données d'entraînement contiennent quelques exemples où le nom de l'entité est utilisé pour faire référence à l'entité elle-même (par exemple, "afficher toutes les factures")
Homonymie Dans les cas ambigus avec de multiples possibilités, le modèle ne peut pas désambiguïser Afficher le montant pour toutes les factures
  • on ne sait pas si "montant" fait référence à "montant de la facture" ou "montant brut"
Ajouter des données d'entraînement personnalisées.
  • Incluez des exemples qui mappent le nom ambigu à l'attribut prévu.
  • Incluez quelques exemples en utilisant les noms complets (non ambiguës) des options pour cette utilisation ambiguë particulière.
Référence d'attribut implicite pour les valeurs qui ne figurent pas dans l'entité de liste de valeurs Si nous ne faisons référence à un attribut que par valeur et que cette valeur n'est pas présente dans la liste de valeurs (valeur canonique/synonyme)
  • Afficher le salaire de tous les employés dans ODA
    • Où "ODA" n'est pas une valeur dans la liste de valeurs pour les noms de service
  • Afficher les départements situés aux États-Unis
    • Où "USA" n'est pas synonyme de "États-Unis" dans la liste de valeurs d'emplacement
Vous pouvez ajouter des données d'entraînement personnalisées, mais elles ne seront pas fiables dans tous les cas. Par exemple, le modèle peut apprendre que les "factures émises par VALUE" doivent être mappées à l'attribut de nom de fournisseur. Mais le modèle ne peut pas apprendre "factures pour VALUE" ou "factures par valeur", car les mots pour, par, dans, etc. sont très généraux et peuvent être utilisés dans un large éventail de contextes.
Ordre des valeurs et nom d'attribut L'odel est moins robuste lorsque la valeur est mentionnée avant le nom de l'attribut dans l'énoncé. (C'est plus un problème lorsque les valeurs ne sont pas dans la liste de valeurs et pour les valeurs de mots multiples). afficher les factures approuvées Ajouter des données d'entraînement personnalisées.
  • Créez des exemples avec la valeur avant l'attribut dans les conditions ainsi que quelques exemples avec des attributs avant les valeurs.

Dépannage du regroupement par problèmes

Catégorie Description du problème Exemples d'interrogations non prises en charge Solution de rechange
Regrouper par pour plus de 2 entités Regroupement entre plusieurs entités avec agrégations
  • afficher le nombre de versements pour chaque fournisseur
    • lorsque trois entités sont concernées : fournisseurs, factures, versements
  • montant total restant pour chaque fournisseur
    • où le montant restant se trouve dans l'entité de versements
Vous pouvez essayer d'ajouter des données d'entraînement personnalisées. Cependant, essayer de résoudre ce problème est risqué et nécessiterait beaucoup de données d'entraînement personnalisées.
Regrouper par + Trier par + Min. ou Max. Tri des entités en fonction des valeurs minimales ou maximales de l'attribut après regroupement par cette entité.
  • Afficher tous les services triés en fonction de leur salaire d'employé le plus élevé
  • afficher tous les emplois par ordre de salaire minimum payé aux employés de cet emploi
Ajouter des données d'entraînement personnalisées.
Regrouper par + Trier par + Min/Max + Limite 1 ou Limite N Regrouper d'abord par attribut ou entité, trier par le minimum ou le maximum d'un attribut numérique, puis sélectionner la première rangée quel service a le salaire minimum le plus élevé Ajouter des données d'entraînement personnalisées.
Les clauses Sélectionner et Ayant ont des agrégations différentes Les clauses Select et Have ont des agrégations différentes afficher le salaire moyen de chaque service comptant au moins 10 employés
  • la clause SELECT doit avoir la valeur avg(invoices.amount) et la clause HAVING doit avoir la valeur count(facture)
Ajouter des données d'entraînement personnalisées.
Les clauses Sélectionner et Trier par ont des agrégations différentes Les clauses Sélectionner et Trier par ont des agrégations différentes afficher le nom et la moyenne de la facture de chaque fournisseur, et trier les fournisseurs par ordre alphabétique du nom du fournisseur
  • Ici, la clause SELECT doit avoir la valeur avg(invoices.amount) et la clause ORDER BY doit avoir la valeur vendor_name
Ajouter des données d'entraînement personnalisées.
Agrégations multiples dans la clause Select Les dialogues SQL prennent en charge les clauses Select avec une agrégation unique, une somme moyenne plus et une somme minimale plus maximale.

Il ne prend pas en charge d'autres combinaisons telles que moyenne plus min, moyenne plus somme plus max et nombre plus somme.

  • afficher le salaire moyen et le salaire le moins élevé par service
  • pour chaque emploi, afficher le nombre d'employés et le salaire moyen
Ajouter des données d'entraînement personnalisées.
Clauses ayant + Where Regrouper par interrogation avec une clause Have et Where Quels fournisseurs de type LEGAL ont plus de 6 factures? Ajouter des données d'entraînement personnalisées.

Dépannage des problèmes d'entité

Catégorie Description du problème Exemples d'interrogations non prises en charge Solution de rechange
Typos  
  • Employés du service comptable
    • La comptabilité de valeur a une faute de frappe
  • Département d'emlpoyee nme John Doe
    • Attribut emlpoyee nme a une faute de frappe
Aucune solution de rechange. Les typos dans les valeurs ne fonctionneront même pas avec une formation personnalisée.
Entités autres que les listes de valeurs et les expressions rationnelles Association d'attributs à tout type d'entité autre que liste de valeurs (par exemple, entités ML personnalisées)   Aucune solution de rechange.
Correspondance floue Pour la mise en correspondance floue, seule la mise en forme est prise en charge. Factures d'Amazon
  • Là où il n'y a pas de contexte, et la liste de valeurs a "Amazon LLC"
Ajoutez des synonymes dans la liste de valeurs.
Correspondance floue La correspondance floue ne fonctionnera pas pour les caractères _ et ? Factures payées par TEF DBX
  • Lorsqu'il n'y a pas de contexte et que la liste de valeurs contient "DBX_EFT"
Ajoutez des synonymes dans la liste de valeurs.
Numéros sous forme non numérique Les dialogues SQL prennent en charge une liste limitée de nombres pouvant être représentés sous d'autres formes (0-10, 20 et 50). Tous les autres nombres, s'ils sont référencés dans un format autre que numérique, ne sont pas pris en charge
  • afficher les factures dont le montant dû est inférieur à trente
  • afficher les factures dont le montant dû est inférieur à 1 k
  • Afficher les factures dont le montant dû est inférieur à 1 millier
  • Afficher les factures dont le montant dû est inférieur à 1 000
Aucune solution de rechange.

Dépannage d'autres problèmes

Catégorie Description du problème Exemples d'interrogations non prises en charge Solution de rechange
2 filtres numériques ou plus Deux clauses Where avec des nombres (qu'il s'agisse du même attribut ou d'un attribut différent)
  • Employés dont le salaire est supérieur à 10000 et dont la commission est d'au moins 2000
  • Employés dont le salaire est inférieur à 2000 ou est d'au moins 5000
Ajouter des données d'entraînement personnalisées.
Ordre par superlatifs

Demander les N entités supérieures ou inférieures.

Note

Le modèle est plus robuste avec le haut que le bas
Afficher le meilleur employé
  • L'OMRQL idéal est "SELECT * DE L'Emp COMMANDE PAR * DESC LIMIT 1"
  • Cependant, le modèle présente des problèmes avec order by *
Ajouter des données d'entraînement personnalisées.
Attributs pour lesquels les agrégations sont précalculées Si le schéma comporte des agrégations précalculées telles que total_amount qui stocke déjà la somme ou total_servers qui stocke le nombre total de serveurs, le modèle peut être confus entre la nécessité d'utiliser la fonction SUM/COUNT ou l'attribut avec l'agrégation précalculée. Afficher le montant total de la facture 1234
  • total_amount est un attribut dérivé, mais où le modèle peut prédire SUM(amount)
Ajouter des données d'entraînement personnalisées.
Sélectionner par défaut Le modèle prédit parfois le nom ou l'ID de l'entité au lieu de sélectionner *.

Il s'agit d'une erreur rare, et l'impact n'est pas critique, car l'utilisateur voit l'attribut minimum au lieu des attributs par défaut de l'entité.

Affichez les factures qui sont approuvées.
  • L'OMRQL idéal est " SELECT * des factures où approval_status = "approuvé" "
  • Toutefois, le modèle prédit "sélectionner invoice_num"
Ajouter des données d'entraînement personnalisées, s'il s'agit bien d'un problème

Surveiller et améliorer

Au fur et à mesure que vous créez et testez votre compétence, vous pouvez utiliser des données clés et des tests par lots pour surveiller la mesure dans laquelle la compétence atteint ses objectifs et exposer les domaines qui nécessitent des améliorations. Lorsque vous entrez dans la phase de test et que vous finissez par publier la compétence, vous voulez continuer à effectuer des contrôles et des tests périodiques.

Surveiller à l'aide de synthèses

La page Insights (Données clés) de la compétence fournit plusieurs mesures que vous pouvez utiliser pour mesurer le rendement de votre compétence de dialogue SQL et déterminer où apporter des améliorations.

En tant qu'analyste d'affaires, ces mesures d'interrogation de données peuvent vous intéresser dans l'onglet Aperçu :

  • Performance : Tendance des conversations par statut (ligne) affiche le nombre de conversations sur une période donnée et indique si le trafic tend vers le haut, vers le bas ou latéralement.

  • Le ratio entre Corriger les interrogations et Interrogations incorrectes indique à quel point les utilisateurs du robot sont satisfaits de la précision de la traduction des énoncés en interrogations SQL.

  • Le ratio entre les conversations terminées et inachevées indique l'incidence des problèmes techniques sur l'expérience des utilisateurs.

  • Le ratio entre le total des conversations et les interrogations non résolues (OOD/OOS) permet de mesurer la mesure dans laquelle la compétence répond aux attentes des utilisateurs finaux.

  • La tendance des conversations par type et le ratio entre le total des conversations et les conversations d'interrogations de données indiquent la proportion d'énoncés qui sont des interrogations SQL.

  • Les entités d'interrogation de données indiquent les entités les plus interrogées.

En tant que formateur IA, vous pouvez examiner les messages utilisateur dans l'onglet Conversations pour détecter les domaines à améliorer. Par exemple, vous pouvez consulter les messages d'utilisateur suivants :

  • Les messages d'utilisateur Type : Intention, Résultat : Incomplet indiquent des problèmes lors de la conversion de l'énoncé en interrogation SQL. Souvent, vous pouvez résoudre ces problèmes en ajoutant des synonymes ou, pour des interrogations plus complexes, en ajoutant des énoncés mappés au jeu de données des entités d'interrogation. Notez que vous pouvez également voir ces messages en sélectionnant Erreurs traitées par le système dans la liste déroulante Erreurs.

  • Les messages d'utilisateur Type : Intention, Intention : unresolvedIntent indiquent à la fois des énoncés hors de portée et des énoncés que la compétence ne reconnaît pas comme un énoncé d'interrogation de données. Pour les énoncés qui sont des interrogations de données valides mais que la compétence ne reconnaît pas comme telles, vous pouvez souvent résoudre les problèmes en ajoutant des synonymes ou en mappant les énoncés à OMRQL dans le jeu de données d'interrogation.

  • Type : Interrogation de données, Entités affiche les messages d'utilisateur par entité d'interrogation.

  • Type : Interrogation de données, Résultat : Incorrect affiche les messages qui, selon les utilisateurs, ont retourné des résultats incorrects. Vous devez vérifier que les résultats sont incorrects et, le cas échéant, ajouter des synonymes, des listes de valeurs et interroger les entrées de jeu de données, le cas échéant.

Surveillance avec test par lots d'entité d'interrogation

En tant que formateur IA, il est recommandé de créer des tests par lots pour s'assurer que l'amélioration d'un domaine n'a pas d'incidence négative sur un autre. Vous pouvez également utiliser des tests par lots pour vous assurer que les modifications apportées au modèle logique n'ont pas d'effets négatifs sur l'entraînement personnalisé ou l'acheminement vers des conversations SQL.

Tout comme pour les tests par lots d'énoncés d'intention, vous pouvez réserver environ 20 % des interrogations du monde réel que vous avez collectées pour les tests par lots d'interrogations. Vous pouvez exécuter le test par lots périodiquement et après avoir apporté des modifications au modèle logique, à l'entraînement personnalisé ou aux données d'acheminement.

Chaque scénario de test doit appartenir à une suite de tests. Par conséquent, avant de créer un scénario de test, vous devez d'abord créer une suite qui reflète un aspect des tests d'interrogation, comme les tests d'échec, les tests dans le domaine ou les tests hors du domaine. Nous fournissons une suite appelée Suite de tests par défaut. Vous pouvez affecter des scénarios de test à cette suite si vous n'en avez pas créé d'autres.

Vous pouvez ajouter un scénario de test à un test par lots de deux façons :

  • Après avoir testé un énoncé dans la liste déroulante Testeur d'interrogation, vous pouvez sélectionner une suite de tests dans la liste déroulante Enregistrer en tant que scénario de test pour l'enregistrer dans cette suite.

  • Vous pouvez cliquer sur + Test Case (Cas de test) dans l'onglet Test Suites (Suites de test) du testeur par lots.

Pour accéder au testeur de lot :

  1. Dans la page Entités, cliquez sur Tester les interrogations.

    Le testeur d'interrogation s'ouvre.

  2. Cliquez sur Aller aux cas de test.

    Dans l'onglet Suites de tests, vous sélectionnez une suite de tests et exécutez tous les cas de test ou sélectionnez et exécutez des cas spécifiques. Les résultats sont affichés dans la page Résultats du test. Les tests prennent un certain temps. Vous savez que l'exécution est terminée lorsque En cours affiche 0.

Référence OMRQL

Voici les mots clés que vous pouvez utiliser lorsque vous définissez des interrogations OMRQL pour les énoncés que vous ajoutez au jeu de données des entités d'interrogation. Notez que vous utilisez les noms canoniques et non les noms primaires et les synonymes.

Composant Mots clés OMRQL Exemple OMRQL contraintes;
Composants de base
  • SÉLECTIONNER
  • *
  • DE
SÉLECTIONNER * DE L'employé OMRQL ne peut pas nommer les attributs qui ne sont pas référencés dans l'énoncé.
Filtrage Employé WHERE salaire > 100000 Aucune.
Liaison d'entités

Voir Lier les attributs pour obtenir des explications sur le fonctionnement de cette fonction.

. (point) SELECT * FROM Employee WHERE Departments.location = 'NYC' Aucune.
Ordre
  • TRIER PAR
  • LIMITE
  • ASC
  • Schéma
SELECT name FROM Employee ORDER BY salary DESC LIMIT 10 (Sélectionner le nom de l'employé COMMANDE PAR salaire) L'instruction OMRQL ne peut commander des données à l'aide de ORDER BY <ATTR> [LIMIT N] que si l'énoncé inclut l'ordre des mots ou ses synonymes de langage naturel, tels que trié, ordonné, le plus élevé et le plus petit.
Commande sans attribut spécifique

L'astérisque (*) est utilisé en conjonction avec ORDER BY lorsqu'un utilisateur demande de commander quelque chose sans spécifier quoi commander. Par exemple, " afficher les 10 meilleurs employés " (on ne sait pas quel attribut nous devons trier). Le système dorsal remplace ensuite * par un attribut prédéfini par défaut (measure_by).

TRIER PAR * SÉLECTIONNER le nom DE L'employé COMMANDER PAR * DESC LIMIT 10 ORDER BY * ne fonctionne de bout en bout que lorsque la valeur "measure_by" est définie pour l'entité dans l'interface utilisateur
Fonctions d'agrégation
  • NOMBRE
  • VALEUR DISTINCTE
  • AVG
  • SOMME
  • MIN
  • MAX
SÉLECTIONNER AVG(sal) de l'employé L'instruction OMRQL ne peut contenir DISTINCT que si l'énoncé contient ce mot ou un synonyme de langage naturel tel que différent ou unique.
Regroupement
  • GROUPE PAR
SELECT location, AVG(Employees.salary) FROM Department GROUP BY location La clause FROM doit contenir l'entité à laquelle appartient l'attribut de regroupement
Regroupement par entité GROUPE PAR * SELECT *, MAX(Employees.salary) DU GROUPE DE DOMAINE PAR *

Note : Regroupement par entité dans la clause From (le système dorsal convertit Regrouper par * en Regrouper par la clé primaire de l'entité racine)

 
Regroupement et filtrage AYANT SÉLECTIONNEZ l'emplacement DU GROUPE DE SERVICES PAR emplacement AVG(Employees.salary) < 4000  
Opérateurs de comparaison
  • =
  • !=
  • <>
  • >
  • >=
  • <
  • <=
  • Comme
  • NON SIMILAIRE À
  • ENTRE
  • IN
  • PAS DANS
SELECT * from Department WHERE name IN ('Ventes', 'HR') Pour les opérateurs >, >=, < et <=, l'énoncé doit contenir un synonyme de langage naturel équivalent, par exemple supérieur à, au moins, inférieur à et au plus.

Si l'énoncé ne contient pas de synonyme opérateur, l'instruction OMRQL doit contenir =.

L'instruction OMRQL ne peut contenir LIKE que si l'énoncé contient ce mot ou un synonyme de langage naturel tel qu'inclue, contient ou sous-chaîne.

L'OMRQL ne peut contenir ENTRE que si l'énoncé contient ce mot ou un synonyme de langage naturel tel que dans l'intervalle de valeurs.

Opérateurs logiques
  • AND
  • OR
  • NOT
SELECT name FROM Employee WHERE salary > 10000 AND role = 'VP' (Sélectionner le nom de l'employé WHERE salaire > 10000 ET rôle = 'VP') Aucune.

Toutes les valeurs de l'instruction OMRQL doivent correspondre exactement à la valeur et au format de la base de données. Prenons, par exemple, l'énoncé "qui est l'employé dont le nom est Jones". Si les valeurs de la base de données pour l'attribut de nom sont toutes des lettres majuscules, la valeur du nom doit également être toutes les lettres majuscules. Il s'agit de "SELECT * FROM Emp WHERE name = 'JONES'".

Lorsque l'énoncé que vous mappez utilise un synonyme pour la valeur réelle de la base de données, ce synonyme doit être défini pour la valeur de la liste de valeurs et OMRQL doit utiliser la valeur réelle de la base de données. Par exemple, si l'énoncé est "Afficher le service dont l'emplacement est la grande pomme", alors "grande pomme" doit être défini dans la liste de valeurs dept_loc comme synonyme de la valeur "NEW YORK", et l'OMRQL doit être "SELECT * FROM Dept WHERE loc = 'NEW YORK'".

Voici quelques exemples de la façon d'écrire OMRQL pour vos énoncés :

Énoncé SQL OMRQL Commentaires
Montrez-moi tous les employés qui travaillent comme commis SELECT * FROM Emp WHERE job = 'CLERK' SELECT * FROM Emp WHERE job = 'CLERK' OMRQL est identique à SQL.
Montrez-moi le nombre d'employés qui travaillent au service des ventes SELECT 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' Au lieu d'une jointure, utilisez "link_attribute.attribute_name" pour faire référence à un attribut d'une autre entité.
Adams est membre de quel département? SELECT * FROM Dept AS T1 JOIN Emp AS T2 ON T1.deptno = T2.deptno WHERE T2.ename = 'Adams' SELECT * FROM Dept WHERE emp.ename = 'ADAMS' Au lieu d'une jointure, utilisez "link_attribute.attribute_name" pour faire référence à un attribut d'une autre entité.
Quel est l'emplacement du service et le rôle professionnel de l'employé Adams? SÉLECTIONNEZ T1. EMPLACEMENT, T2. JOB FROM DEPT T1 REJOINDRE EMP T2 SUR T1. NUMÉRO DE SERVICE = T2. NUMÉRO DE SERVICE OÙ T2. NOM = 'ADAMS' SELECT loc, emp.job FROM Dept WHERE emp.ename = 'ADAMS' Notez que l'instruction OMRQL est plus simple à écrire que l'instruction SQL.
Combien d'employés y a-t-il pour chaque rôle professionnel? SELECT COUNT(*), job FROM EM GROUP BY job SELECT COUNT(*), job FROM EM GROUP BY job OMRQL est identique à SQL.
Quel employé a le salaire le plus élevé? SÉLECTIONNER * DE LA COMMANDE DE L'employé PAR salaire DESC LIMIT 1 SÉLECTIONNER * DE LA COMMANDE DE L'employé PAR salaire DESC LIMIT 1 OMRQL est identique à SQL.
Afficher le nom de l'employé et le nom du service triés par salaire dans l'ordre croissant SELECT 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 Notez que l'instruction OMRQL est plus simple à écrire que l'instruction SQL.
Nombre d'employés dans chaque emplacement SELECT COUNT(*), loc FROM Emp AS T1 JOIN Dept AS T2 ON T1.deptno = T2.deptno GROUP BY T2.loc SÉLECTIONNEZ loc, COUNT(emp) de Dept GROUP BY loc Avec GROUP BY, lorsque nous comptons une entité liée, nous utilisons une nouvelle syntaxe COUNT(LINK) au lieu de COUNT(*). Cela rend OMRQL plus lisible que SQL.
Voir les emplacements avec un salaire moyen d'au moins 40000 SELECT T2.name FROM Emp AS T1 JOIN Dept AS T2 ON T1.deptno = T2.deptno GROUP BY T2.name HAVING AVG(T1.sal) >= 40000 SELECT loc from Dept GROUP BY loc HAVING AVG(emp.sal) <= 40000 Exemple de clause GROUP BY avec HAVING.
Salaire moyen des employés de chaque service SELECT AVG(T1.sal), T2.dno FROM Emp AS T1 JOIN Dept AS T2 ON T1.deptno = T2.deptno GROUP BY T2.dno SÉLECTIONNEZ *, AVG(sal) de Dept GROUP BY * L'objectif ici est de regrouper par attribut unique dans l'entité "department". La clé primaire est le candidat le plus approprié, mais l'affichage de la clé primaire peut ne pas toujours être utile.

Dans OMRL, nous regroupons plutôt par *. Le serveur dorsal sera regroupé par clé primaire et affichera également les attributs minimum de l'entité pour rendre le résultat plus convivial

Afficher l'emplacement et le salaire minimum des employés pour chaque service SELECT 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) de Dept GROUP BY *, loc Ici, nous voulons toujours grouper par entité de service, mais l'énoncé demande également spécifiquement d'afficher l'emplacement des services. Notez que les deux clauses SELECT et GROUP BY ont un * et les attributs d'affichage demandés.
Voir le nom et l'emplacement du service ayant le salaire moyen le plus élevé SÉLECTIONNEZ 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 *, nom, loc de Dept GROUP BY *, nom, loc ORDER BY AVG(emp.sal) LIMITE 1 Un autre exemple de regroupement par entité, et d'affichage des attributs demandés, cette fois avec ORDER BY LIMIT 1
Afficher les 10 premiers employés SELECT * de Emp ORDER BY note LIMIT 10 SÉLECTIONNER * de l'Emp COMMANDEZ PAR * LIMITE 10 En supposant que les "meilleurs employés" impliquent que leur notation soit ordonnée, la notation sera définie comme l'attribut "measure_by" pour l'entité Emp

Lier les attributs

À l'exception des entités liées, les composants OMRQL sont similaires à SQL. Au lieu d'une jointure SQL, vous utilisez une paire d'attributs de lien pour lier une entité à une autre. L'attribut Link contient des noms principaux et des synonymes qui définissent la relation entre les entités. Par exemple, un lien d'attribut employé/service avec une relation 1-1 peut avoir un nom principal "service" et des synonymes "fonctionne dans", "appartient à" et "équipe". Un lien d'attribut de service/employés avec une relation de 1 à plusieurs peut avoir un nom principal "employés" et des synonymes "membres" et "travailleurs".

Outre les attributs typiques de lien de clé primaire/clé étrangère, vous pouvez également avoir les types d'attributs de lien suivants :

  • Plusieurs attributs de lien d'une entité à une autre qui définissent plusieurs relations sémantiques.
  • Attribut de lien d'une entité vers elle-même qui implique une auto-jointure.
  • Attribut de lien pour une table d'intersection en raison d'une jointure plusieurs à plusieurs