Umiejętności poznawcze warunkowe

Umiejętność warunkowa umożliwia scenariusze usługi Azure AI Search, które wymagają operacji logicznej w celu określenia danych do przypisania do danych wyjściowych. Te scenariusze obejmują filtrowanie, przypisywanie wartości domyślnej i scalanie danych na podstawie warunku.

Poniższy pseudokod demonstruje, co osiąga umiejętność warunkowa:

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

Uwaga

Ta umiejętność nie jest powiązana z usługami azure AI. Nie jest rozliczana i nie ma kluczowego wymagania dotyczącego usług azure AI.

@odata.type

Microsoft.Skills.Util.ConditionalSkill

Pola oceniane

Ta umiejętność jest specjalna, ponieważ jego dane wejściowe są oceniane pola.

Następujące elementy są prawidłowymi wartościami wyrażenia:

  • Ścieżki adnotacji (ścieżki w wyrażeniach muszą być rozdzielane przez "$(" i ")")
    Przykłady:

        "= $(/document)"
        "= $(/document/content)"
    
  • Literały (ciągi, liczby, true, false, null)
    Przykłady:

       "= 'this is a string'"   // string (note the single quotation marks)
       "= 34"                   // number
       "= true"                 // Boolean
       "= null"                 // null value
    
  • Wyrażenia używające operatorów porównania (==, !=, =, >>= , <=, <)
    Przykłady:

        "= $(/document/language) == 'en'"
        "= $(/document/sentiment) >= 0.5"
    
  • Wyrażenia używające operatorów logicznych (&&, ||, !, ^)
    Przykłady:

        "= $(/document/language) == 'en' && $(/document/sentiment) > 0.5"
        "= !true"
    
  • Wyrażenia używające operatorów liczbowych (+, -, *, /, %)
    Przykłady:

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

Ponieważ umiejętności warunkowe obsługują ocenę, można jej używać w scenariuszach przekształcania pomocniczego. Zobacz na przykład definicję umiejętności 4.

Dane wejściowe umiejętności

W danych wejściowych jest rozróżniana wielkość liter.

Dane wejściowe opis
condition Te dane wejściowe to oceniane pole , które reprezentuje warunek do obliczenia. Ten warunek powinien mieć wartość logiczną (prawda lub fałsz).
Przykłady:
"= true"
"= $(/document/language) =='fr'"
"= $(/document/pages/*/language) == $(/document/expectedLanguage)"
whenTrue Te dane wejściowe to pole oceniane, które reprezentuje wartość, która ma zostać zwrócona, jeśli warunek zostanie obliczony na wartość true. Ciągi stałe powinny być zwracane w pojedynczych cudzysłowach (" i ").
Przykładowe wartości:
"= 'contract'"
"= $(/document/contractType)"
"= $(/document/entities/*)"
whenFalse Te dane wejściowe to oceniane pole , które reprezentuje wartość, która ma zostać zwrócona, jeśli warunek zostanie obliczony na wartość false.
Przykładowe wartości:
"= 'contract'"
"= $(/document/contractType)"
"= $(/document/entities/*)"

Dane wyjściowe umiejętności

Istnieje pojedyncze dane wyjściowe, które są po prostu nazywane "danymi wyjściowymi". Zwraca wartość whenFalse, jeśli warunek ma wartość false lub whenTrue, jeśli warunek ma wartość true.

Przykłady

Przykładowa definicja umiejętności 1. Filtrowanie dokumentów w celu zwrócenia tylko dokumentów francuskich

Poniższe dane wyjściowe zwracają tablicę zdań ("/document/frenchSentences"), jeśli język dokumentu jest francuski. Jeśli język nie jest francuski, wartość jest ustawiona na wartość 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" } ]
}

Jeśli element "/document/frenchSentences" jest używany jako kontekst innej umiejętności, ta umiejętność jest uruchamiana tylko wtedy, gdy wartość "/document/frenchSentences" nie jest ustawiona na wartość null.

Przykładowa definicja umiejętności 2: ustaw wartość domyślną dla wartości, która nie istnieje

Poniższe dane wyjściowe tworzą adnotację ("/document/languageWithDefault"), która jest ustawiona na język dokumentu lub na wartość "es", jeśli język nie jest ustawiony.

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

Przykładowa definicja umiejętności 3: scalanie wartości z dwóch pól do jednego

W tym przykładzie niektóre zdania mają właściwość frenchSentiment . Zawsze, gdy właściwość frenchSentiment ma wartość null, chcemy użyć wartości englishSentiment. Przypisujemy dane wyjściowe do elementu członkowskiego o nazwie sentiment ("/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" } ]
}

Przykład przekształcenia

Przykładowa definicja umiejętności 4: Przekształcanie danych w jednym polu

W tym przykładzie otrzymujemy tonację z zakresu od 0 do 1. Chcemy przekształcić go w przedziały od -1 do 1. Aby wykonać tę drobną transformację, możemy użyć umiejętności warunkowych.

W tym przykładzie nie używamy warunkowego aspektu umiejętności, ponieważ warunek jest zawsze spełniony.

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

Specjalne uwagi

Niektóre parametry są oceniane, dlatego należy zachować szczególną ostrożność, aby postępować zgodnie z udokumentowanym wzorcem. Wyrażenia muszą zaczynać się od znaku równości. Ścieżka musi być rozdzielana znakami "$(" i ")". Pamiętaj, aby umieścić ciągi w pojedynczych cudzysłowach. Ułatwia to ewaluatorowi rozróżnienie ciągów i rzeczywistych ścieżek i operatorów. Ponadto pamiętaj, aby umieścić białe znaki wokół operatorów (na przykład znak "*" w ścieżce oznacza coś innego niż mnożenie).

Następne kroki