Competenza cognitiva condizionale
La competenza condizionale consente scenari di Ricerca di intelligenza artificiale di Azure che richiedono un'operazione booleana per determinare i dati da assegnare a un output. Questi scenari includono il filtro, l'assegnazione di un valore predefinito e l'unione dei dati in base a una condizione.
Lo pseudocodice seguente illustra le operazioni eseguite dalla competenza condizionale:
if (condition)
{ output = whenTrue }
else
{ output = whenFalse }
Nota
Questa competenza non è associata ai servizi di intelligenza artificiale di Azure. Non è fatturabile e non ha requisiti chiave per i servizi di intelligenza artificiale di Azure.
@odata.type
Microsoft.Skills.Util.ConditionalSkill
Campi valutati
Questa competenza è speciale perché i relativi input vengono valutati.
Gli elementi seguenti sono valori validi di un'espressione:
Percorsi di annotazione (i percorsi nelle espressioni devono essere delimitati da "$(" e ")")
Esempi:"= $(/document)" "= $(/document/content)"
Valori letterali (stringhe, numeri, true, false, null)
Esempi:"= 'this is a string'" // string (note the single quotation marks) "= 34" // number "= true" // Boolean "= null" // null value
Espressioni che usano operatori di confronto (==, !=, =, >>, <=, <)
Esempi:"= $(/document/language) == 'en'" "= $(/document/sentiment) >= 0.5"
Espressioni che usano operatori booleani (&&, ||, !, ^)
Esempi:"= $(/document/language) == 'en' && $(/document/sentiment) > 0.5" "= !true"
Espressioni che usano operatori numerici (+, -, *, /, %)
Esempi:"= $(/document/sentiment) + 0.5" // addition "= $(/document/totalValue) * 1.10" // multiplication "= $(/document/lengthInMeters) / 0.3049" // division
Poiché la competenza condizionale supporta la valutazione, è possibile usarla in scenari di trasformazione secondaria. Ad esempio, vedere definizione della competenza 4.
Input competenze
Gli input fanno distinzione tra maiuscole e minuscole.
Input | Descrizione |
---|---|
condizione | Questo input è un campo valutato che rappresenta la condizione da valutare. Questa condizione deve restituire un valore booleano (true o false). Esempi: "= true" "= $(/document/language) =='fr'" "= $(/document/pages/*/language) == $(/document/expectedLanguage)" |
whenTrue | Questo input è un campo valutato che rappresenta il valore da restituire se la condizione viene valutata su true. Le stringhe di costanti devono essere restituite tra virgolette singole (' e '). Valori di esempio: "= 'contract'" "= $(/document/contractType)" "= $(/document/entities/*)" |
whenFalse | Questo input è un campo valutato che rappresenta il valore da restituire se la condizione viene valutata su false. Valori di esempio: "= 'contract'" "= $(/document/contractType)" "= $(/document/entities/*)" |
Output competenze
Esiste un singolo output denominato semplicemente "output". Restituisce il valore quandoFalse se la condizione è false o whenTrue se la condizione è true.
Esempi
Definizione di competenza di esempio 1: Filtrare i documenti per restituire solo documenti francesi
L'output seguente restituisce una matrice di frasi ("/document/frenchSentences") se la lingua del documento è francese. Se la lingua non è francese, il valore viene impostato su 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" } ]
}
Se "/document/frenchSentences" viene usato come contesto di un'altra competenza, tale competenza viene eseguita solo se "/document/frenchSentences" non è impostato su Null.
Definizione della competenza di esempio 2: Impostare un valore predefinito per un valore che non esiste
L'output seguente crea un'annotazione ("/document/languageWithDefault") impostata sulla lingua del documento o su "es" se la lingua non è impostata.
{
"@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" } ]
}
Definizione di competenza di esempio 3: Unire valori da due campi in uno
In questo esempio alcune frasi hanno una proprietà frenchSentiment . Ogni volta che la proprietà frenchSentiment è null, si vuole usare il valore englishSentiment . L'output viene assegnato a un membro denominato 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" } ]
}
Esempio di trasformazione
Definizione della competenza di esempio 4: Trasformazione dei dati in un singolo campo
In questo esempio si riceve un sentiment compreso tra 0 e 1. Vogliamo trasformarlo in modo che sia compreso tra -1 e 1. È possibile usare la competenza condizionale per eseguire questa trasformazione secondaria.
In questo esempio non viene usato l'aspetto condizionale della competenza perché la condizione è sempre 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" } ]
}
Considerazioni speciali
Alcuni parametri vengono valutati, quindi è necessario prestare particolare attenzione a seguire il modello documentato. Le espressioni devono iniziare con un segno di uguale. Un percorso deve essere delimitato da "$(" e ")". Assicurarsi di inserire le stringhe tra virgolette singole. Ciò consente all'analizzatore di distinguere tra stringhe e percorsi e operatori effettivi. Assicurarsi inoltre di inserire spazi vuoti intorno agli operatori (ad esempio, un "*" in un percorso significa qualcosa di diverso rispetto alla moltiplicazione).