Dela via


Språk för kunskapskontext och indataanteckning

Den här artikeln är referensdokumentationen för kunskapskontext och indatasyntax. Det är en fullständig beskrivning av det uttrycksspråk som används för att konstruera sökvägar till noder i ett berikat dokument.

Azure AI Search-kunskaper kan använda och berika data som kommer från datakällan och från utdata från andra färdigheter. Den dataarbetsuppsättning som representerar indexerarens aktuella tillstånd för det aktuella dokumentet börjar från rådata som kommer från datakällan och utökas progressivt med varje kunskaps iterations utdata. Dessa data är internt ordnade i en trädliknande struktur som kan efterfrågas för att användas som kunskapsindata eller läggas till i indexet. Noderna i trädet kan vara enkla värden som strängar och tal, matriser eller komplexa objekt och till och med binära filer. Även enkla värden kan berikas med ytterligare strukturerad information. En sträng kan till exempel kommenteras med ytterligare information som lagras under den i berikningsträdet. Uttrycken som används för att fråga den interna strukturen använder en omfattande syntax som beskrivs i den här artikeln. Den berikade datastrukturen kan inspekteras från felsökningssessioner. Uttryck som kör frågor mot strukturen kan också testas från felsökningssessioner.

I artikeln använder vi följande berikade data som exempel. Dessa data är typiska för den typ av struktur som du skulle få när du berikar ett dokument med hjälp av en kompetensuppsättning med OCR, extrahering av nyckelfraser, textöversättning, språkidentifiering och entitetsigenkänning samt en anpassad tokeniserarfärdighet.

Sökväg Värde
document
merged_content "Studie av BMN 110 hos pediatriska patienter"...
  keyphrases
   [0] "Studie av BMN"
   [1] "Syndrom"
   [2] "Pediatriska patienter"
   ...
  locations
   [0] "IVA"
  translated_text "Étude de BMN 110 chez les patients pédiatriques"...
  entities
   [0]
    category "Organisation"
    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] "av"
     [2] "BMN"
     [3] "110"
     ...
  [1]
   layoutText ...
   text
    words
     [0] "det"
     [1] "är"
     [2] "verkligen"
     ...
    ...
  ...

Dokumentrot

Alla data finns under ett rotelement, för vilket sökvägen är "/document". Rotelementet är standardkontexten för kunskaper.

Enkla sökvägar

Enkla sökvägar genom det interna berikade dokumentet kan uttryckas med enkla token avgränsade med snedstreck. Den här syntaxen liknar JSON-pekarspecifikationen.

Objektegenskaper

Egenskaperna för noder som representerar objekt lägger till sina värden i trädet under egenskapens namn. Dessa värden kan hämtas genom att lägga till egenskapsnamnet som en token avgränsad med ett snedstreck:

Uttryck Värde
/document/merged_content/language "en"

Egenskapsnamntoken är skiftlägeskänsliga.

Matrisobjektindex

Specifika element i en matris kan refereras med hjälp av deras numeriska index som ett egenskapsnamn:

Uttryck Värde
/document/merged_content/keyphrases/1 "Syndrome"
/document/merged_content/entities/0/text "BMN"

Escape-sekvenser

Det finns två tecken som har en särskild betydelse och måste vara undantagna om de visas i ett uttryck och måste tolkas som de är i stället för som deras speciella betydelse: '/' och '~'. Dessa tecken måste vara undantagna som '~0' och '~1'.

Matrisuppräkning

En matris med värden kan hämtas med hjälp av '*' token:

Uttryck Värde
/document/normalized_images/0/text/words/* ["Study", "of", "BMN", "110" ...]

Token '*' behöver inte finnas i slutet av sökvägen. Det är möjligt att räkna upp alla noder som matchar en sökväg med en stjärna i mitten eller med flera stjärnor:

Uttryck Värde
/document/normalized_images/*/text/words/* ["Study", "of", "BMN", "110" ... "it", "is", "certainly" ...]

Det här exemplet returnerar en platt lista över alla matchande noder.

Det går att underhålla mer struktur och få en separat matris för orden på varje sida med hjälp av en '#' token i stället för den andra '*' token:

Uttryck Värde
/document/normalized_images/*/text/words/# [["Study", "of", "BMN", "110" ...], ["it", "is", "certainly" ...] ...]

Token '#' uttrycker att matrisen ska behandlas som ett enda värde i stället för att räknas upp.

Räkna upp matriser i kontext

Det är ofta användbart att bearbeta varje element i en matris isolerat och ha olika uppsättning kunskapsindata och utdata för var och en. Detta kan göras genom att ange kontexten för färdigheten till en uppräkning i stället för standardvärdet "/document".

I följande exempel använder vi ett av de indatauttryck som vi använde tidigare, men med en annan kontext som ändrar det resulterande värdet.

