Habilidade cognitiva condicional
A habilidade Condicional habilita cenários de Pesquisa de IA do Azure que exigem uma operação booleana 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 pseudocódigo a seguir demonstra o que a habilidade condicional realiza:
if (condition)
{ output = whenTrue }
else
{ output = whenFalse }
Nota
Essa habilidade não está vinculada aos serviços de IA do Azure. Ele não é faturável e não tem nenhum requisito de chave de serviços de IA do Azure.
@odata.type
Microsoft.Skills.Util.ConditionalSkill
Campos avaliados
Esta habilidade é especial porque seus insumos 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 (strings, numbers, true, false, null)
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 oferece suporte à avaliação, você pode usá-la em cenários de pequenas transformações. Por exemplo, veja a definição de habilidade 4.
Contributos para as competências
As entradas diferenciam maiúsculas de minúsculas.
Entrada | Description |
---|---|
condição | Esta entrada é um campo avaliado que representa a condição a avaliar. Esta condição deve ser avaliada para um valor booleano (verdadeiro ou falso). Exemplos: "= verdadeiro" "= $(/documento/idioma) =='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 constantes devem ser retornadas entre aspas simples (' e '). Valores de amostra: "= 'contrato'" "= $(/documento/contractType)" "= $(/documento/entidades/*)" |
whenFalse | Esta entrada é um campo avaliado que representa o valor a ser retornado se a condição for avaliada como false. Valores de amostra: "= 'contrato'" "= $(/documento/contractType)" "= $(/documento/entidades/*)" |
Resultados em termos de competências
Há uma única saída que é simplesmente chamada de "saída". Ele retorna o valor whenFalse se a condição for false ou whenTrue se a condição for true.
Exemplos
Definição de habilidade de exemplo 1: Filtrar documentos para retornar apenas documentos franceses
A saída a seguir retorna uma matriz de frases ("/document/frenchSentences") se o idioma do documento for francês. Se o idioma não for francês, o valor será definido como 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" for usado como contexto de outra habilidade, essa habilidade só será executada se "/document/frenchSentences" não estiver definido como null.
Definição de habilidade de exemplo 2: defina um valor padrão para um valor que não existe
A saída a seguir cria uma anotação ("/document/languageWithDefault") que é 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" } ]
}
Definição de habilidade de exemplo 3: Mesclar valores de dois campos em um
Neste exemplo, algumas frases têm uma propriedade frenchSentiment . Sempre que a propriedade frenchSentiment for null, queremos usar 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
Definição de habilidade de exemplo 4: Transformação de dados em um único campo
Neste exemplo, recebemos um sentimento entre 0 e 1. Queremos transformá-lo para ficar entre -1 e 1. Podemos usar a habilidade condicional para fazer essa pequena transformação.
Neste exemplo, não usamos o aspeto condicional da habilidade porque a condição é sempre verdadeira.
{
"@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, então você precisa ter um cuidado especial para seguir o padrão documentado. As expressões devem começar com um sinal de igual. Um caminho deve ser delimitado por "$(" e ")". Certifique-se de colocar cadeias de caracteres entre aspas simples. Isso ajuda o avaliador a distinguir entre cadeias de caracteres e caminhos e operadores reais. Além disso, certifique-se de colocar espaço em branco ao redor dos operadores (por exemplo, um "*" em um caminho significa algo diferente de multiplicar).