Bagikan melalui


Konteks keterampilan dan bahasa anotasi input

Artikel ini adalah dokumentasi referensi untuk konteks keterampilan dan sintaks input. Ini adalah deskripsi lengkap tentang bahasa ekspresi yang digunakan untuk membuat jalur ke simpul dalam dokumen yang diperkaya.

Keterampilan Azure AI Search dapat menggunakan dan memperkaya data yang berasal dari sumber data dan dari output keterampilan lain. Himpunan kerja data yang mewakili status pekerjaan pengindeks saat ini untuk dokumen saat ini dimulai dari data mentah yang berasal dari sumber data dan secara progresif diperkaya dengan setiap data output perulangan keterampilan. Data tersebut diatur secara internal dalam struktur seperti pohon yang dapat dikueri untuk digunakan sebagai input keterampilan atau ditambahkan ke indeks. Simpul di pohon bisa menjadi nilai sederhana seperti string dan angka, array, atau objek kompleks dan bahkan file biner. Bahkan nilai sederhana dapat diperkaya dengan informasi terstruktur tambahan. Misalnya, string dapat diannotasi dengan informasi tambahan yang disimpan di bawahnya di pohon pengayaan. Ekspresi yang digunakan untuk mengkueri struktur internal tersebut menggunakan sintaks kaya yang dirinci dalam artikel ini. Struktur data yang diperkaya dapat diperiksa dari sesi debug. Ekspresi yang mengkueri struktur juga dapat diuji dari sesi debug.

Sepanjang artikel, kita akan menggunakan data yang diperkaya berikut sebagai contoh. Data ini khas dari jenis struktur yang akan Anda dapatkan saat memperkaya dokumen menggunakan set keterampilan dengan OCR, ekstraksi frasa kunci, terjemahan teks, deteksi bahasa, dan keterampilan pengenalan entitas, serta keterampilan tokenizer kustom.

Jalur Nilai
document
merged_content "Studi BMN 110 pada Pasien Anak"...
  keyphrases
   [0] "Studi BMN"
   [1] "Sindrom"
   [2] "Pasien Anak"
   ...
  locations
   [0] "IVA"
  translated_text "Étude de BMN 110 chez les pasien pédiatriques"...
  entities
   [0]
    category "Organisasi"
    subcategory null
    confidenceScore 0.72
    length 3
    offset 9
    text "BMN"
   ...
  organizations
   [0] "BMN"
  language "en"
normalized_images
  [0]
   layoutText ...
   text
    words
     [0] "Belajar"
     [1] "dari"
     [2] "BMN"
     [3] "110"
     ...
  [1]
   layoutText ...
   text
    words
     [0] "it"
     [1] "adalah"
     [2] "Tentu saja"
     ...
    ...
  ...

Akar dokumen

Semua data berada di bawah satu elemen akar, yang jalurnya adalah "/document". Elemen akar adalah konteks default untuk keterampilan.

Jalur sederhana

Jalur sederhana melalui dokumen yang diperkaya internal dapat diekspresikan dengan token sederhana yang dipisahkan oleh garis miring. Sintaks ini mirip dengan spesifikasi JSON Pointer.

Properti objek

Properti simpul yang mewakili objek menambahkan nilainya ke pohon di bawah nama properti. Nilai-nilai tersebut dapat diperoleh dengan menambahkan nama properti sebagai token yang dipisahkan oleh garis miring:

Ekspresi Nilai
/document/merged_content/language "en"

Token nama properti peka huruf besar/kecil.

Indeks item array

Elemen tertentu dari array dapat dirujuk dengan menggunakan indeks numeriknya seperti nama properti:

Ekspresi Nilai
/document/merged_content/keyphrases/1 "Syndrome"
/document/merged_content/entities/0/text "BMN"

Urutan escape

Ada dua karakter yang memiliki arti khusus dan perlu diloloskan jika muncul dalam ekspresi dan harus ditafsirkan sebagai bukan sebagai arti khusus mereka: '/' dan '~'. Karakter tersebut harus diloloskan masing-masing sebagai '~0' dan '~1'.

Enumerasi array

Array nilai dapat diperoleh menggunakan '*' token:

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

Token '*' tidak harus berada di akhir jalur. Dimungkinkan untuk menghitung semua simpul yang cocok dengan jalur dengan bintang di tengah atau dengan beberapa bintang:

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

Contoh ini mengembalikan daftar datar semua simpul yang cocok.

Dimungkinkan untuk mempertahankan lebih banyak struktur dan mendapatkan array terpisah untuk kata-kata setiap halaman dengan menggunakan '#' token alih-alih token kedua '*' :

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

Token '#' mengekspresikan bahwa array harus diperlakukan sebagai nilai tunggal alih-alih dijumlahkan.

Menghitung array dalam konteks

Seringkali berguna untuk memproses setiap elemen array dalam isolasi dan memiliki serangkaian input dan output keterampilan yang berbeda untuk masing-masing elemen. Ini dapat dilakukan dengan mengatur konteks keterampilan ke enumerasi alih-alih default "/document".

Dalam contoh berikut, kami menggunakan salah satu ekspresi input yang kami gunakan sebelumnya, tetapi dengan konteks berbeda yang mengubah nilai yang dihasilkan.