Kontext Uttryck Värden
/document/normalized_images/* /document/normalized_images/*/text/words/* ["Study", "of", "BMN", "110" ...]
["it", "is", "certainly" ...]
...

För den här kombinationen av kontext och indata körs färdigheten en gång för varje normaliserad avbildning: en gång för "/document/normalized_images/0" och en gång för "/document/normalized_images/1". De två indatavärden som motsvarar varje färdighetskörning beskrivs i kolumnen värden.

När du räknar upp en matris i kontexten läggs även alla utdata som färdigheten producerar till dokumentet som berikanden av kontexten. I exemplet ovan har utdata med namnet "out" dess värden för varje körning som lagts till i dokumentet respektive under "/document/normalized_images/0/out" och "/document/normalized_images/1/out".

Literalvärden

Kunskapsindata kan ta literalvärden som indata i stället för dynamiska värden som efterfrågas från det befintliga dokumentet. Detta kan uppnås genom att prefixera värdet med ett likhetstecken. Värden kan vara tal, strängar eller booleska. Strängvärden kan omges av enkla ' eller dubbla " citattecken.

Uttryck Värde
=42 42
=2.45E-4 0.000245
="some string" "some string"
='some other string' "some other string"
="unicod\u0065" "unicode"
=false false

I radmatriser

Om en viss kunskapsinmatning kräver en matris med data, men data representeras som ett enda värde för närvarande eller om du behöver kombinera flera olika enkla värden i ett matrisfält, kan du skapa ett matrisvärde infogat som en del av ett uttryck för färdighetsindata genom att omsluta en kommaavgränsad lista med uttryck inom hakparenteser ([ och ]). Matrisvärdet kan vara en kombination av uttryckssökvägar eller literalvärden efter behov. Du kan också skapa kapslade matriser i matriser på det här sättet.

Uttryck Värde
=['item'] ["objekt"]
=[$(/document/merged_content/entities/0/text), 'item'] ["BMN", "item"]
=[1, 3, 5] [1, 3, 5]
=[true, true, false] [sant, sant, falskt]
=[[$(/document/merged_content/entities/0/text), 'item'],['item2', $(/document/merged_content/keyphrases/1)]] [["BMN", "item"], ["item2", "Syndrome"]]

Om färdigheten har en kontext som förklarar hur du kör färdigheten per en matrisinmatning (det vill säga hur "context": "/document/pages/*" innebär det att färdigheten körs en gång per "sida" i pages) och sedan skickar det värdet som uttryck som indata till en i radmatris använder ett av dessa värden i taget.

I ett exempel med våra exempel berikade data, om dina kunskaper context är /document/merged_content/keyphrases/* och sedan skapar en infogad matris med följande =['key phrase', $(/document/merged_content/keyphrases/*)] på indata från den färdigheten, körs färdigheten tre gånger, en gång med värdet ["nyckelfras", "Studie av BMN"], en annan med värdet ["nyckelfras", "Syndrom"], och slutligen med värdet ["nyckelfras". "Pediatriska patienter"]. Värdet "nyckelfras" för literal förblir detsamma varje gång, men värdet för uttryckssökvägen ändras med varje färdighetskörning.

Sammansatta uttryck

Det går att kombinera värden med hjälp av unary-operatorer, binära operatorer och ternary-operatorer. Operatorer kan kombinera literalvärden och värden som är resultatet av sökvägsutvärdering. När de används i ett uttryck ska sökvägar omges av mellan "$(" och ")".

Booleskt värde inte '!'

Uttryck Värde
=!false true

Negativa '-'

Uttryck Värde
=-42 -42
=-$(/document/merged_content/entities/0/offset) -9

Tillägg '+'

Uttryck Värde
=2+2 4
=2+$(/document/merged_content/entities/0/offset) 11

Subtraktion '-'

Uttryck Värde
=2-1 1
=$(/document/merged_content/entities/0/offset)-2 7

Multiplikation '*'

Uttryck Värde
=2*3 6
=$(/document/merged_content/entities/0/offset)*2 18

Division '/'

Uttryck Värde
=3/2 1.5
=$(/document/merged_content/entities/0/offset)/3 3

Modulo '%'

Uttryck Värde
=15%4 3
=$(/document/merged_content/entities/0/offset)%2 1

Mindre än, mindre än eller lika med, större än och större än eller lika med '<''<=''>''>='

Uttryck Värde
=15<4 false
=4<=4 true
=15>4 true
=1>=2 false

Jämlikhet och icke-olikhet '==''!='

Uttryck Värde
=15==4 false
=4==4 true
=15!=4 true
=1!=1 false

Logiska åtgärder och, eller och uteslutande eller '&&''||''^'

Uttryck Värde
=true&&true true
=true&&false false
=true||true true
=true||false true
=false||false false
=true^false true
=true^true false

Operatorn Ternary '?:'

Det är möjligt att ge indata olika värden baserat på utvärderingen av ett booleskt uttryck med hjälp av operatorn ternary.

Uttryck Värde
=true?"true":"false" "true"
=$(/document/merged_content/entities/0/offset)==9?"nine":"not nine" "nine"

Parenteser och operatorprioritet

Operatorer utvärderas med prioriteringar som matchar vanliga konventioner: unary operatorer, sedan multiplikation, division och modulo, sedan addition och subtraktion, sedan jämförelse, sedan likhet och sedan logiska operatorer. Vanliga associativitetsregler gäller också.

Parenteser kan användas för att ändra eller skilja utvärderingsordning.

Uttryck Värde
=3*2+5 11
=3*(2+5) 21

Se även