Voorwaardelijke cognitieve vaardigheid
De voorwaardelijke vaardigheid maakt Azure AI Search-scenario's mogelijk waarvoor een Boole-bewerking is vereist om de gegevens te bepalen die moeten worden toegewezen aan een uitvoer. Deze scenario's omvatten filteren, een standaardwaarde toewijzen en gegevens samenvoegen op basis van een voorwaarde.
De volgende pseudocode laat zien wat de voorwaardelijke vaardigheid bereikt:
if (condition)
{ output = whenTrue }
else
{ output = whenFalse }
Notitie
Deze vaardigheid is niet gebonden aan Azure AI-services. Het is niet factureerbaar en heeft geen sleutelvereiste voor Azure AI-services.
@odata.type
Microsoft.Skills.Util.ConditionalSkill
Geëvalueerde velden
Deze vaardigheid is speciaal omdat de invoer velden zijn geëvalueerd.
De volgende items zijn geldige waarden van een expressie:
Annotatiepaden (paden in expressies moeten worden gescheiden door '$(" en "))
Voorbeelden:"= $(/document)" "= $(/document/content)"
Letterlijke waarden (tekenreeksen, getallen, waar, onwaar, null)
Voorbeelden:"= 'this is a string'" // string (note the single quotation marks) "= 34" // number "= true" // Boolean "= null" // null value
Expressies die vergelijkingsoperatoren gebruiken (==, !=, >=, >= <) <
Voorbeelden:"= $(/document/language) == 'en'" "= $(/document/sentiment) >= 0.5"
Expressies die booleaanse operatoren gebruiken (&&, ||, !, ^)
Voorbeelden:"= $(/document/language) == 'en' && $(/document/sentiment) > 0.5" "= !true"
Expressies die gebruikmaken van numerieke operatoren (+, -, *, /, %)
Voorbeelden:"= $(/document/sentiment) + 0.5" // addition "= $(/document/totalValue) * 1.10" // multiplication "= $(/document/lengthInMeters) / 0.3049" // division
Omdat de voorwaardelijke vaardigheid evaluatie ondersteunt, kunt u deze gebruiken in scenario's met secundaire transformaties. Zie bijvoorbeeld vaardigheidsdefinitie 4.
Invoer van vaardigheden
De invoer is hoofdlettergevoelig.
Invoer | Beschrijving |
---|---|
voorwaarde | Deze invoer is een geëvalueerd veld dat de voorwaarde aangeeft die moet worden geëvalueerd. Deze voorwaarde moet resulteren in een Booleaanse waarde (waar of onwaar). Voorbeelden: "= true" "= $(/document/language) =='fr'" "= $(/document/pages/*/language) == $(/document/expectedLanguage)" |
whenTrue | Deze invoer is een geëvalueerd veld dat de waarde aangeeft die moet worden geretourneerd als de voorwaarde waar is. Constanten moeten tussen enkele aanhalingstekens (' en ') worden geretourneerd. Voorbeeldwaarden: "= "contract"" "= $(/document/contractType)" "= $(/document/entiteiten/*)" |
whenFalse | Deze invoer is een geëvalueerd veld dat de waarde aangeeft die moet worden geretourneerd als de voorwaarde wordt geëvalueerd op onwaar. Voorbeeldwaarden: "= "contract"" "= $(/document/contractType)" "= $(/document/entiteiten/*)" |
Uitvoer van vaardigheden
Er is één uitvoer die simpelweg 'uitvoer' wordt genoemd. Deze retourneert de waarde wanneerFalse als de voorwaarde onwaar is of wanneerTrue als de voorwaarde waar is.
Voorbeelden
Voorbeeld van vaardigheidsdefinitie 1: Documenten filteren om alleen Franse documenten te retourneren
De volgende uitvoer retourneert een matrix met zinnen (/document/frenchSentences) als de taal van het document Frans is. Als de taal geen Frans is, wordt de waarde ingesteld op 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" } ]
}
Als '/document/frenchSentences' wordt gebruikt als de context van een andere vaardigheid, wordt die vaardigheid alleen uitgevoerd als '/document/frenchSentences' niet is ingesteld op null.
Voorbeelddefinitie 2: Een standaardwaarde instellen voor een waarde die niet bestaat
In de volgende uitvoer wordt een aantekening (/document/languageWithDefault) gemaakt die is ingesteld op de taal van het document of op 'es' als de taal niet is ingesteld.
{
"@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" } ]
}
Voorbeeld van vaardigheidsdefinitie 3: waarden uit twee velden samenvoegen in één
In dit voorbeeld hebben sommige zinnen een frenchSentiment-eigenschap . Wanneer de eigenschap frenchSentiment null is, willen we de englishSentiment-waarde gebruiken. We wijzen de uitvoer toe aan een lid dat sentiment heet ("/document/zinnen/*/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" } ]
}
Voorbeeld van transformatie
Definitie van voorbeeldvaardigheden 4: Gegevenstransformatie in één veld
In dit voorbeeld ontvangen we een gevoel tussen 0 en 1. We willen deze transformeren tussen -1 en 1. We kunnen de voorwaardelijke vaardigheid gebruiken om deze kleine transformatie uit te voeren.
In dit voorbeeld gebruiken we niet het voorwaardelijke aspect van de vaardigheid, omdat de voorwaarde altijd waar is.
{
"@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" } ]
}
Speciale overwegingen
Sommige parameters worden geëvalueerd, dus u moet vooral voorzichtig zijn om het gedocumenteerde patroon te volgen. Expressies moeten beginnen met een gelijkteken. Een pad moet worden gescheiden door '$(" en ")'. Zorg ervoor dat u tekenreeksen tussen enkele aanhalingstekens plaatst. Dit helpt de evaluator om onderscheid te maken tussen tekenreeksen en werkelijke paden en operators. Zorg er ook voor dat u witruimte rond operators plaatst (bijvoorbeeld een '*' in een pad betekent iets anders dan vermenigvuldigen).