Konteks Ekspresi Nilai
/document/normalized_images/* /document/normalized_images/*/text/words/* ["Study", "of", "BMN", "110" ...]
["it", "is", "certainly" ...]
...

Untuk kombinasi konteks dan input ini, keterampilan dijalankan sekali untuk setiap gambar yang dinormalisasi: sekali untuk "/document/normalized_images/0" dan sekali untuk "/document/normalized_images/1". Dua nilai input yang sesuai dengan setiap eksekusi keterampilan dirinci dalam kolom nilai.

Saat menghitung array dalam konteks, output apa pun yang dihasilkan keterampilan juga akan ditambahkan ke dokumen sebagai pengayaan konteks. Dalam contoh di atas, output bernama "out" memiliki nilainya untuk setiap eksekusi yang ditambahkan ke dokumen masing-masing di bawah "/document/normalized_images/0/out" dan "/document/normalized_images/1/out".

Nilai harfiah

Input keterampilan dapat mengambil nilai harfiah sebagai inputnya alih-alih nilai dinamis yang dikueri dari dokumen yang ada. Ini dapat dicapai dengan awalan nilai dengan tanda sama dengan. Nilai dapat berupa angka, string, atau Boolean. Nilai string dapat diapit dalam tanda kutip tunggal ' atau ganda " .

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

Dalam array baris

Jika input keterampilan tertentu memerlukan array data, tetapi data direpresentasikan sebagai nilai tunggal saat ini atau Anda perlu menggabungkan beberapa nilai tunggal yang berbeda ke dalam bidang array, maka Anda dapat membuat nilai array sebaris sebagai bagian dari ekspresi input keterampilan dengan membungkus daftar ekspresi yang dipisahkan koma dalam tanda kurung ([ dan ]). Nilai array dapat berupa kombinasi jalur ekspresi atau nilai harfiah sesuai kebutuhan. Anda juga dapat membuat array berlapis dalam array dengan cara ini.

Ekspresi Nilai
=['item'] ["item"]
=[$(/document/merged_content/entities/0/text), 'item'] ["BMN", "item"]
=[1, 3, 5] [1, 3, 5]
=[true, true, false] [benar, benar, salah]
=[[$(/document/merged_content/entities/0/text), 'item'],['item2', $(/document/merged_content/keyphrases/1)]] [["BMN", "item"], ["item2", "Syndrome"]]

Jika keterampilan memiliki konteks yang menjelaskan untuk menjalankan keterampilan per input array (artinya, bagaimana "context": "/document/pages/*" keterampilan berjalan sekali per "halaman" di pages) lalu meneruskan nilai tersebut sebagai ekspresi sebagai input ke array baris menggunakan salah satu nilai tersebut sekaligus.

Misalnya dengan data sampel kami yang diperkaya, jika keterampilan context Anda adalah /document/merged_content/keyphrases/* dan kemudian Anda membuat array sebaris dari berikut =['key phrase', $(/document/merged_content/keyphrases/*)] pada input keterampilan itu, maka keterampilan dijalankan tiga kali, sekali dengan nilai ["frasa kunci", "Studi BMN"], yang lain dengan nilai ["frasa kunci", "Sindrom"], dan akhirnya dengan nilai ["frasa kunci", "Pasien Anak"]. Nilai "frasa kunci" harfiah tetap sama setiap kali, tetapi nilai jalur ekspresi berubah dengan setiap eksekusi keterampilan.

Ekspresi komposit

Dimungkinkan untuk menggabungkan nilai bersama-sama menggunakan operator unary, biner, dan ternary. Operator dapat menggabungkan nilai dan nilai harfiah yang dihasilkan dari evaluasi jalur. Saat digunakan di dalam ekspresi, jalur harus diapit antara "$(" dan ")".

Boolean tidak '!'

Ekspresi Nilai
=!false true

Negatif '-'

Ekspresi Nilai
=-42 -42
=-$(/document/merged_content/entities/0/offset) -9

Penambahan '+'

Ekspresi Nilai
=2+2 4
=2+$(/document/merged_content/entities/0/offset) 11

Pengurangan '-'

Ekspresi Nilai
=2-1 1
=$(/document/merged_content/entities/0/offset)-2 7

Perkalian '*'

Ekspresi Nilai
=2*3 6
=$(/document/merged_content/entities/0/offset)*2 18

Divisi '/'

Ekspresi Nilai
=3/2 1.5
=$(/document/merged_content/entities/0/offset)/3 3

Modulo '%'

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

Kurang dari, kurang dari atau sama dengan, lebih besar dari dan lebih besar dari atau sama dengan '<' '<=' '>' '>='

Ekspresi Nilai
=15<4 false
=4<=4 true
=15>4 true
=1>=2 false

Kesetaraan dan ketidaksetaraan '==' '!='

Ekspresi Nilai
=15==4 false
=4==4 true
=15!=4 true
=1!=1 false

Operasi logis dan, atau dan eksklusif atau '&&' '||' '^'

Ekspresi Nilai
=true&&true true
=true&&false false
=true||true true
=true||false true
=false||false false
=true^false true
=true^true false

Operator ternary '?:'

Dimungkinkan untuk memberikan input nilai yang berbeda berdasarkan evaluasi ekspresi Boolean menggunakan operator ternary.

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

Tanda kurung dan prioritas operator

Operator dievaluasi dengan prioritas yang sesuai dengan konvensi biasa: operator unary, kemudian perkalian, pembagian dan modulo, kemudian penambahan dan pengurangan, kemudian perbandingan, kemudian kesetaraan, dan kemudian operator logis. Aturan asokiativitas biasa juga berlaku.

Tanda kurung dapat digunakan untuk mengubah atau membedakan urutan evaluasi.

Ekspresi Nilai
=3*2+5 11
=3*(2+5) 21

Lihat juga