Compétence cognitive conditionnelle
La compétence conditionnelle permet des scénarios de Recherche Azure AI qui nécessitent une opération booléenne pour déterminer les données à affecter à une sortie. Ces scénarios incluent le filtrage, l’attribution d’une valeur par défaut et la fusion de données selon une condition.
Le pseudo-code suivant illustre ce que réalise la compétence conditionnelle :
if (condition)
{ output = whenTrue }
else
{ output = whenFalse }
Remarque
Cette compétence n’est pas liée aux services Azure AI. Elle n’est pas facturable et aucune clé Azure AI services n’est requise.
@odata.type
Microsoft.Skills.Util.ConditionalSkill
Champs évalués
Cette compétence est spéciale, car ses entrées sont des champs évalués.
Les éléments suivants sont des valeurs valides d’une expression :
Chemins d’accès d’annotation (les chemins d’accès dans les expressions doivent être délimités par "$(" et ")").
Exemples :"= $(/document)" "= $(/document/content)"
Littéraux (chaînes, nombres, true, false, null)
Exemples :"= 'this is a string'" // string (note the single quotation marks) "= 34" // number "= true" // Boolean "= null" // null value
Expressions qui utilisent des opérateurs de comparaison (==, !=, >=, >, <=, <)
Exemples :"= $(/document/language) == 'en'" "= $(/document/sentiment) >= 0.5"
Expressions qui utilisent des opérateurs booléens (&>, ||, !, ^)
Exemples :"= $(/document/language) == 'en' && $(/document/sentiment) > 0.5" "= !true"
Expressions qui utilisent des opérateurs numériques (+, -, *, /, %)
Exemples :"= $(/document/sentiment) + 0.5" // addition "= $(/document/totalValue) * 1.10" // multiplication "= $(/document/lengthInMeters) / 0.3049" // division
Étant donné que la compétence conditionnelle prend en charge l’évaluation, vous pouvez l’utiliser dans les scénarios de transformation mineure. Pour obtenir un exemple, consultez la section Définition de compétence 4.
Entrées de la compétence
Les entrées respectent la casse.
Input | Description |
---|---|
Condition | Cette entrée est un champ évalué qui représente la condition à évaluer. Cette condition doit être évaluée selon une valeur booléenne (true ou false). Exemples : "= true" "= $(/document/language) =='fr'" "= $(/document/pages/*/language) == $(/document/expectedLanguage)" |
whenTrue | Cette entrée est un champ évalué qui représente la valeur à renvoyer si la condition est évaluée sur true. Les chaînes constantes doivent être renvoyées entre guillemets simples (' et '). Exemples de valeurs : "= 'contract'" "= $(/document/contractType)" "= $(/document/entities/*)" |
whenFalse | Cette entrée est un champ évalué qui représente la valeur à renvoyer si la condition est évaluée sur false. Exemples de valeurs : "= 'contract'" "= $(/document/contractType)" "= $(/document/entities/*)" |
Sorties de la compétence
Il existe une seule sortie appelée « sortie ». Elle renvoie la valeur whenFalse si la condition est false ou whenTrue si la condition est true.
Exemples
Exemple de définition de compétence 1 : Filtrer les documents pour retourner uniquement les documents français
La sortie suivante renvoie un tableau de phrases ("/document/frenchSentences") si la langue du document est le français. Si la langue n’est pas le français, la valeur est définie sur null.
{
"@odata.type": "#Microsoft.Skills.Util.ConditionalSkill",
"context": "/document",
"inputs": [
{ "name": "condition", "source": "= $(/document/language) == 'fr'" },
{ "name": "whenTrue", "source": "/document/sentences" },
{ "name": "whenFalse", "source": "= null" }
],
"outputs": [ { "name": "output", "targetName": "frenchSentences" } ]
}
Si "/document/frenchSentences" est utilisé comme contexte d’une autre compétence, cette compétence s’exécute uniquement si "/document/frenchSentences" n’est pas défini sur null.
Exemple de définition de compétence 2 : Définir une valeur par défaut pour une valeur qui n’existe pas
La sortie suivante crée une annotation ("/document/languageWithDefault") qui est définie sur la langue du document ou sur "es" si la langue n’est pas définie.
{
"@odata.type": "#Microsoft.Skills.Util.ConditionalSkill",
"context": "/document",
"inputs": [
{ "name": "condition", "source": "= $(/document/language) == null" },
{ "name": "whenTrue", "source": "= 'es'" },
{ "name": "whenFalse", "source": "= $(/document/language)" }
],
"outputs": [ { "name": "output", "targetName": "languageWithDefault" } ]
}
Exemple de définition de compétence 3 : Fusionner les valeurs de deux champs en une seule
Dans cet exemple, certaines phrases ont une propriété frenchSentiment. Chaque fois que la propriété frenchSentiment est null, nous souhaitons utiliser la valeur englishSentiment. Nous affectons la sortie à un membre qui est appelé sentiment (« /document/sentences/*/sentiment »).
{
"@odata.type": "#Microsoft.Skills.Util.ConditionalSkill",
"context": "/document/sentences/*",
"inputs": [
{ "name": "condition", "source": "= $(/document/sentences/*/frenchSentiment) == null" },
{ "name": "whenTrue", "source": "/document/sentences/*/englishSentiment" },
{ "name": "whenFalse", "source": "/document/sentences/*/frenchSentiment" }
],
"outputs": [ { "name": "output", "targetName": "sentiment" } ]
}
Exemple de transformation
Exemple de définition de compétence 4 : Transformation de données sur un seul champ
Dans cet exemple, nous recevons un sentiment compris entre 0 et 1. Nous voulons le transformer pour qu’il soit compris entre -1 et 1. Nous pouvons utiliser la compétence conditionnelle pour effectuer cette transformation mineure.
Dans cet exemple, nous n’utilisons pas l’aspect conditionnel de la compétence, car la condition est toujours true.
{
"@odata.type": "#Microsoft.Skills.Util.ConditionalSkill",
"context": "/document/sentences/*",
"inputs": [
{ "name": "condition", "source": "= true" },
{ "name": "whenTrue", "source": "= $(/document/sentences/*/sentiment) * 2 - 1" },
{ "name": "whenFalse", "source": "= 0" }
],
"outputs": [ { "name": "output", "targetName": "normalizedSentiment" } ]
}
Considérations spéciales
Certains paramètres sont évalués. Vous devez donc suivre le modèle documenté avec une attention particulière. Les expressions doivent commencer par un signe égal. Un chemin d’accès doit être délimité par "$(" et ")". Veillez à placer les chaînes entre guillemets simples. Ceci aide l’évaluateur à faire la distinction entre les chaînes et les opérateurs et chemins d’accès réels. En outre, assurez-vous d’ajouter un espace blanc autour des opérateurs (par exemple, un "*" dans un chemin d’accès signifie autre chose qu’une multiplication).