Podmíněná kognitivní dovednost

Podmíněná dovednost umožňuje scénářům Azure AI Search, které vyžadují logickou operaci k určení dat, která se mají přiřadit k výstupu. Mezi tyto scénáře patří filtrování, přiřazení výchozí hodnoty a sloučení dat na základě podmínky.

Následující pseudokód ukazuje, co podmíněná dovednost dosahuje:

if (condition) 
    { output = whenTrue } 
else 
    { output = whenFalse } 

Poznámka:

Tato dovednost není vázána na služby Azure AI. Je nefakturovatelný a nemá žádný klíčový požadavek na služby Azure AI.

@odata.type

Microsoft.Skills.Util.ConditionalSkill

Vyhodnocená pole

Tato dovednost je zvláštní, protože její vstupy se vyhodnocují pole.

Následující položky jsou platné hodnoty výrazu:

  • Cesty poznámek (cesty ve výrazech musí být oddělené znakem $(" a ")).
    Příklady:

        "= $(/document)"
        "= $(/document/content)"
    
  • Literály (řetězce, čísla, true, false, null)
    Příklady:

       "= 'this is a string'"   // string (note the single quotation marks)
       "= 34"                   // number
       "= true"                 // Boolean
       "= null"                 // null value
    
  • Výrazy, které používají relační operátory (==, !=, >=, >= <, <)
    Příklady:

        "= $(/document/language) == 'en'"
        "= $(/document/sentiment) >= 0.5"
    
  • Výrazy, které používají logické operátory (&, ||, !, ^)
    Příklady:

        "= $(/document/language) == 'en' && $(/document/sentiment) > 0.5"
        "= !true"
    
  • Výrazy, které používají číselné operátory (+, -, *, /, %)
    Příklady:

        "= $(/document/sentiment) + 0.5"         // addition
        "= $(/document/totalValue) * 1.10"       // multiplication
        "= $(/document/lengthInMeters) / 0.3049" // division
    

Vzhledem k tomu, že podmíněná dovednost podporuje hodnocení, můžete ji použít ve scénářích menších transformací. Podívejte se například na definici dovednosti 4.

Vstupy dovedností

Vstupy rozlišují malá a velká písmena.

Vstup Popis
condition Tento vstup je vyhodnocené pole , které představuje podmínku k vyhodnocení. Tato podmínka by se měla vyhodnotit na logickou hodnotu (true nebo false).
Příklady:
"= true"
"= $(/document/language) =='fr'"
"= $(/document/pages/*/language) == $(/document/expectedLanguage)"
whenTrue Tento vstup je vyhodnocené pole , které představuje hodnotu, která se má vrátit, pokud je podmínka vyhodnocena jako true. Řetězce konstant by měly být vráceny v jednoduchých uvozovkách (' a ').
Ukázkové hodnoty:
"= 'contract'"
"= $(/document/contractType)"
"= $(/document/entities/*)"
whenFalse Tento vstup je vyhodnocené pole , které představuje hodnotu, která se má vrátit, pokud je podmínka vyhodnocena jako nepravda.
Ukázkové hodnoty:
"= 'contract'"
"= $(/document/contractType)"
"= $(/document/entities/*)"

Výstupy dovedností

Existuje jeden výstup, který se jednoduše nazývá "výstup". Vrátí hodnotu whenFalse if the condition is false or whenTrue if the condition is true.

Příklady

Definice ukázkové dovednosti 1: Filtrování dokumentů pro vrácení pouze francouzských dokumentů

Následující výstup vrátí pole vět ("/document/frenchSentences"), pokud je jazyk dokumentu francouzština. Pokud jazyk není francouzština, je hodnota nastavená na hodnotu 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" } ]
}

Pokud se jako kontext jiné dovednosti používá /document/frenchSentences, spustí se tato dovednost pouze v případě, že parametr /document/frenchSentences není nastaven na hodnotu null.

Definice ukázkové dovednosti 2: Nastavení výchozí hodnoty pro hodnotu, která neexistuje

Následující výstup vytvoří poznámku (/document/languageWithDefault), která je nastavená na jazyk dokumentu nebo na "es", pokud jazyk není nastavený.

{
    "@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" } ]
}

Definice ukázkové dovednosti 3: Sloučení hodnot ze dvou polí do jednoho

V tomto příkladu mají některé věty vlastnost frenchSentiment . Kdykoli je vlastnost frenchSentiment null, chceme použít hodnotu englishSentiment . Výstup přiřadíme členovi, kterému se říká mínění (/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" } ]
}

Příklad transformace

Definice ukázkové dovednosti 4: Transformace dat v jednom poli

V tomto příkladu obdržíme mínění , které je mezi 0 a 1. Chceme ho transformovat tak, aby byla mezi -1 a 1. K této menší transformaci můžeme použít podmíněnou dovednost.

V tomto příkladu nepoužíváme podmíněný aspekt dovednosti, protože podmínka je vždy pravdivá.

{
    "@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" } ]
}

Speciální předpoklady

Některé parametry se vyhodnocují, takže musíte být opatrní zejména při sledování zdokumentovaného vzoru. Výrazy musí začínat symbolem rovná se. Cesta musí být oddělena "$(" a ")". Nezapomeňte vložit řetězce do jednoduchých uvozovek. To pomáhá vyhodnocovače rozlišovat mezi řetězci a skutečnými cestami a operátory. Nezapomeňte také umístit prázdné znaky kolem operátorů (například "*" v cestě znamená něco jiného než násobení).

Další kroky