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.
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é. |
|
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. |
|
Filtre avec dates |
Lorsque vous filtrez par attribut date ou date-heure, tenez compte des points suivants :
|
|
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é. |
|
Groupement par | Vous pouvez demander différents agrégats après le regroupement par un attribut ou une entité. |
|
Regrouper par et filtrer | Vous pouvez filtrer les attributs ou les entités en fonction des agrégations. |
|
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. |
|
Tutoriel : Introduction aux dialogues SQL
Vous pouvez obtenir un aperçu pratique des dialogues SQL en suivant ce tutoriel :
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 |
|
payment_schedules |
|
fournisseurs |
|
-
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.
-
-
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.
-
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.
-
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.
-
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
etvendors
.À 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 estpayment 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".
-
-
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.
-
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 synonymeoutstanding balance
à cet attribut. -
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. -
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])
. -
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'
. -
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.
-
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.
-
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.
-
-
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
etinvoice_amount
. Ils peuvent également ajouter un attributage
calculé à l'aide de la différence entre la date du jour et la date de la facture. -
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 utiliserdue_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. -
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.
-
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.
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 :
-
Dans Digital Assistant, cliquez sur
pour ouvrir le menu latéral, sur Settings, sur Additional Services et sur l'onglet Data.
-
Cliquez sur + Add Service.
-
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. -
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.
-
Cliquez sur Continuer pour ajouter les détails de la connexion.
-
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.
-
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.)
-
-
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.)
- 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. -
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
-
Dans Digital Assistant, cliquez sur
pour ouvrir le menu latéral, sur Settings, sur Additional Services et sur l'onglet Data.
-
Cliquez sur + Add Service.
-
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. -
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.)
- 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. -
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.
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 :
-
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.
-
Sélectionnez le service de données, puis sélectionnez les tables et les attributs à utiliser dans la compétence.
-
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".
-
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 , 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'attributip_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.
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 :
-
Dans la page Entités, modifiez l'attribut et allez à l'onglet Informations générales.
-
Sélectionnez Entité dans la liste déroulante Type.
-
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.
-
(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.
-
Cliquez sur Appliquer pour enregistrer vos modifications.
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 :
-
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.
-
Sélectionnez l'entité avec l'attribut à associer à l'expression rationnelle, modifiez l'attribut et allez à l'onglet Informations générales.
-
Sélectionnez Entité dans la liste déroulante Type.
-
Dans la liste déroulante Entité référencée, sélectionnez l'entité de l'expression rationnelle.
-
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
etamount_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'attributjob
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'attributmanager
, tels que "Qui est le gestionnaire de l'employé Adam Smith", ainsi que des énoncés qui utilisent le gestionnairejob
, 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 :
-
Si le bouton Entraîner comporte une pastille rouge, cliquez sur
et entraînez-vous à l'aide de Trainer Tm.
-
Dans la page Entités, allez à l'onglet Jeu de données et cliquez sur Entités d'interrogation.
-
Cliquez sur l'onglet Données d'entraînement.
-
Cliquez sur Add Utterance (Ajouter une expression).
La boîte de dialogue Créer une expression s'affiche.
-
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.
-
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.
-
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 :
-
Si le bouton Entraîner comporte un badge rouge, cliquez sur
et entraînez-vous à l'aide de Trainer TM.
-
Dans la page Entités, allez à l'onglet Jeu de données et cliquez sur Entités d'interrogation.
-
Cliquez sur l'onglet Suggestions d'achèvement automatique.
-
Cliquez sur Add Utterance (Ajouter une expression).
La boîte de dialogue Créer une expression s'affiche.
-
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.
-
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.
-
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 :
-
Si le bouton Entraîner comporte un badge rouge, cliquez sur
et entraînez-vous à l'aide de Trainer TM.
-
Dans la page Entités, allez à l'onglet Jeu de données et cliquez sur Entités d'interrogation.
-
Cliquez sur l'onglet Données de routage générées.
-
Cliquez sur Créer.
La boîte de dialogue Générer les données de routage s'affiche.
-
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.
-
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.
-
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. -
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 :
-
Si le bouton Entraîner comporte un badge rouge, cliquez sur
et entraînez-vous à l'aide de Trainer TM.
-
Dans la page Entités, allez à l'onglet Jeu de données et cliquez sur Entités d'interrogation.
-
Cliquez sur l'onglet Données de routage combiné.
-
Cliquez sur Add Utterance (Ajouter une expression).
La boîte de dialogue Créer une expression s'affiche.
-
Entrez l'énoncé, puis cliquez en dehors de la zone de texte.
-
Cliquez sur Continue (Continuer).
-
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.
-
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 :
- Configurer l'affichage du formulaire ou de la table
- Afficher une ou deux sections horizontales dans le formulaire
- Définir le titre des résultats
- Définir l'ordre de tri par défaut d'une entité
- Définir les attributs à inclure lorsqu'ils ne sont pas spécifiés par l'énoncé
- Définir les attributs à inclure systématiquement dans les résultats
- Configurer la taille de page des résultats
- Ajouter des boutons et des liens aux résultats
- Ajouter un attribut personnalisé
- Configurer dynamiquement la présentation à l'aide des programmes de traitement d'événements
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 (
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 l'illustration sql-results-form.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.
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'}
.
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.
-
Dans l'onglet Attributs de la page d'entité, cliquez sur + Ajouter un attribut et indiquez un nom et un type canoniques.
-
Dans l'onglet Langue naturelle, indiquez un nom principal et ajoutez éventuellement des synonymes.
-
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
etdiscount_taken
sont des noms de colonne physiques existants dans la tableinvoices
.- La nouvelle colonne dérivée
amount_to_pay
est la somme des valeurs des colonnes physiquesinvoice_amount
etdiscount_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 (
-
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 attributdue_date
, vous pouvez ajouter un attributdue
avec une préférence future et un attributoverdue
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 (
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 :
-
Ajoutez des synonymes pour une entité ou un attribut. Voir Fournir des données d'entraînement au moyen de noms et de synonymes.
-
Associez un attribut à une liste de valeurs ou ajoutez des articles à une liste de valeurs. Voir Fournir des données de formation au moyen de listes de valeurs.
-
Ajoutez l'énoncé et OMRQL corrigés aux données d'entraînement du jeu de données des entités d'interrogation pour enseigner 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. Voir Fournir des données de formation au moyen d'énoncés.
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 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é. |
|
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. |
|
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. |
|
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é. |
|
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 :
|
Valeur distincte :
Agrégation :
Trier par
|
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 "
|
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 |
|
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
|
Où | 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.
|
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 ". |
|
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
|
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.
|
|
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
|
Ajouter des données d'entraînement personnalisées.
|
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
|
Ajouter des données d'entraînement personnalisées.
|
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) |
|
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.
|
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 |
|
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é. |
|
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
|
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
|
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. |
|
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 |
|
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
|
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
|
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 |
|
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) |
|
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é
|
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
|
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.
|
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 :
-
Dans la page Entités, cliquez sur Tester les interrogations.
Le testeur d'interrogation s'ouvre.
-
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 L'employé | OMRQL ne peut pas nommer les attributs qui ne sont pas référencés dans l'énoncé. |
Filtrage | OÙ | 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 |
|
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 ( |
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 |
|
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 |
|
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 |
|
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 |
|
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