Kontext dovedností a jazyk pro zadávání poznámek

Tento článek je referenční dokumentace pro kontext dovedností a syntaxi vstupu. Jedná se o úplný popis jazyka výrazů, který slouží k vytváření cest k uzlům v rozšířeném dokumentu.

Dovednosti Azure AI Search můžou využívat a rozšiřovat data pocházející ze zdroje dat a z výstupu dalších dovedností. Pracovní sada dat, která představuje aktuální stav práce indexeru pro aktuální dokument, začíná z nezpracovaných dat pocházejících ze zdroje dat a postupně se rozšiřuje o výstupní data jednotlivých dovedností. Tato data jsou interně uspořádaná ve stromové struktuře, která se dá dotazovat, aby se použila jako vstupy dovedností nebo aby se přidala do indexu. Uzly ve stromu mohou být jednoduché hodnoty, jako jsou řetězce a čísla, pole nebo složité objekty a dokonce binární soubory. Dokonce i jednoduché hodnoty lze rozšířit dalšími strukturovanými informacemi. Řetězec může být například opatřen poznámkami s dalšími informacemi, které jsou pod ním uloženy ve stromu rozšiřování. Výrazy používané k dotazování na tuto interní strukturu používají bohatou syntaxi, která je podrobně popsána v tomto článku. Rozšířenou datovou strukturu je možné zkontrolovat z ladicích relací. Výrazy dotazující se na strukturu je možné testovat také z ladicích relací.

V tomto článku použijeme jako příklad následující rozšířená data. Tato data jsou typická pro typ struktury, kterou byste získali při rozšiřování dokumentu pomocí sady dovedností pomocí OCR, extrakce klíčových frází, překladu textu, rozpoznávání jazyka, dovedností rozpoznávání entit a vlastní dovednosti tokenizátoru.

Cesta Hodnota
document
merged_content "Studie BMN 110 u pediatrických pacientů"...
  keyphrases
   [0] "Studie BMN"
   [1] "Syndrom"
   [2] "Pediatrii pacienti"
   ...
  locations
   [0] "IVA"
  translated_text "Étude de BMN 110 chez les patients pédiatriques"...
  entities
   [0]
    category "Organizace"
    subcategory null
    confidenceScore 0,72
    length 3
    offset 9
    text "BMN"
   ...
  organizations
   [0] "BMN"
  language "en"
normalized_images
  [0]
   layoutText ...
   text
    words
     [0] "Studie"
     [1] "of"
     [2] "BMN"
     [3] "110"
     ...
  [1]
   layoutText ...
   text
    words
     [0] "it"
     [1] "is"
     [2] "Jistě"
     ...
    ...
  ...

Kořenový adresář dokumentu

Všechna data jsou pod jedním kořenovým prvkem, pro který je "/document"cesta . Kořenový prvek je výchozím kontextem dovedností.

Jednoduché cesty

Jednoduché cesty prostřednictvím interního rozšířeného dokumentu lze vyjádřit jednoduchými tokeny oddělenými lomítky. Tato syntaxe se podobá specifikaci ukazatele JSON.

Vlastnosti objektu

Vlastnosti uzlů, které představují objekty, přidávají své hodnoty do stromu pod názvem vlastnosti. Tyto hodnoty lze získat připojením názvu vlastnosti jako tokenu odděleného lomítkem:

Výraz Hodnota
/document/merged_content/language "en"

U tokenů názvů vlastností se rozlišují malá a velká písmena.

Index položky pole

Na konkrétní prvky pole lze odkazovat pomocí jejich číselného indexu, jako je název vlastnosti:

Výraz Hodnota
/document/merged_content/keyphrases/1 "Syndrome"
/document/merged_content/entities/0/text "BMN"

Řídicí sekvence

Existují dva znaky, které mají zvláštní význam a musí být ucházené, pokud se objeví ve výrazu a musí být interpretovány tak, jak je, nikoli jako jejich zvláštní význam: '/' a '~'. Tyto znaky musí být uchycené jako '~0' a '~1'.

Výčet polí

Pole hodnot lze získat pomocí tokenu '*' :

Výraz Hodnota
/document/normalized_images/0/text/words/* ["Study", "of", "BMN", "110" ...]

Token '*' nemusí být na konci cesty. Je možné vytvořit výčet všech uzlů odpovídající cestě s hvězdičkou uprostřed nebo několika hvězdičkami:

Výraz Hodnota
/document/normalized_images/*/text/words/* ["Study", "of", "BMN", "110" ... "it", "is", "certainly" ...]

Tento příklad vrátí plochý seznam všech odpovídajících uzlů.

Je možné zachovat větší strukturu a získat samostatné pole pro slova každé stránky pomocí '#' tokenu místo druhého '*' tokenu:

Výraz Hodnota
/document/normalized_images/*/text/words/# [["Study", "of", "BMN", "110" ...], ["it", "is", "certainly" ...] ...]

