Share via


Vaardigheidscontext en invoeraantekeningstaal

Dit artikel is de referentiedocumentatie voor vaardigheidscontext en invoersyntaxis. Het is een volledige beschrijving van de expressietaal die wordt gebruikt om paden naar knooppunten in een verrijkt document samen te stellen.

Azure AI Search-vaardigheden kunnen de gegevens gebruiken en verrijken die afkomstig zijn van de gegevensbron en uit de uitvoer van andere vaardigheden. De gegevenswerkset die de huidige status van de indexeerfunctie voor het huidige document vertegenwoordigt, begint met de onbewerkte gegevens die afkomstig zijn van de gegevensbron en wordt geleidelijk verrijkt met de uitvoergegevens van elke vaardigheidsiteratie. Deze gegevens zijn intern ingedeeld in een structuur die kan worden opgevraagd om te worden gebruikt als vaardigheidsinvoer of om aan de index toe te voegen. De knooppunten in de structuur kunnen eenvoudige waarden zijn, zoals tekenreeksen en getallen, matrices of complexe objecten en zelfs binaire bestanden. Zelfs eenvoudige waarden kunnen worden verrijkt met aanvullende gestructureerde informatie. Een tekenreeks kan bijvoorbeeld worden geannoteerd met aanvullende informatie die eronder wordt opgeslagen in de verrijkingsstructuur. De expressies die worden gebruikt om een query uit te voeren op die interne structuur, maken gebruik van een uitgebreide syntaxis die in dit artikel wordt beschreven. De verrijkte gegevensstructuur kan worden gecontroleerd vanuit foutopsporingssessies. Expressies die een query uitvoeren op de structuur, kunnen ook worden getest vanuit foutopsporingssessies.

In het hele artikel gebruiken we de volgende verrijkte gegevens als voorbeeld. Deze gegevens zijn typisch voor het soort structuur dat u krijgt bij het verrijken van een document met behulp van een vaardighedenset met OCR, sleuteltermextractie, tekstomzetting, taaldetectie en vaardigheden voor entiteitsherkenning, evenals een aangepaste tokenizer-vaardigheid.

Pad Weergegeven als
document
merged_content "Studie van BMN 110 bij kinderpatiënten"...
  keyphrases
   [0] "Studie van BMN"
   [1] "Syndroom"
   [2] "Kinderpatiënten"
   ...
  locations
   [0] "IVA"
  translated_text "Étude de BMN 110 chez les patients pédiatriques"...
  entities
   [0]
    category "Organisatie"
    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] "van"
     [2] "BMN"
     [3] "110"
     ...
  [1]
   layoutText ...
   text
    words
     [0] "it"
     [1] "is"
     [2] "zeker"
     ...
    ...
  ...

Hoofdmap van document

Alle gegevens bevinden zich onder één hoofdelement, waarvoor het pad is "/document". Het hoofdelement is de standaardcontext voor vaardigheden.

Eenvoudige paden

Eenvoudige paden door het interne verrijkte document kunnen worden uitgedrukt met eenvoudige tokens gescheiden door slashes. Deze syntaxis is vergelijkbaar met de JSON Pointer-specificatie.

Objecteigenschappen

De eigenschappen van knooppunten die objecten vertegenwoordigen, voegen hun waarden toe aan de structuur onder de naam van de eigenschap. Deze waarden kunnen worden verkregen door de eigenschapsnaam toe te voegen als een token gescheiden door een slash:

Expression Weergegeven als
/document/merged_content/language "en"

Naamtokens voor eigenschappen zijn hoofdlettergevoelig.

Matrixitemindex

Naar specifieke elementen van een matrix kan worden verwezen met behulp van hun numerieke index, zoals een eigenschapsnaam:

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

Escape-reeksen

Er zijn twee tekens met speciale betekenis en moeten worden ontsnapt als ze in een expressie worden weergegeven en moeten worden geïnterpreteerd als is in plaats van als hun speciale betekenis: '/' en '~'. Deze tekens moeten respectievelijk '~0' als en '~1'.

Opsomming van matrix

U kunt een matrix met waarden verkrijgen met behulp van het '*' token:

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

Het '*' token hoeft zich niet aan het einde van het pad te bevinden. Het is mogelijk om alle knooppunten op te sommen die overeenkomen met een pad met een ster in het midden of met meerdere sterren:

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

In dit voorbeeld wordt een platte lijst met alle overeenkomende knooppunten geretourneerd.

Het is mogelijk om meer structuur te behouden en een afzonderlijke matrix op te halen voor de woorden van elke pagina met behulp van een '#' token in plaats van het tweede '*' token:

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

Het '#' token geeft aan dat de matrix moet worden behandeld als één waarde in plaats van te worden geïnventariseerd.

Matrices in context inventariseren

Het is vaak handig om elk element van een matrix in isolatie te verwerken en een andere set vaardigheidsinvoer en uitvoer voor elk element te hebben. Dit kan worden gedaan door de context van de vaardigheid in te stellen op een opsomming in plaats van de standaardinstelling "/document".

