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, keterampilan pengenalan entitas, dan keterampilan tokenizer kustom.

Jalur Value
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:

Expression Value
/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:

Expression Value
/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:

Expression Value
/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:

Expression Value
/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 '*' :

Expression Value
/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 Expression Nilai
/document/normalized_images/* /document/normalized_images/*/text/words/* ["Study", "of", "BMN", "110" ...]
["it", "is", "certainly" ...]
...

Untuk kombinasi konteks dan input ini, keterampilan akan 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" akan 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 " .

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

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 '!'

Expression Value
=!false true

Negatif '-'

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

Penambahan '+'

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

Pengurangan '-'

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

Perkalian '*'

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

Divisi '/'

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

Modulo '%'

Expression Value
=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 '<''<=''>''>='

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

Kesetaraan dan non-kesetaraan '==''!='

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

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

Expression Value
=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.

Expression Value
=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.

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

Baca juga