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).

Próximas etapas