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 |
Sčítání '+'
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 |
Dělení '/'
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 |