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 a dovedností rozpoznávání entit a také 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 má výstup s názvem "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

V řádcích polí

Pokud určitý vstup dovednosti vyžaduje pole dat, ale data jsou reprezentována jako jedna hodnota v současné době nebo potřebujete zkombinovat více různých jednoduchých hodnot do pole pole, pak můžete vytvořit maticovou hodnotu vloženou jako součást vstupního výrazu dovednosti tak, že zabalíte čárkami oddělený seznam výrazů v hranatých závorkách ([ a ]). Hodnota pole může být kombinací cest výrazů nebo literálových hodnot podle potřeby. Tímto způsobem můžete také vytvořit vnořená pole v rámci polí.

Výraz Hodnota
=['item'] ["item"]
=[$(/document/merged_content/entities/0/text), 'item'] ["BMN", "item"]
=[1, 3, 5] [1, 3, 5]
=[true, true, false] [true, true, false]
=[[$(/document/merged_content/entities/0/text), 'item'],['item2', $(/document/merged_content/keyphrases/1)]] [["BMN", "item"], ["item2", "Syndrom"]]

Pokud má dovednost kontext, který vysvětluje spuštění dovednosti pro vstup pole (to znamená, jak to znamená, že "context": "/document/pages/*" dovednost se spouští jednou za "stránku" v pages) a předání této hodnoty jako výrazu jako vstupu do řádku používá jednu z těchto hodnot najednou.

Příklad s našimi ukázkovými obohacenými daty, pokud je /document/merged_content/keyphrases/* vaše dovednost context a pak vytvoříte vložené pole následujícího =['key phrase', $(/document/merged_content/keyphrases/*)] na vstupu této dovednosti, pak se dovednost provede třikrát, jednou s hodnotou ["klíčové fráze", "Studie BMN"], další s hodnotou ["klíčové fráze", další s hodnotou ["klíčové fráze", "Syndrom"] a nakonec s hodnotou ["klíčové fráze", "Pediatrii pacienti"]. Hodnota literálu "klíčová fráze" zůstává vždy stejná, ale hodnota cesty výrazu se mění při každém provádění dovedností.

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é