Habilidade cognitiva condicional
A habilidade Condicional permite cenários da Pesquisa de IA do Azure que exigem uma operação Booliana para determinar os dados a serem atribuídos a uma saída. Esses cenários incluem filtragem, atribuição de um valor padrão e mesclagem de dados com base em uma condição.
O seguinte pseudocódigo demonstra o que a habilidade condicional realiza:
if (condition)
{ output = whenTrue }
else
{ output = whenFalse }
Observação
Essa habilidade não está associada aos serviços de IA do Azure. Ele não é faturável e não tem requisito de chave dos serviços de IA do Azure.
@odata.type
Microsoft.Skills.Util.ConditionalSkill
Campos avaliados
Essa habilidade é especial porque suas entradas são campos avaliados.
Os seguintes itens são valores válidos de uma expressão:
Caminhos de anotação (caminhos em expressões devem ser delimitados por "$(" e ")")
Exemplos:"= $(/document)" "= $(/document/content)"
Literais (cadeias de caracteres, números, true, false, nulo)
Exemplos:"= 'this is a string'" // string (note the single quotation marks) "= 34" // number "= true" // Boolean "= null" // null value
Expressões que usam operadores de comparação (==, !=, >=, >, <=, <)
Exemplos:"= $(/document/language) == 'en'" "= $(/document/sentiment) >= 0.5"
Expressões que usam operadores booleanos (&&, ||, !, ^)
Exemplos:"= $(/document/language) == 'en' && $(/document/sentiment) > 0.5" "= !true"
Expressões que usam operadores numéricos (+, -, *, /, %)
Exemplos:"= $(/document/sentiment) + 0.5" // addition "= $(/document/totalValue) * 1.10" // multiplication "= $(/document/lengthInMeters) / 0.3049" // division
Como a habilidade condicional dá suporte à avaliação, você pode usá-la em cenários de transformação secundária. Por exemplo, confira definição de habilidade 4.
Entradas de habilidades
As entradas diferenciam maiúsculas de minúsculas.
Entrada | Descrição |
---|---|
condition | Esta entrada é um campo avaliado que representa a condição a ser avaliada. Esta condição deve ser avaliada como um valor booliano (true ou false). Exemplos: "= true" "= $(/document/language) =='fr'" "= $(/document/pages/*/language) == $(/document/expectedLanguage)" |
whenTrue | Esta entrada é um campo avaliado que representa o valor a ser retornado se a condição for avaliada como true. As cadeias de caracteres de constantes devem ser retornadas entre aspas simples (' e '). Valores de amostra: "= 'contract'" "= $(/document/contractType)" "= $(/document/entities/*)" |
whenFalse | Esta entrada é um campo avaliado que representa o valor a ser retornado se a condição for avaliada como false. Valores de amostra: "= 'contract'" "= $(/document/contractType)" "= $(/document/entities/*)" |
Saídas de habilidades
Há apenas uma saída que é simplesmente chamada de "saída". Ela retornará o valor whenFalse se a condição for falsa ou whenTrue se a condição for verdadeira.
Exemplos
Exemplo de definição de habilidade 1: filtrar documentos para retornar apenas documentos franceses
A saída a seguir retornará uma matriz de frases ("/document/frenchSentences") se o idioma do documento estiver em francês. Se o idioma não for francês, o valor será definido como nulo.
{
"@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" for usado como o contexto de outra habilidade, essa habilidade só será executada se "/Document/frenchSentences" não estiver definido como nulo.
Exemplo de definição de habilidade 2: definir um valor padrão para um valor que não existe
A saída a seguir criará uma anotação ("/document/languageWithDefault") definida como o idioma do documento ou como "es" se o idioma não estiver definido.
{
"@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" } ]
}
Exemplo de definição de habilidade 3: mesclar valores de dois campos em um
Neste exemplo, algumas frases têm uma propriedade frenchSentiment. Sempre que a propriedade frenchSentiment for nula, usaremos o valor englishSentiment. Atribuímos a saída a um membro chamado sentimento ("/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" } ]
}
Exemplo de transformação
Exemplo de definição de habilidade 4: transformação de dados em um único campo
Neste exemplo, recebemos um sentimento entre 0 e 1. Queremos transformar entre -1 e 1. Podemos usar a habilidade condicional para realizar esta transformação secundária.
Neste exemplo, não usamos o aspecto condicional da habilidade porque a condição é 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" } ]
}
Considerações especiais
Alguns parâmetros são avaliados. Portanto, você precisa ser especialmente cuidadoso para seguir o padrão documentado. As expressões devem começar com um sinal de igual. Um caminho deve ser delimitado por "$(" e ")". Coloque cadeias de caracteres entre aspas simples. Isso ajuda o avaliador a distinguir entre cadeias de caracteres e caminhos e operadores reais. Além disso, coloque espaço em branco em torno de operadores (por exemplo, um "*" em um caminho significa algo diferente de multiplicar).