Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Selama eksekusi skillset, mesin membangun pohon pengayaan dalam memori yang merekam setiap pengayaan, seperti entitas yang dikenali atau teks yang diterjemahkan. Dalam artikel ini, pelajari cara mereferensikan simpul pengayaan di pohon pengayaan sehingga Anda dapat meneruskan output ke keterampilan hilir atau menentukan pemetaan bidang output untuk bidang indeks pencarian.
Artikel ini menggunakan contoh untuk mengilustrasikan berbagai skenario. Untuk sintaks lengkapnya, lihat Konteks keterampilan dan bahasa anotasi input.
Konsep latar belakang
Sebelum meninjau sintaks, mari kita buka kembali beberapa konsep penting untuk lebih memahami contoh yang disediakan nanti dalam artikel ini.
| Istilah | Deskripsi |
|---|---|
| "dokumen yang diperkaya" | Dokumen yang diperkaya adalah struktur dalam memori yang mengumpulkan keluaran keterampilan seiring dengan pembuatannya dan menyimpan semua pengayaan yang terkait dengan dokumen. Anggap dokumen yang memiliki fitur lebih sebagai pohon. Umumnya, pohon dimulai pada level dokumen induk, dan setiap pengembangan baru dibuat dari node sebelumnya sebagai turunannya. |
| "node" | Dalam dokumen yang diperkaya, node (terkadang disebut sebagai "anotasi") adalah output khusus seperti "teks" atau "layoutText" dari keterampilan OCR, atau nilai bidang sumber asli seperti konten bidang ID produk, atau metadata yang disalin dari sumber seperti metadata_storage_path dari blob di Azure Storage. |
| "konteks" | Cakupan pengayaan, yang dapat berupa seluruh dokumen, sebagian dokumen (halaman atau kalimat), atau jika Anda bekerja dengan gambar, gambar yang diambil dari dokumen tersebut. Pada pengaturan awal, konteks pengayaan berada di tingkat "/document", dirupakan dalam lingkup dokumen individual yang terkandung dalam sumber data. Saat keterampilan dijalankan, output keterampilan tersebut menjadi properti konteks yang ditentukan. |
Jalur untuk skenario yang berbeda
Jalur ditentukan dalam properti "konteks" dan "sumber" dari kumpulan keterampilan, serta pada pemetaan bidang keluaran dalam pengindeks.
Contoh dalam cuplikan layar mengilustrasikan jalur untuk item dalam koleksi Azure Cosmos DB.
contextjalur adalah/document/HotelIdkarena koleksi dipartisi menjadi dokumen oleh kolom/HotelId.sourcejalur adalah/document/Descriptionkarena ini adalah keterampilan terjemahan, dan bidang yang ingin Anda terjemahkan adalah bidangDescriptiondi setiap dokumen.
Semua jalur dimulai dengan /document. Dokumen yang diperkaya dibuat dalam tahap "pemecahan dokumen" eksekusi pengindeks, ketika pengindeks membuka dokumen atau membaca secara berurutan dari sumber data. Awalnya, satu-satunya simpul dalam dokumen yang diperkaya adalah simpul akar (/document), dan itu adalah simpul tempat semua pengayaan lainnya terjadi.
Daftar berikut ini mencakup beberapa contoh umum:
-
/documentadalah simpul akar dan menunjukkan seluruh blob di Azure Storage, atau baris dalam tabel SQL. -
/document/{key}adalah sintaks untuk dokumen atau item dalam koleksi Azure Cosmos DB, di mana{key}adalah kunci aktual, seperti/document/HotelIddalam contoh sebelumnya. -
/document/contentmenentukan properti "konten" dari blob JSON. -
/document/{field}adalah sintaks untuk operasi yang dilakukan pada bidang tertentu, seperti menerjemahkan/document/Descriptionbidang, yang terlihat dalam contoh sebelumnya. -
/document/pages/*atau/document/sentences/*menjadi konteks jika Anda memecah dokumen besar menjadi potongan yang lebih kecil untuk diproses. Jika "konteks" adalah/document/pages/*, keterampilan dijalankan sekali di setiap halaman dalam dokumen. Karena mungkin ada lebih dari satu halaman atau kalimat, Anda dapat menambahkan/*untuk menangkap semuanya. -
/document/normalized_images/*dibuat selama pemecahan dokumen jika dokumen berisi gambar. Semua jalur ke gambar dimulai dengan normalized_images. Karena sering ada beberapa gambar yang disematkan dalam dokumen, tambahkan/*.
Contoh di sisa artikel ini didasarkan pada bidang "konten" yang dihasilkan secara otomatis oleh pengindeks blob Azure sebagai bagian dari fase pemecahan dokumen. Saat merujuk ke dokumen dari kontainer Blob, gunakan format seperti "/document/content", di mana bidang "konten" adalah bagian dari "dokumen".
Contoh 1: Referensi anotasi sederhana
Di Azure Blob Storage, misalkan Anda memiliki berbagai file yang berisi referensi ke nama orang yang ingin Anda ekstrak menggunakan pengenalan entitas. Dalam definisi keterampilan berikut, "/document/content" adalah representasi tekstual dari seluruh dokumen, dan "orang" adalah ekstraksi nama lengkap untuk entitas yang diidentifikasi sebagai orang.
Karena konteks defaultnya adalah "/document", daftar orang kini dapat direferensikan sebagai "/document/people". Dalam kasus tertentu, "/document/people" adalah anotasi, yang kini dapat dipetakan ke bidang dalam indeks, atau digunakan dalam keterampilan lain dalam set keterampilan yang sama.
{
"@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
"categories": [ "Person"],
"defaultLanguageCode": "en",
"inputs": [
{
"name": "text",
"source": "/document/content"
}
],
"outputs": [
{
"name": "persons",
"targetName": "people"
}
]
}
Contoh 2: Mereferensikan larik dalam dokumen
Contoh ini dibangun berdasarkan contoh sebelumnya, yang menunjukkan cara untuk memanggil langkah pengayaan beberapa kali pada dokumen yang sama. Asumsikan contoh sebelumnya menghasilkan larik string dengan 10 nama orang dari satu dokumen. Langkah masuk akal berikutnya mungkin adalah proses pengayaan kedua yang mengekstrak nama belakang dari nama lengkap. Karena ada 10 nama, Anda menginginkan langkah ini digunakan 10 kali dalam dokumen ini, sekali untuk setiap orang.
Untuk memanggil jumlah perulangan yang tepat, tetapkan konteks sebagai "/document/people/*", dengan lambang tanda bintang ("*") mewakili semua simpul dalam dokumen yang telah diperkaya adalah turunan "/document/people". Meskipun keterampilan ini hanya didefinisikan sekali dalam array keterampilan, keterampilan ini dipanggil untuk setiap anggota dalam dokumen sampai semua anggota diproses.
{
"@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
"description": "Fictitious skill that gets the last name from a full name",
"uri": "http://names.azurewebsites.net/api/GetLastName",
"context" : "/document/people/*",
"defaultLanguageCode": "en",
"inputs": [
{
"name": "fullname",
"source": "/document/people/*"
}
],
"outputs": [
{
"name": "lastname",
"targetName": "last"
}
]
}
Jika anotasi berupa array atau koleksi string, Anda mungkin ingin menargetkan anggota tertentu daripada array secara keseluruhan. Contoh sebelumnya menghasilkan anotasi yang disebut "last" di bawah setiap simpul yang diwakili oleh konteks. Jika ingin merujuk ke keluarga anotasi ini, Anda dapat menggunakan sintaks "/document/people/*/last". Jika Anda ingin merujuk ke anotasi tertentu, Anda dapat menggunakan indeks eksplisit: "/document/people/1/last" untuk mereferensikan nama belakang orang pertama yang diidentifikasi dalam dokumen. Perhatikan bahwa dalam sintaks ini, array diindeks mulai dari 0.
Contoh 3: Mereferensikan anggota dalam larik
Terkadang Anda perlu mengelompokkan semua anotasi jenis tertentu untuk meneruskannya ke keterampilan tertentu. Pertimbangkan keterampilan kustom hipotetis yang mengidentifikasi nama belakang yang paling umum dari semua nama belakang yang diekstrak dalam Contoh 2. Untuk hanya memberikan nama belakang ke kemampuan kustom, spesifikkan konteks sebagai "/document" dan masukan sebagai "/document/people/*/lastname".
Perhatikan bahwa kardinalitas "/document/people/*/lastname" lebih besar daripada kardinalitas dokumen. Mungkin ada 10 simpul nama belakang sementara hanya ada satu simpul dokumen untuk dokumen ini. Dalam hal ini, sistem akan secara otomatis membuat array "/document/people/*/lastname" yang berisi semua elemen dalam dokumen.
{
"@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
"description": "Fictitious skill that gets the most common string from an array of strings",
"uri": "http://names.azurewebsites.net/api/MostCommonString",
"context" : "/document",
"inputs": [
{
"name": "strings",
"source": "/document/people/*/lastname"
}
],
"outputs": [
{
"name": "mostcommon",
"targetName": "common-lastname"
}
]
}
Tips untuk pemecahan masalah jalur anotasi
Jika Anda mengalami masalah dalam menentukan input keterampilan, tips ini mungkin membantu Anda maju:
Jalankan wizard Impor data di atas data Anda untuk meninjau definisi set keterampilan dan pemetaan bidang yang dihasilkan wizard.
Mulai sesi debug pada keterampilan untuk melihat struktur dokumen yang diperluas. Anda dapat mengedit jalur dan bagian lain dari definisi keterampilan, lalu menjalankan keterampilan untuk memvalidasi perubahan Anda.