Partilhar via


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

Próximos passos