Képességkörnyezet és beviteli széljegyzet nyelve

Note

Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.

Ez a cikk a készségkörnyezet és a bemeneti szintaxis referenciadokumentációja. Ez a kifejezésnyelv teljes leírása, amellyel egy gazdagított dokumentumban csomópontok elérési útjait hozhatja létre.

Az Azure AI Keresés-készségek használhatják és bővíthetik az adatforrásból és más készségek kimenetéből származó adatokat. Az aktuális dokumentum indexelőjének aktuális állapotát képviselő adatmunkakészlet az adatforrásból származó nyers adatokból indul ki, és fokozatosan bővül az egyes képességi iterációk kimeneti adataival. Az adatok belső rendszerezése faszerű szerkezetben történik, amely lekérdezhető képességbemenetként való használatra vagy az indexhez való hozzáadására. A fa csomópontjai lehetnek egyszerű értékek, például sztringek és számok, tömbök, összetett objektumok és akár bináris fájlok is. Még az egyszerű értékek is strukturáltabb információkkal bővíthetők. A sztringek például széljegyzetekkel is elláthatók, amelyek a gazdagítási fa alatt találhatók. A belső struktúra lekérdezéséhez használt kifejezések a cikkben részletezett, részletes szintaxist használják. A bővített adatstruktúra hibakeresési munkamenetekből vizsgálható. A struktúrát lekérdező kifejezések hibakeresési munkamenetekből is tesztelhetők.

A cikk során a következő bővített adatokat használjuk példaként. Ezek az adatok jellemzőek arra a struktúrára, amelyet a dokumentumok ocR-val, kulcskifejezés-kinyeréssel, szövegfordítással, nyelvfelismeréssel és entitásfelismerési képességekkel, valamint egyéni tokenizer-képességekkel történő bővítésekor kaphat.

Path Value
document
 merged_content "A BMN 110 vizsgálata gyermekgyógyászati betegekben"...
  keyphrases
   [0] "A BMN tanulmányozása"
   [1] "Syndrome"
   [2] Gyermekbetegek
   ...
  locations
   [0] "IVA"
  translated_text "Étude de BMN 110 chez les patients pédiatriques"...
  entities
   [0]
    category "Organization"
    subcategory null
    confidenceScore 0.72
    length 3
    offset 9
    text "BMN"
   ...
  organizations
   [0] "BMN"
  language "en"
 normalized_images
  [0]
   layoutText ...
   text
    words
     [0] "Study"
     [1] "of"
     [2] "BMN"
     [3] "110"
     ...
  [1]
   layoutText ...
   text
    words
     [0] "it"
     [1] "is"
     [2] "certainly"
     ...
    ...
  ...

Dokumentumgyökér

** Az adatok egy gyökérelem alatt vannak, az elérési út "/document". A fő elem a készségek alapértelmezett környezete.

Egyszerű útvonalak

A belső bővített dokumentum egyszerű elérési útjai perjelekkel elválasztott egyszerű jogkivonatokkal fejezhetők ki. Ez a szintaxis hasonló a JSON Pointer specifikációjához.

Objektumtulajdonságok

Az objektumokat képviselő csomópontok tulajdonságai hozzáadják az értékeiket a tulajdonság neve alatti fához. Ezek az értékek a tulajdonságnév perjellel elválasztott jogkivonatként való hozzáfűzésével szerezhetők be:

Expression Value
/document/merged_content/language "en"

A tulajdonságnév-jogkivonatok megkülönböztetik a kis- és nagybetűket.

Tömbelem-index

A tömb egyes elemeire a numerikus indexük, például egy tulajdonságnév használatával hivatkozhat:

Expression Value
/document/merged_content/keyphrases/1 "Syndrome"
/document/merged_content/entities/0/text "BMN"

Menekülési sorozatok

Több olyan karakter is létezik, amely speciális jelentéssel rendelkezik, és amelyeket szó szerint kell értelmezni, ha nem szintaxiselemként értékeljük őket. Ezek a karakterek többek között a #következők/~:

Menekülési sorozat Speciális jelentés (használat az elérési út szintaxisában) Example
~0 Szöktetéshez használatos ~ "~0" for ~, where "~/documents" lesz "~0~1documents"
~1 Szöktetéshez használatos / "~1" for /, where "~/documents" lesz "~0~1documents"
~2 Általánosan használható tetszőleges szekvenciák (beleértve, de nem kizárólagosan és #*) "~2#~2" ahol a "readme#requirements" "readme~2#~2requirements" lesz

Tömbök számbavétele

Az értékek tömbje a '*' jogkivonat használatával kérhető le:

Expression Value
/document/normalized_images/0/text/words/* ["Study", "of", "BMN", "110" ...]

A '*' jogkivonatnak nem kell az elérési út végén lennie. A középen lévő csillaggal vagy több csillaggal egyező összes csomópont számbavétele lehetséges:

Expression Value
/document/normalized_images/*/text/words/* ["Study", "of", "BMN", "110" ... "it", "is", "certainly" ...]

Ez a példa az összes egyező csomópont egy sima listáját adja vissza.

A második '#' token helyett egy '*' jogkivonat használatával több struktúrát tarthat fenn, és külön tömböt kaphat az egyes lapok szavaihoz:

Expression Value
/document/normalized_images/*/text/words/# [["Study", "of", "BMN", "110" ...], ["it", "is", "certainly" ...] ...]

A '#' jogkivonat azt fejezi ki, hogy a tömböt egyetlen értékként kell kezelni a számbavétel helyett.

Tömbök számbavétele a környezetben

Gyakran hasznos, ha egy tömb minden elemét külön-külön dolgozzuk fel, és mindegyikhez más-más képességbemenet és kimenet tartozik. Ez az ajánlott eljárás úgy végezhető el, hogy a képesség kontextusát enumerálásra állítja az alapértelmezett "/document"helyett.

Az alábbi példában a korábban használt egyik bemeneti kifejezést használjuk, de egy másik kontextusban, amely megváltoztatja az eredményként kapott értéket.

Context Expression Értékek
/document/normalized_images/* /document/normalized_images/*/text/words/* ["Study", "of", "BMN", "110" ...]
["it", "is", "certainly" ...]
...

A környezet és a bemenet ezen kombinációjához a képesség minden normalizált rendszerképhez egyszer lesz végrehajtva: egyszer és "/document/normalized_images/0" egyszer."/document/normalized_images/1" Az egyes képességek végrehajtásának megfelelő két bemeneti érték az értékek oszlopában található.

Ha egy tömböt a kontextusban számba ad, a rendszer hozzáadja a dokumentumhoz a képesség által előállított kimeneteket a környezet bővítéseként. Az előző példában egy "out" nevű kimenet értékei minden egyes végrehajtáshoz hozzáadódnak a dokumentumhoz, mégpedig a "/document/normalized_images/0/out" és "/document/normalized_images/1/out" rész alatt.

Literális értékek

A készségbemenetek a meglévő dokumentumból lekérdezett dinamikus értékek helyett a konstans értékeket használhatják bemenetként. Ez az ajánlott eljárás az érték egyenlőségjellel történő előtagolásával érhető el. Az értékek lehetnek számok, sztringek vagy logikai értékek. A sztringértékek egy ' - vagy két " idézőjelben is csatolhatók.

Expression Value
=42 42
=2.45E-4 0.000245
="some string" "some string"
='some other string' "some other string"
="unicod\u0065" "unicode"
=false false

Sortömbökben

Ha egy adott készségbemenethez adattömb szükséges, de az adatok jelenleg egyetlen értékként vannak ábrázolva, vagy több különböző önálló értéket kell egyesítenie egy tömbmezőben, akkor a készségbemeneti kifejezés részeként létrehozhat egy tömbértéket a zárójelek ([ és ]) vesszővel elválasztott kifejezéslistájának körbefuttatásával. A tömbérték szükség szerint kifejezésútvonalak vagy literális értékek kombinációja lehet. Így beágyazott tömböket is létrehozhat tömbökben.

Expression Value
=['item'] ["item"]
=[$(/document/merged_content/entities/0/text), 'item'] ["BMN", "elem"]
=[1, 3, 5] [1, 3, 5]
=[true, true, false] [igaz, igaz, hamis]
=[[$(/document/merged_content/entities/0/text), 'item'],['item2', $(/document/merged_content/keyphrases/1)]] [[["BMN", "item"], ["item2", "Syndrome"]]

Ha a képesség olyan környezettel rendelkezik, amely elmagyarázza a képesség tömbbemenetenként történő futtatását (azaz azt, hogy a "context": "/document/pages/*" képesség "laponként" pagesegyszer fut), akkor a kifejezésként megadott értéknek egy sortömbbe való bemenetként történő átadása egyszerre egy ilyen értéket használ.

Például a bővített mintaadatokkal, ha a képesség context/document/merged_content/keyphrases/* az, majd létrehoz egy beágyazott tömböt az alábbiakból =['key phrase', $(/document/merged_content/keyphrases/*)] az adott képesség bemenetén, akkor a képesség háromszor lesz végrehajtva, egyszer egy ["key phrase", "Study of BMN"] értékkel, egy másik értékkel ["key phrase", "Syndrome"] értékkel, végül pedig a ["kulcskifejezés" értékkel, "Gyermekbetegek"]. A literál "kulcskifejezés" értéke minden alkalommal ugyanaz marad, de a kifejezés útvonalának értéke az egyes képességek végrehajtásával változik.

Összetett kifejezések

Az értékek egyesíthetők a nemáris, bináris és ternáris operátorokkal. Az operátorok az elérési út kiértékelése során keletkező literális értékeket és értékeket kombinálhatják. Ha egy kifejezésen belül használják, az elérési utakat az és "$("a között ")" kell megadni.

Logikai nem '!'

Expression Value
=!false true

Negatív '-'

Expression Value
=-42 -42
=-$(/document/merged_content/entities/0/offset) -9

Összeadás '+'

Expression Value
=2+2 4
=2+$(/document/merged_content/entities/0/offset) 11

Kivonás '-'

Expression Value
=2-1 1
=$(/document/merged_content/entities/0/offset)-2 7

Szorzás '*'

Expression Value
=2*3 6
=$(/document/merged_content/entities/0/offset)*2 18

Osztás '/'

Expression Value
=3/2 1.5
=$(/document/merged_content/entities/0/offset)/3 3

Modulus '%'

Expression Value
=15%4 3
=$(/document/merged_content/entities/0/offset)%2 1

Sztringösszefűzés '+'

Expression Value
="Hello," + "world!" "Hello, world!"
=$(/document/merged_content/entities/0/text) + $(/document/merged_content/entities/0/category) "BMN Organization"

Kisebb, kisebb vagy egyenlő, nagyobb és nagyobb, mint vagy egyenlő '<''<=''>''>='

Expression Value
=15<4 false
=4<=4 true
=15>4 true
=1>=2 false

Egyenlőség és egyenlőtlenség '==''!='

Expression Value
=15==4 false
=4==4 true
=15!=4 true
=1!=1 false

Logikai műveletek és, vagy kizárólagos vagy '&&''||''^'

Expression Value
=true&&true true
=true&&false false
=true||true true
=true||false true
=false||false false
=true^false true
=true^true false

Ternáris operátor '?:'

A logikai kifejezések kiértékelése alapján különböző értékeket adhat meg a ternáris operátorral.

Expression Value
=true?"true":"false" "true"
=$(/document/merged_content/entities/0/offset)==9?"nine":"not nine" "nine"

Zárójelek és operátorprioritás

Az operátorokat a szokásos konvencióknak megfelelő prioritásokkal értékelik ki: a nem kötelező operátorokat, majd a szorzást, az osztást és a modulót, majd az összeadást és kivonást, majd az összehasonlítást, majd az egyenlőséget, majd a logikai operátorokat. A szokásos asszociativitási szabályok is érvényesek.

Zárójelekkel módosíthatja vagy egyértelműsítheti a kiértékelési sorrendet.

Expression Value
=3*2+5 11
=3*(2+5) 21

Lásd még