Token '#' vyjadřuje, že pole by mělo být považováno za jednu hodnotu, nikoli jako výčet.

Výčet polí v kontextu

Často je užitečné zpracovat každý prvek pole izolovaně a mít pro každý z nich jinou sadu vstupů dovedností a výstupů. To lze provést nastavením kontextu dovednosti na výčet místo výchozího "/document".

V následujícím příkladu použijeme jeden ze vstupních výrazů, které jsme použili dříve, ale s jiným kontextem, který změní výslednou hodnotu.

Kontext Výraz Hodnoty
/document/normalized_images/* /document/normalized_images/*/text/words/* ["Study", "of", "BMN", "110" ...]
["it", "is", "certainly" ...]
...

Pro tuto kombinaci kontextu a vstupu se dovednost provede jednou pro každý normalizovaný obrázek: jednou pro "/document/normalized_images/0" a jednou pro "/document/normalized_images/1". Dva vstupní hodnoty odpovídající jednotlivým spuštěním dovedností jsou podrobně popsány ve sloupci hodnot.

Při vytváření výčtu pole v kontextu se do dokumentu přidají také všechny výstupy, které dovednost produkuje, jako rozšíření kontextu. Ve výše uvedeném příkladu bude mít výstup "out" své hodnoty pro každé spuštění přidané do dokumentu v uvedeném pořadí "/document/normalized_images/0/out" a "/document/normalized_images/1/out".

Hodnoty literálů

Vstupy dovedností mohou jako vstupy přijímat literály místo dynamických hodnot dotazovaných z existujícího dokumentu. Toho lze dosáhnout předponou hodnoty symbolem rovná se. Hodnoty můžou být čísla, řetězce nebo logická hodnota. Řetězcové hodnoty mohou být uzavřeny v jednoduchých ' nebo dvojitých " uvozovkách.

Výraz Hodnota
=42 42
=2.45E-4 0.000245
="some string" "some string"
='some other string' "some other string"
="unicod\u0065" "unicode"
=false false

Složené výrazy

Hodnoty je možné kombinovat pomocí unárních, binárních a ternárních operátorů. Operátory mohou kombinovat hodnoty literálů a hodnoty vyplývající z vyhodnocení cesty. Při použití uvnitř výrazu by měly být cesty uzavřeny mezi "$(" a ")".

Logická hodnota není '!'

Výraz Hodnota
=!false true

Negativní '-'

Výraz Hodnota
=-42 -42
=-$(/document/merged_content/entities/0/offset) -9

Kromě toho '+'

Výraz Hodnota
=2+2 4
=2+$(/document/merged_content/entities/0/offset) 11

Odčítání '-'

Výraz Hodnota
=2-1 1
=$(/document/merged_content/entities/0/offset)-2 7

Násobení '*'

Výraz Hodnota
=2*3 6
=$(/document/merged_content/entities/0/offset)*2 18

Divize '/'

Výraz Hodnota
=3/2 1.5
=$(/document/merged_content/entities/0/offset)/3 3

Modulo '%'

Výraz Hodnota
=15%4 3
=$(/document/merged_content/entities/0/offset)%2 1

Menší než, menší než nebo rovno, větší než a větší než nebo rovno '<''<=''>''>='

Výraz Hodnota
=15<4 false
=4<=4 true
=15>4 true
=1>=2 false

Rovnost a nerovnost '==''!='

Výraz Hodnota
=15==4 false
=4==4 true
=15!=4 true
=1!=1 false

Logické operace a nebo výhradní nebo '&&''||''^'

Výraz Hodnota
=true&&true true
=true&&false false
=true||true true
=true||false true
=false||false false
=true^false true
=true^true false

Ternární operátor '?:'

Je možné zadat různé hodnoty na základě vyhodnocení logického výrazu pomocí ternárního operátoru.

Výraz Hodnota
=true?"true":"false" "true"
=$(/document/merged_content/entities/0/offset)==9?"nine":"not nine" "nine"

Priorita závorek a operátorů

Operátory se vyhodnocují s prioritami, které odpovídají obvyklým konvencím: unární operátory, pak násobení, dělení a modulo, následné sčítání a odčítání, pak porovnání, pak rovnost a logické operátory. Platí také běžná pravidla asociativity.

Závorky lze použít ke změně nebo nejednoznačnosti pořadí vyhodnocení.

Výraz Hodnota
=3*2+5 11
=3*(2+5) 21

Viz také