In het volgende voorbeeld gebruiken we een van de invoerexpressies die we eerder hebben gebruikt, maar met een andere context waarmee de resulterende waarde wordt gewijzigd.

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

Voor deze combinatie van context en invoer wordt de vaardigheid eenmaal uitgevoerd voor elke genormaliseerde afbeelding: één voor "/document/normalized_images/0" en één voor "/document/normalized_images/1". De twee invoerwaarden die overeenkomen met elke uitvoering van vaardigheden, worden in de kolom waarden beschreven.

Wanneer u een matrix in context opsommen, worden alle uitvoer die de vaardigheid produceert, ook als verrijkingen van de context aan het document toegevoegd. In het bovenstaande voorbeeld bevat een uitvoer met de naam "out" de waarden voor elke uitvoering die aan het document wordt toegevoegd onder "/document/normalized_images/0/out" en "/document/normalized_images/1/out".

Letterlijke waarden

Invoer van vaardigheden kan letterlijke waarden aannemen als invoer in plaats van dynamische waarden die worden opgevraagd uit het bestaande document. Dit kan worden bereikt door het voorvoegsel van de waarde met een gelijkteken. Waarden kunnen getallen, tekenreeksen of Booleaanse waarden zijn. Tekenreekswaarden kunnen tussen enkele ' of dubbele " aanhalingstekens worden geplaatst.

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

In regelmatrices

Als voor een bepaalde vaardigheidsinvoer een matrix met gegevens is vereist, maar de gegevens momenteel worden weergegeven als één waarde of als u meerdere verschillende afzonderlijke waarden in een matrixveld moet combineren, kunt u een matrixwaarde inline maken als onderdeel van een vaardigheidsinvoerexpressie door een door komma's gescheiden lijst met expressies tussen vierkante haken ([ en ]). De matrixwaarde kan een combinatie van expressiepaden of letterlijke waarden zijn, indien nodig. U kunt op deze manier ook geneste matrices binnen matrices maken.

Expression Weergegeven als
=['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", "Syndroom"]]

Als de vaardigheid een context heeft die uitlegt om de vaardigheid uit te voeren per matrixinvoer (dat wil zeggen, hoe betekent dit dat "context": "/document/pages/*" de vaardigheid eenmaal per pagina wordt uitgevoerd) pagesen die waarde doorgeeft als de expressie als invoer voor een inlinematrix een van deze waarden tegelijk gebruikt.

Voor een voorbeeld met onze verrijkte voorbeeldgegevens, als uw vaardigheid context is /document/merged_content/keyphrases/* en u vervolgens een inlinematrix van het volgende =['key phrase', $(/document/merged_content/keyphrases/*)] maakt op basis van een invoer van die vaardigheid, wordt de vaardigheid drie keer uitgevoerd, eenmaal met de waarde ["sleutelterm", "Studie van BMN"], een andere met de waarde ["sleutelterm", "Syndroom"] en ten slotte met een waarde van ["sleutelterm", "Kinderpatiënten"]. De letterlijke waarde voor sleuteltermen blijft elke keer hetzelfde, maar de waarde van het expressiepad verandert bij elke vaardigheidsuitvoering.

Samengestelde expressies

Het is mogelijk om waarden te combineren met behulp van unaire, binaire en ternaire operators. Operators kunnen letterlijke waarden en waarden combineren die het gevolg zijn van de padevaluatie. Bij gebruik in een expressie moeten paden tussen "$(" en ")".

Booleaanse waarde niet '!'

Expression Weergegeven als
=!false true

Negatieve '-'

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

Toevoeging '+'

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

Aftrekken '-'

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

Vermenigvuldiging '*'

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

Divisie '/'

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

Modulo '%'

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

Kleiner dan, kleiner dan of gelijk aan, groter dan en groter dan of gelijk aan '<''<=''>''>='

Expression Weergegeven als
=15<4 false
=4<=4 true
=15>4 true
=1>=2 false

Gelijkheid en geen kwaliteit '==''!='

Expression Weergegeven als
=15==4 false
=4==4 true
=15!=4 true
=1!=1 false

Logische bewerkingen en, of, of exclusief of '&&''||''^'

Expression Weergegeven als
=true&&true true
=true&&false false
=true||true true
=true||false true
=false||false false
=true^false true
=true^true false

Ternaire operator '?:'

Het is mogelijk om een andere invoer te geven op basis van de evaluatie van een Boole-expressie met behulp van de ternaire operator.

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

Haakjes en operatorprioriteit

Operators worden geëvalueerd met prioriteiten die overeenkomen met gebruikelijke conventies: unaire operators, vervolgens vermenigvuldigen, delen en modulo, vervolgens optellen en aftrekken, vervolgens vergelijken, vervolgens gelijkheid en vervolgens logische operators. Gebruikelijke associativiteitsregels zijn ook van toepassing.

Haakjes kunnen worden gebruikt om de evaluatievolgorde te wijzigen of te ontkoppelen.

Expression Weergegeven als
=3*2+5 11
=3*(2+5) 21

Zie ook