Keterampilan kognitif kondisional

Keterampilan Bersyarat memungkinkan skenario Pencarian Azure AI yang memerlukan operasi Boolean untuk menentukan data yang akan ditetapkan ke output. Skenario ini meliputi pemfilteran, penetapan nilai default, dan penggabungan data berdasarkan persyaratan.

Pseudocode berikut menunjukkan apa yang dicapai keterampilan kondisional:

if (condition) 
    { output = whenTrue } 
else 
    { output = whenFalse } 

Catatan

Keterampilan ini tidak terikat ke layanan Azure AI. Ini tidak dapat ditagih dan tidak memiliki persyaratan kunci layanan Azure AI.

@odata.type

Microsoft.Skills.Util.ConditionalSkill

Bidang yang dievaluasi

Keterampilan ini istimewa karena inputnya adalah kolom yang dievaluasi.

Item berikut ini adalah nilai ekspresi yang valid:

  • Jalur anotasi (jalur dalam ekspresi harus dibatasi oleh "$(" dan ")")
    Contoh:

        "= $(/document)"
        "= $(/document/content)"
    
  • Literal (string, angka, true, false, null)
    Contoh:

       "= 'this is a string'"   // string (note the single quotation marks)
       "= 34"                   // number
       "= true"                 // Boolean
       "= null"                 // null value
    
  • Ekspresi yang menggunakan operator perbandingan (==, !=, >=, >, <=, <)
    Contoh:

        "= $(/document/language) == 'en'"
        "= $(/document/sentiment) >= 0.5"
    
  • Ekspresi yang menggunakan operator Boolean (&&&, ||, !, ^)
    Contoh:

        "= $(/document/language) == 'en' && $(/document/sentiment) > 0.5"
        "= !true"
    
  • Ekspresi yang menggunakan operator numerik (+, -, *, /, %)
    Contoh:

        "= $(/document/sentiment) + 0.5"         // addition
        "= $(/document/totalValue) * 1.10"       // multiplication
        "= $(/document/lengthInMeters) / 0.3049" // division
    

Karena keterampilan kondisional mendukung evaluasi, Anda dapat menggunakannya dalam skenario transformasi kecil. Sebagai contoh, lihat definisi keterampilan 4.

Input keterampilan

Input peka huruf besar/kecil.

Input Deskripsi
kondisi Input ini merupakan bidang yang dievaluasi yang mewakili kondisi untuk dievaluasi. Kondisi ini harus dievaluasi ke nilai Boolean (true atau false).
Contoh:
"= true"
"= $(/document/language) =='fr'"
"= $(/document/pages/*/language) == $(/document/expectedLanguage)"
whenTrue Input ini adalah bidang yang dievaluasi yang mewakili nilai yang akan dihasilkan jika kondisi dievaluasi ke benar. Untai (karakter) konstanta harus dikembalikan dalam tanda kutip tunggal (' dan ').
Nilai sampel:
"= 'kontrak'"
"= $(/document/contractType)"
"= $(/document/entities/*)"
whenFalse Input ini adalah bidang yang dievaluasi yang mewakili nilai yang akan dihasilkan jika kondisi dievaluasi ke false.
Nilai sampel:
"= 'kontrak'"
"= $(/document/contractType)"
"= $(/document/entities/*)"

Output keterampilan

Ada satu output yang hanya disebut "output." Ini mengembalikan nilai whenFalse jika kondisi salah atau ketikaTrue jika kondisinya benar.

Contoh

Contoh definisi keterampilan 1: Filter dokumen untuk mengambil hanya dokumen Prancis

Output berikut menghasilkan array kalimat ("/document/frenchSentences") jika bahasa dokumen adalah bahasa Prancis. Jika bahasanya bukan bahasa Prancis, nilainya diatur ke null.

{
    "@odata.type": "#Microsoft.Skills.Util.ConditionalSkill",
    "context": "/document",
    "inputs": [
        { "name": "condition", "source": "= $(/document/language) == 'fr'" },
        { "name": "whenTrue", "source": "/document/sentences" },
        { "name": "whenFalse", "source": "= null" }
    ],
    "outputs": [ { "name": "output", "targetName": "frenchSentences" } ]
}

Jika "/document/frenchSentences" digunakan sebagai konteks keterampilan lain, keterampilan itu hanya berjalan jika "/document/frenchSentences" tidak diset ke null.

Sampel definisi keterampilan 2: Set nilai default untuk nilai yang tidak ada

Output berikut membuat anotasi ("/document/languageWithDefault") yang diatur ke bahasa dokumen atau ke "bahasa-bahasa" jika bahasa tidak diatur.

{
    "@odata.type": "#Microsoft.Skills.Util.ConditionalSkill",
    "context": "/document",
    "inputs": [
        { "name": "condition", "source": "= $(/document/language) == null" },
        { "name": "whenTrue", "source": "= 'es'" },
        { "name": "whenFalse", "source": "= $(/document/language)" }
    ],
    "outputs": [ { "name": "output", "targetName": "languageWithDefault" } ]
}

Sampel definisi keterampilan 3: Gabungkan nilai dari dua bidang menjadi satu

Dalam contoh ini, beberapa kalimat memiliki properti FrenchSentiment. Setiap kali properti frenchSentiment null, kami akan menggunakan nilai englishSentiment. Kami menetapkan output ke anggota yang disebut sentiment ("/document/sentences/*/sentiment").

{
    "@odata.type": "#Microsoft.Skills.Util.ConditionalSkill",
    "context": "/document/sentences/*",
    "inputs": [
        { "name": "condition", "source": "= $(/document/sentences/*/frenchSentiment) == null" },
        { "name": "whenTrue", "source": "/document/sentences/*/englishSentiment" },
        { "name": "whenFalse", "source": "/document/sentences/*/frenchSentiment" }
    ],
    "outputs": [ { "name": "output", "targetName": "sentiment" } ]
}

Contoh transformasi

Sampel definisi keterampilan 4: Transformasi data pada satu bidang

Dalam contoh ini, kami menerima sentiment yaitu antara 0 dan 1. Kami ingin mengubahnya menjadi antara -1 dan 1. Kita dapat menggunakan keterampilan kondisional untuk melakukan transformasi kecil ini.

Dalam contoh ini, kita tidak menggunakan aspek keterampilan kondisional karena kondisinya selalu true.

{
    "@odata.type": "#Microsoft.Skills.Util.ConditionalSkill",
    "context": "/document/sentences/*",
    "inputs": [
        { "name": "condition", "source": "= true" },
        { "name": "whenTrue", "source": "= $(/document/sentences/*/sentiment) * 2 - 1" },
        { "name": "whenFalse", "source": "= 0" }
    ],
    "outputs": [ { "name": "output", "targetName": "normalizedSentiment" } ]
}

Pertimbangan khusus

Beberapa parameter dievaluasi, jadi Anda harus sangat berhati-hati untuk mengikuti pola yang didokumentasikan. Ekspresi harus dimulai dengan tanda sama dengan. Jalur harus dibatasi oleh "$(" dan ")". Pastikan untuk meletakkan untai (karakter) dalam tanda kutip tunggal. Ini membantu evaluator membedakan antara untai (karakter) dan jalur dan operator aktual. Selain itu, pastikan untuk menempatkan ruang putih di sekitar operator (misalnya, sebuah "*" di jalur berarti sesuatu yang berbeda dengan kalikan).

Langkah berikutnya