Bagikan melalui


Format file .lu

BERLAKU UNTUK: SDK v4

File .lu menjelaskan model pemahaman bahasa. File .lu berisi definisi berbasis teks sederhana seperti Markdown untuk konsep pemahaman bahasa. Anda dapat menggunakan satu atau beberapa file .lu untuk melatih model bahasa untuk layanan atau mesin pemahaman bahasa alami (NLU) yang digunakan bot Anda, seperti Pemahaman Bahasa (LUIS) atau Orkestrator. Mesin NLU yang Anda pilih mungkin hanya dapat menginterpretasikan subset elemen yang dapat dijelaskan oleh file .lu.

Mesin NLU bergantung pada model bahasa untuk memahami apa yang dikatakan pengguna. Mesin membuat model bahasa dari serangkaian contoh pelatihan, sama seperti algoritma pembelajaran mesin apa pun. Setelah dilatih, mesin menggunakan model untuk memprediksi niat ucapan, umumnya dalam bentuk satu atau beberapa niat yang mewakili tugas atau tindakan yang ingin dilakukan pengguna dan nol atau lebih entitas yang mewakili elemen yang relevan dengan niat.

Anda dapat menggunakan LUIS atau Orchestrator dengan bot apa pun yang dikembangkan menggunakan Bot Framework SDK atau Composer.

Catatan

Pemahaman Bahasa (LUIS) akan dihentikan pada 1 Oktober 2025. Mulai 1 April 2023, Anda tidak akan dapat membuat sumber daya LUIS baru. Versi pemahaman bahasa yang lebih baru sekarang tersedia sebagai bagian dari Bahasa Azure AI.

Pemahaman bahasa percakapan (CLU), fitur Bahasa Azure AI, adalah versi LUIS yang diperbarui. Untuk informasi selengkapnya tentang dukungan pemahaman bahasa di Bot Framework SDK, lihat Pemahaman bahasa alami.

Artikel ini adalah referensi tentang cara mewakili elemen model bahasa dalam format file .lu. Untuk informasi tentang bagaimana pemahaman bahasa digunakan dalam bot, lihat Pemahaman Bahasa atau Pemrosesan bahasa alami di Composer.

Menentukan niat menggunakan contoh ucapan

Niat mewakili tugas atau tindakan yang ingin dilakukan pengguna, seperti yang dinyatakan dalam ucapan pengguna. Anda menambahkan niat ke bot anda untuk mengaktifkannya untuk mengidentifikasi grup pertanyaan atau perintah yang mewakili niat pengguna yang sama.

Beberapa contoh niat yang mungkin Anda tentukan untuk bot perjalanan, dengan contoh ucapan yang ditentukan dari:

Niat Contoh ucapan
BookFlight "Pesankan penerbangan ke Maui minggu depan"
"Terbangkan aku ke Maui pada tanggal 17"
"Aku butuh tiket pesawat jumat depan ke Maui"
Pesan Pembuka "Hai"
"Halo"
"Selamat sore"
CheckWeather "Seperti apa cuaca di Maui minggu depan?"
Tidak ada "Saya suka kue"
"Bullfrogs telah direkam melompat lebih dari 7 kaki"

Selain niat yang Anda tentukan, Tidak ada niat fallback yang menyebabkan unknownIntent peristiwa diaktifkan ketika tidak ada niat yang dapat ditentukan dari ungkapan pengguna. Saat menggunakan LUIS, niat Tidak Ada adalah niat yang diperlukan yang perlu Anda buat dengan ucapan yang berada di luar domain Anda. Ucapan yang terkait dengan niat Tidak Ada Anda harus terdiri sekitar 10% dari total ucapan dalam file .lu Anda.

Niat dengan ungkapan sampel mereka dinyatakan dengan cara berikut:

# <intent-name>
    - <utterance1>
    - <utterance2>

# <intent-name> menjelaskan bagian definisi niat baru. Setiap baris setelah definisi niat adalah contoh ucapan yang menjelaskan niat tersebut - <utterance> menggunakan format .

Berikut adalah contoh file .lu yang menunjukkan niat ini dan contoh ucapan yang menangkap cara pengguna dapat mengekspresikan niat:

> Use ">" to create a comment in your .lu files.
> Use multiple comment ">" characters to define outlining
> sections in the file to help you organize the content.

>> Primary intents
# BookFlight
- Book me a flight to Maui next week
- Fly me to Maui on the 17th
- I need a plane ticket next Friday to Maui

# Greeting
- Hi
- Hello
- Good afternoon

>> Secondary intents
# CheckWeather
- What's the weather like in Maui next week?

Catatan

-Gunakan karakter , , +atau * untuk menunjukkan daftar. Daftar bernomor tidak didukung.

Gunakan > untuk membuat komentar.

Beberapa karakter komentar (">") juga dapat digunakan untuk menentukan bagian kerangka dalam file .lu untuk membantu Anda mengatur konten. Composer memungkinkan Anda memanfaatkan kerangka saat mengedit file LU.

Untuk informasi selengkapnya tentang niat dan ucapan, lihat Niat di aplikasi LUIS Anda dan Memahami ucapan yang baik untuk aplikasi LUIS Anda dalam dokumentasi LUIS.

Entitas

Entitas adalah bagian dari ucapan yang dapat dianggap sebagai parameter yang dapat digunakan dalam interpretasi niat. Misalnya, dalam ucapan Pesan tiket ke Maui, Maui adalah entitas FlightDestination.

Contoh ucapan pengguna Prediksi niat Entitas diekstrak Penjelasan
Halo, bagaimana kabar Anda? Pesan Pembuka - Tidak ada entitas untuk diekstrak.
"Pesan penerbangan ke Maui" BookFlight "Maui" Entitas "FlightDestination" diekstrak sebagai "Maui".
"Seperti apa cuaca di Maui minggu depan?" CheckWeather "Maui", "minggu depan" Entitas "WeatherLocation" diekstrak sebagai entitas "Maui" dan "DateRange" diekstrak sebagai "minggu depan".
"Saya ingin memesan pizza kecil" orderPizza "kecil" Entitas "Ukuran" diekstrak sebagai "kecil".
"Jadwalkan rapat pukul 13.00 dengan Bob dalam Distribusi" ScheduleMeeting "1pm", "Bob" Entitas "MeetingTime" diekstrak sebagai entitas "1pm" dan "Attendees" diekstrak sebagai "Bob".

Tip

Untuk informasi selengkapnya khusus untuk menggunakan entitas di LUIS, lihat Entitas di LUIS dalam dokumentasi LUIS.

Definisi entitas

Definisi entitas mendefinisikan cara mengenali rentang dalam ucapan sebagai entitas yang kemudian dapat Anda gunakan di bot Anda. Ada banyak jenis entitas yang berbeda termasuk: mesin yang dipelajari, bawaan, daftar, ekspresi reguler, dan pola.

Definisi entitas dalam file .lu memulai entri dengan tanda (@) diikuti dengan jenis entitas dan nama entitas:

@ <entity-type> <entity-name>

Secara opsional, setiap entitas juga dapat memiliki peran yang mengidentifikasi penggunaan yang berbeda dari entitas yang sama. Anda juga dapat menambahkan fitur untuk membantu melakukan pekerjaan yang lebih baik dalam mengenali entitas. Sintaks umum terlihat seperti ini:

@ <entity-type> <entity-name> [[hasRole[s]] <comma-separated-list-of-roles>] [hasFeature[s] <comma-separated-list-of-features>]

Entitas yang memerlukan definisi, seperti entitas daftar dan ekspresi reguler, diwakili menggunakan notasi berikut:

@ <entity-type> <entity1-name> = <definition>

Contoh tambahan deklarasi entitas akan ditunjukkan di bagian berikut bersama dengan jenis entitas yang diterapkan.

Dengan pengecualian entitas bawaan, nama entitas dapat berisi beberapa kata dengan spasi. Semua nama entitas dengan spasi harus dibungkus dalam tanda kutip:

@ ml "this is a simple entity" role1, role2 = definition
@ ml 'another simple entity' hasRole role1 hasFeatures feature1, feature2

Jenis entitas

Ada beberapa jenis entitas dalam LUIS. Di bagian berikut, Anda akan mempelajari tentang jenis entitas dan konsep terkait ini, seperti peran dan fitur, dan contoh cara membuat templat LU yang menggunakannya.

Entitas yang dipelajari mesin

Entitas yang dipelajari mesin adalah entitas yang memungkinkan Anda memberikan contoh di mana Anda memberi labelnya dalam contoh ucapan. Ini memberi mereka konteks yang diperlukan untuk dipelajari. Entitas yang dipelajari mesin sangat ideal saat mengidentifikasi data yang tidak selalu diformat dengan baik tetapi memiliki arti yang sama.

Contoh berikut menunjukkan entitas yang dipelajari mesin bernama kota (@ ml city) dan bookFlight niat dengan contoh ucapan dengan entitas Anda berlabel:

> Define the city machine-learned entity
@ ml city

> Define the bookFlight intent with sample utterances that contain the machine-learned entities
# bookFlight
- Book a flight from {@city = Cairo} to {@city = Seattle}
- Get me 2 tickets for a flight to {@city = Bengaluru}
- Purchase ticket from {@city = Washington} to {@city = Tampa Bay}

Ketika pengguna mengatakan sesuatu yang mirip seperti "Saya perlu penerbangan yang dipesan dari London ke madrid", LUIS akan mendeteksi niat 'bookFlight' dan mengekstrak London dan Madrid sebagai entitas kota.

Peran pada dasarnya adalah lapisan tambahan informasi kontekstual yang dapat Anda tambahkan ke entitas yang dipelajari mesin Anda, yang juga belajar dari konteks. Contoh ucapan berikut menunjukkan peran keberangkatan dan tujuan yang terkait dengan entitas kota:

- Book a flight from {@city:departure = Cairo} to {@city:destination = Seattle}

Entitas yang dipelajari mesin juga dapat menjadi kompleks di mana mereka memiliki hierarki entitas yang terkait satu sama lain. Misalnya, Anda dapat memiliki sesuatu seperti pizzaOrder entitas yang memiliki entitas anak berikut: kuantitas, ukuran, kerak, topping, dan sebagainya.

Anda menentukan entitas anak dengan menambahkan tanda hubung sebelumnya (-) ke tanda tangan (@) dan inden, seperti yang ditunjukkan contoh berikut:

@ prebuilt number
@ list sizeList
@ list crustList
@ list toppingList

@ ml pizzaOrder
    - @ number Quantity
    - @ sizeList Size
    - @ crustList Crust
    - @ toppingList Topping

Dalam contoh di atas, entitas angka adalah entitas bawaan. Entitas yang tersisa adalah semua entitas daftar.

Contoh berikutnya menunjukkan definisi entitas yang address dipelajari mesin, dengan fromAddress dan toAddress sebagai dua peran, serta anak-anak.

@ list cityList
@ prebuilt number
@ prebuilt geographyV2
@ regex regexZipcode = /[0-9]{5}/
@ ml address hasRoles fromAddress, toAddress
@ address =
    - @ number 'door number'
    - @ ml streetName
    - @ ml location usesFeature geographyV2
        - @ cityList city
        - @ regexZipcode zipcode

Entitas bawaan

Entitas LUIS bawaan didefinisikan oleh sistem. Ini menghemat pekerjaan Anda karena berkualitas tinggi dan memberikan nilai yang dinormalisasi yang lebih mudah digunakan dalam program. Misalnya frasa "seribu dan dua" akan menjadi angka 1002. Jenis LUIS [entitas bawaan][entitas bawaan] berikut didukung:

  • usia
  • datetimeV2
  • dimensi
  • email
  • geographyV2
  • Keyphrase
  • money
  • number
  • ordinal
  • ordinalV2
  • persentase
  • personName
  • phonenumber
  • suhu
  • url
  • datetime

Berikut adalah contoh cara menentukan entitas bawaan:

@ prebuilt number 
@ prebuilt datetimeV2
@ prebuilt age

Entitas daftar

[Mencantumkan entitas] [list-entity] mewakili sekumpulan kata terkait yang tetap dan tertutup bersama dengan sinonimnya. Nilai yang dinormalisasi dikembalikan ketika salah satu sinonim yang sesuai dikenali. Mereka peka huruf besar/kecil dan diekstrak berdasarkan kecocokan teks yang tepat.

Contoh berikut menunjukkan sintaks untuk menentukan entitas daftar:

@ list <entityName>  =
    - <normalized-value> :
        - <synonym1>
        - <synonym2>
        - ...
    - <normalized-value> :
        - <synonym1>, <synonym2>, ...

Memperluas pizzaOrder contoh dari bagian entitas yang dipelajari mesin, berikut adalah contoh daftar untuk ukuran dan entitas anak kerak:

@ list sizeList = 
    - Extra Large :
        - extra large
        - XL
        - xl
        - huge
        - massive
    - Large:
        - large
        - big
    - Medium :
        - medium
        - regular
    - Small :
        - small
        - smallest
        - individual

@ list crustList = 
    - Stuffed Crust :
        - stuffed crust
        - stufffed crust
    - Thin :
        - thin
        - thin crust
    - Thick :
        - thick
        - thick crust
        - Deep Dish
        - deep dish

Tip

Karena entitas daftar memerlukan kecocokan yang tepat untuk diekstraksi, hasil Anda dapat meningkat dengan menambahkan kesalahan ejaan umum. Salah satu penyebab umum kesalahan ejaan adalah akibat kesalahan pengetikan seperti huruf ganda tiga kali lipat seperti dalam "kerak stufffed" dalam contoh di atas.

Saat menggunakan entitas daftar, Anda harus menyertakan nilai dari daftar langsung dalam ucapan, Anda tidak perlu melabeli entitas daftar meskipun Anda masih dapat menggunakannya sebagai tempat penampung dalam pola. Contoh berikut menunjukkan ucapan dengan nilai dari daftar:

- I'd like to order a large pepperoni stuffed crust pizza.

Entitas ekspresi reguler

[entitas ekspresi reguler][regular-expression-entity] mengekstrak entitas berdasarkan pola karakter ekspresi reguler yang Anda berikan. Ekspresi reguler paling baik untuk teks terstruktur atau urutan nilai alfanumerik yang telah ditentukan sebelumnya yang diharapkan dalam format tertentu. Contohnya:

Entitas Ekspresi reguler Contoh
Nomor penerbangan penerbangan [A-Z]{2} [0-9]{4} penerbangan AS 1234
Nomor Kartu Kredit [0-9]{16} 5478789865437632

Berikut adalah contoh definisi entitas ekspresi reguler:

> Flight Number regular expression entity definition
@ regex flightNumber = /flight [A-Z]{2} [0-9]{4}/

> Credit Card Number regular expression entity definition
@ regex creditCardNumber = /[0-9]{16}/

Peran

Peran adalah alias bernama untuk entitas berdasarkan konteks dalam ucapan. Peran dapat digunakan dengan jenis entitas bawaan atau kustom dan digunakan dalam contoh ucapan dan pola.

Dalam contoh di bawah entitas Lokasi memiliki dua peran, origin dan destination:

Entitas Peran Kegunaan
Lokasi asal Dari mana pesawat berangkat
Lokasi tujuan Di mana pesawat mendarat

Peran dalam format file .lu dapat didefinisikan secara eksplisit atau implisit. Definisi peran eksplisit mengikuti notasi:

@ <entityType> <entityName> [hasRole[s]] role1, role2, ...

Ditunjukkan di bawah ini adalah berbagai cara Anda dapat secara eksplisit menentukan entitas dan perannya:

> # ml entity definition with roles
> the following are 4 different approaches to define roles:

@ ml name role1, role2

@ ml name hasRoles role1, role2

@ ml name
@ name hasRoles role1, role2

@ ml name
@ name hasRole role1
@ name hasRole role2

Anda juga dapat secara implisit menentukan peran secara langsung dalam pola dan ucapan berlabel menggunakan format berikut:

{@<entityName>:<roleName>}

Anda dapat melihat dalam contoh di bawah ini bagaimana peran dan userName:lastName secara implisit userName:firstName ditentukan:

# getUserName
- My first name is {@userName:firstName=vishwac}
- My full name is {@userName:firstName=vishwac} {@userName:lastName=kannan}
- Hello, I'm {@userName:firstName=vishwac}
- {@userName=vishwac} is my name

@ ml userName

Dalam pola, Anda dapat menggunakan peran menggunakan {<entityName>:<roleName>} notasi. Berikut contohnya:

# getUserName
- call me {name:userName}
- I'm {name:userName}
- my name is {name:userName}

Anda juga dapat menentukan beberapa peran untuk entitas dalam pola, yang terlihat di bawah ini:

> Roles can be specified for list entity types as well - in this case fromCity and toCity are added as roles to the 'city' list entity defined further below

# BookFlight
- book flight from {city:fromCity} to {city:toCity}
- [can you] get me a flight from {city:fromCity} to {city:toCity}
- get me a flight to {city:toCity}
- I need to fly from {city:fromCity}

$city:Seattle=
- Seattle
- Tacoma
- SeaTac
- SEA

$city:Portland=
- Portland
- PDX

Pola

[Pola] [] memungkinkan Anda untuk mencakup sejumlah besar contoh yang harus dicocokkan dengan membuat ucapan dengan place holder di mana entitas harus ditemukan. Pola adalah ekspresi reguler tingkat token dengan tempat penampung untuk entitas. Jika ucapan memiliki tempat penampung entitas atau sintaks pola, maka ditafsirkan sebagai pola. Jika tidak, itu ditafsirkan sebagai ucapan untuk melatih pembelajaran mesin.

Pemegang tempat entitas dapat sesuai dengan entitas dari jenis apa pun atau mereka dapat didefinisikan oleh pola itu sendiri, seperti ketika bagian dalam pola adalah entitas yang diidentifikasi dengan melihat kata-kata di sekitarnya.

Sintaks pola

Format file .lu mendukung LUIS [Sintaks pola][]. Sintaks pola adalah templat yang disematkan dalam ucapan. Templat harus berisi kata dan entitas yang ingin Anda cocokkan, serta kata dan tanda baca yang ingin Anda abaikan. Templat bukan ekspresi reguler.

Entitas dalam pola dikelilingi oleh kurung kurawal, {}. Pola dapat mencakup entitas, dan entitas dengan peran. [Pattern.any] [pattern-any] adalah entitas yang hanya digunakan dalam pola.

Function Sintaks Tingkat berlapis Contoh
entitas {} -Kawat gigi 2 Where is form {entity-name}?
opsional [] - kurung siku
Ada batas 3 pada tingkat bersarang dari kombinasi opsional dan pengelompokan apa pun
2 The question mark is optional [?]
pengelompokan () - tanda kurung 2 is (a \| b)
atau | - bilah vertikal (pipa)
Ada batas 2 pada bilah vertikal (Atau) dalam satu grup
- Where is form ({form-name-short} \| {form-name-long} \| {form-number})
awal dan/atau akhir ujaran ^ - tanda sisipan - ^begin the utterance
the utterance is done^
^strict literal match of entire utterance with {number} entity^

Lihat artikel [Sintaks pola][] dalam dokumentasi LUIS untuk informasi selengkapnya.

Contoh berikut menunjukkan definisi yang akan diperlakukan sebagai pola dengan entitas yang alarmTime ditentukan oleh pola:

# DeleteAlarm
- delete the {alarmTime} alarm

Ucapan "hapus alarm jam 7 pagi" akan cocok dengan pola dan akan mengenali alarmTime entitas "7am".

Sebaliknya, contoh berikut adalah ungkapan berlabel di mana alarmTime merupakan entitas yang dipelajari mesin karena memiliki nilai berlabel 7 PAGI:

# DeleteAlarm
- delete the {alarmTime=7AM} alarm

Anda tidak dapat mencampur label entitas dan tempat penampung entitas dalam ucapan yang sama, tetapi Anda dapat menggunakan place holder yang sesuai dengan entitas yang dipelajari mesin.

Tip

Anda harus memahami bagaimana bot Anda merespons input pengguna sebelum menambahkan pola, karena pola ditimbang lebih berat daripada contoh ucapan dan akan condong keyakinan. Tidak ada salahnya menambahkannya di awal desain model Anda, tetapi lebih mudah untuk melihat bagaimana setiap pola mengubah model setelah model diuji dengan ucapan.

Daftar frasa

[daftar frasa][daftar frasa] adalah daftar kata atau frasa yang membantu menemukan konsep yang ingin Anda identifikasi. Daftar tidak peka huruf besar/kecil. Daftar frasa memiliki dua tujuan yang berbeda:

  • Perluas kamus: Ini adalah default saat Anda menentukan daftar frasa dan dikenal sebagai tidak dapat dipertukarkan. Frasa multi-kata menjadi fitur untuk pembelajaran mesin yang membutuhkan lebih sedikit contoh untuk dipelajari. Dalam penggunaan ini, tidak ada hubungan antara anggota daftar fase.
  • Tentukan sinonim: Daftar frasa yang dapat dipertukarkan digunakan untuk menentukan sinonim yang berarti hal yang sama. Penggunaan ini membantu menggeneralisasi dengan lebih sedikit contoh. Frasa apa pun dalam daftar menghasilkan fitur yang sama dengan pembelajaran mesin. Untuk menggunakan ini, perlu menentukan interchangeable dalam definisi daftar frasa Anda (@ phraselist <Name>(interchangeable))

Catatan

fitur dapat berupa daftar frasa atau entitas yang Anda kaitkan dengan niat atau entitas untuk menekankan pentingnya fitur tersebut dalam mendeteksi niat pengguna secara akurat. Lihat Menambahkan daftar frasa sebagai fitur untuk informasi selengkapnya.

Untuk informasi tambahan tentang kapan dan cara menggunakan daftar frasa termasuk skenario umum yang digunakan, lihat [Buat daftar frasa untuk konsep][phrase-list].

Anda menentukan daftar frasa menggunakan notasi berikut:

@ phraselist <Name>
    - <phrase1>
    - <phrase2>

Berikut adalah contoh daftar frasa yang digunakan untuk memperluas kamus:

@ phraseList newTerms=
- surf the sky
- jump on the beam
- blue sky pajamas

Daftar frasa juga dapat digunakan untuk menentukan sinonim dengan menandainya sebagai dapat dipertukarkan.

@ phraseList Want(interchangeable) =
    - require, need, desire, know

> You can also break up the phrase list values into a bulleted list
@ phraseList Want(interchangeable) =
    - require
    - need
    - desire
    - know

Secara default, daftar frasa tersedia untuk semua niat dan entitas yang dipelajari. Ada tiga status ketersediaan:

Status Ketersediaan Deskripsi
enabledForAllModels (default) Saat daftar frasa ditandai sebagai enabledForAllModels, daftar frasa tersedia untuk semua model apakah Anda secara khusus mencantumkannya sebagai fitur atau tidak.
disabledForAllModels Saat daftar frasa ditandai sebagai disabledForAllModels, daftar tersebut hanya digunakan dalam model jika secara khusus dicantumkan sebagai fitur.
dinonaktifkan Saat daftar frasa ditandai sebagai disabled, daftar tersebut tidak digunakan di mana pun, termasuk model apa pun yang secara khusus tercantum sebagai fitur. Ini menyediakan cara mudah untuk menonaktifkan daftar frasa untuk melihat seberapa baik hal-hal bekerja tanpanya.

Daftar frasa tersedia secara global secara default, dan juga dapat diatur secara khusus menggunakan enabledForAllModels kata kunci:

@ phraselist abc enabledForAllModels

Dua contoh pengaturan daftar frasa ke disabledForAllModels:

@ phraselist abc disabledForAllModels

> You can also use this approach
@ phraselist question(interchangeable) =
    - are you
    - you are

@ question disabledForAllModels

Saat mengatur daftar frasa ke disabled, itu tidak akan digunakan, bahkan ketika secara khusus terdaftar sebagai fitur:

> phrase list definition, temporarily set to disabled to measure its impact

@ phraselist yourPhraseList disabled

> phrase list as feature to intent, won't be used

@ intent yourIntent usesFeature yourPhraseList

Daftar frasa dapat digunakan sebagai fitur untuk niat dan entitas tertentu seperti yang dijelaskan di bagian berikutnya.

Menambahkan fitur ke niat dan entitas

Pembelajaran mesin bekerja dengan mengambil fitur dan mempelajari bagaimana hubungannya dengan niat atau entitas yang diinginkan dari contoh ucapan. Secara default, fitur hanyalah kata-kata yang membentuk ucapan. Daftar frasa menyediakan sarana untuk mengelompokkan beberapa kata ke dalam fitur baru; ini membuat pembelajaran mesin menggeneralisasi lebih baik dari lebih sedikit contoh. Secara default, daftar frasa bersifat global dan berlaku untuk semua model yang dipelajari mesin, tetapi Anda juga dapat mengikatnya dengan niat atau entitas tertentu. Anda juga dapat menggunakan niat atau entitas sebagai fitur untuk mendeteksi niat lain sebagai entitas. Ini menyediakan modularitas sehingga Anda dapat membangun konsep yang lebih kompleks dari blok penyusun yang lebih sederhana.

Catatan

Dalam pembelajaran mesin, fitur adalah teks yang menjelaskan sifat atau atribut data yang membedakan yang diamati dan dipelajari sistem Anda. Daftar frasa, niat, dan entitas dapat digunakan sebagai fitur seperti yang dijelaskan di bagian ini dan berikut.

Fitur dapat ditambahkan ke niat atau entitas yang dipelajari menggunakan usesFeature kata kunci.

Menambahkan daftar frasa sebagai fitur

Daftar frasa dapat ditambahkan sebagai fitur untuk niat atau entitas. Ini membantu niat atau entitas tertentu tanpa memengaruhi niat dan entitas lain. Berikut adalah contoh cara menentukan daftar frasa sebagai fitur ke model lain:

> phrase list definition

@ phraseList PLCity(interchangeable) =
    - seattle
    - space needle
    - SEATAC
    - SEA

> phrase list as feature to intent 

@ intent getUserProfileIntent usesFeature PLCity

> phrase list as a feature to an ml entity

@ ml myCity usesFeature PLCity

@ regex regexZipcode = /[0-9]{5}/

> a phrase list is used as a feature in a hierarchal entity

@ ml address fromAddress, toAddress
@ address =
    - @ number 'door number'
    - @ ml streetName
    - @ ml location
        - @ ml city usesFeature PLCity
        - @ regexZipcode zipcode

Menambahkan entitas atau niat sebagai fitur

Di bawah ini adalah contoh cara menambahkan niat dan entitas sebagai fitur dengan usesFeature:

> entity definition - @ <entityType> <entityName> [<roles>]

@ prebuilt personName
@ prebuilt age

> entity definition with roles

@ ml userName hasRoles fistName, lastName

> add an entity as a feature to another entity

@ userName usesFeature personName

> add an entity as feature to an intent

@ intent getUserNameIntent usesFeature personName

> Intent definition

# getUserNameIntent
- utterances

> multiple entities as a feature to a model

@ intent getUserNameIntent usesFeature age, personName

> intent as a feature to another intent

@ intent getUserProfileIntent usesFeature getUserNameIntent

# getUserProfileIntent
- utterances

Metadata

Anda dapat menyertakan metadata yang terkait dengan aplikasi LUIS atau basis pengetahuan QnA Maker Anda dalam file .lu. Ini akan membantu mengarahkan pengurai untuk menangani konten LU dengan benar. Metadata biasanya ditambahkan ke awal file .lu.

Berikut cara menentukan informasi konfigurasi menggunakan > !#:

> !# @<property> = <value>
> !# @<scope>.<property> = <value>
> !# @<scope>.<property> = <semicolon-delimited-key-value-pairs>

Perhatikan bahwa setiap informasi yang secara eksplisit diteruskan melalui argumen CLI akan mengambil alih informasi dalam file .lu.

> LUIS application information
> !# @app.name = my luis application
> !# @app.desc = description of my luis application
> !# @app.versionId = 1.0
> !# @app.culture = en-us
> !# @app.luis_schema_version = 7.0.0
> !# @app.settings.NormalizePunctuation = true
> !# @app.settings.NormalizeWordForm = true
> !# @app.settings.UseAllTrainingData = true
> !# @app.tokenizerVersion = 1.0.0

Lihat tabel di bawah ini untuk deskripsi nilai metadata aplikasi yang digunakan dalam contoh di atas. Untuk informasi tentang app.settings di LUIS, lihat [Pengaturan aplikasi dan versi][luis-metadata] dalam dokumentasi LUIS.

Metadata Deskripsi
Nama Nama aplikasi Anda
VersionId Nama versi tertentu tersebut
Kultur Bahasa yang digunakan oleh aplikasi Anda
Versi Skema Skema LUIS diperbarui kapan saja fitur atau pengaturan baru ditambahkan di LUIS. Gunakan nomor versi skema yang Anda gunakan saat membuat atau memperbarui model LUIS Anda.

Referensi eksternal

Bagian di bawah ini merinci cara membuat file lokal dan referensi URI .

Referensi file lokal

Catatan

Azure AI QnA Maker akan dihentikan pada 31 Maret 2025. Mulai 1 Oktober 2022, Anda tidak akan dapat membuat sumber daya atau basis pengetahuan QnA Maker baru. Versi kemampuan pertanyaan dan jawaban yang lebih baru sekarang tersedia sebagai bagian dari Bahasa Azure AI.

Jawaban atas pertanyaan kustom, fitur Bahasa Azure AI, adalah versi terbaru dari layanan QnA Maker. Untuk informasi selengkapnya tentang dukungan tanya jawab di Bot Framework SDK, lihat Pemahaman bahasa alami.

Mereferensikan file .lu. Ikuti sintaks tautan Markdown. Referensi yang didukung meliputi:

  • Referensi ke file .lu lain melalui [link name](<.lu file name>). Referensi dapat berupa jalur absolut atau jalur relatif dari file .lu yang berisi.
  • Referensi ke folder dengan file .lu lainnya didukung melalui:
    • [link name](<.lu file path>*): mencari file .lu di bawah jalur absolut atau relatif yang ditentukan
    • [link name](<.lu file path>**): secara rekursif mencari file .lu di bawah jalur absolut atau relatif yang ditentukan, termasuk subfolder.
  • Anda juga dapat menambahkan referensi ke ucapan yang ditentukan dalam file tertentu di bawah bagian niat atau sebagai pasangan QnA.
    • [link name](<.lu file path>#<INTENT-NAME>): menemukan semua ucapan di bawah <INTENT-NAME> dalam file .lu dan menambahkannya ke daftar ucapan di mana referensi ditentukan.
    • [link name](<.lu file path>#<INTENT-NAME>*utterances*): menemukan semua ucapan (bukan pola) di bawah <INTENT-NAME> dalam file .lu dan menambahkannya ke daftar ucapan di mana referensi ditentukan.
    • [link name](<.lu file path>#<INTENT-NAME>*patterns*): menemukan semua pola (bukan ucapan) di bawah <INTENT-NAME> dalam file .lu dan menambahkannya ke daftar pola tempat referensi ditentukan.
    • [link name](<.lu file path>#*utterances*): menemukan semua ucapan dalam file .lu dan menambahkannya ke daftar ucapan tempat referensi ditentukan.
    • [link name](<.lu file path>#*patterns*): menemukan semua pola dalam file .lu dan menambahkannya ke daftar ucapan tempat referensi ditentukan.
    • [link name](<.lu file path>#*utterancesAndPatterns*): menemukan semua ucapan dan pola dalam file .lu dan menambahkannya ke daftar ucapan tempat referensi ditentukan.
    • [link name](<.qna file path>#$name?): menemukan semua perubahan dari definisi perubahan tertentu dalam konten .qna dan menambahkannya ke daftar ucapan tempat referensi ditentukan.
    • [link name](<.qna file path>#*alterations*?): menemukan semua perubahan dari konten .qna dan menambahkannya ke daftar ucapan tempat referensi ditentukan.
    • [link name](<.qna file path>#?question-to-find?): menemukan semua pertanyaan variasi dari pertanyaan tertentu dan menambahkannya ke daftar ucapan tempat referensi ditentukan. Perhatikan bahwa spasi apa pun dalam pertanyaan Anda harus diganti dengan - karakter .
    • [link name](<.qna file path>#*answers*?): menemukan semua jawaban dan menambahkannya ke daftar ungkapan di mana referensi ditentukan.

Berikut adalah contoh referensi yang disebutkan di atas:

> You can include references to other .lu files

[All LU files](./all.lu)

> References to other files can have wildcards in them

[en-us](./en-us/*)

> References to other lu files can include subfolders as well.
> /** indicates to the parser to recursively look for .lu files in all subfolders as well.

[all LU files](../**)

> You can include deep references to intents defined in a .lu file in utterances

# None
- [None uttearnces](./all.lu#Help)

> With the above statement, the parser will parse all.lu and extract out all utterances associated with the 'Help' intent and add them under 'None' intent as defined in this file.

> NOTE: This **only** works for utterances as entities that are referenced by the uttearnces in the 'Help' intent won't be brought forward to this .lu file.

# All utterances
> you can use the *utterances* wild card to include all utterances from a lu file. This includes utterances across all intents defined in that .lu file.
- [all.lu](./all.lu#*utterances*)
> you can use the *patterns* wild card to include all patterns from a lu file.
> - [all.lu](./all.lu#*patterns*)
> you can use the *utterancesAndPatterns* wild card to include all utterances and patterns from a lu file.
> - [all.lu](./all.lu#*utterancesAndPatterns*)

> You can include wild cards with deep references to QnA maker questions defined in a .qna file in utterances

# None
- [QnA questions](./*#?)

> With the above statement, the parser will parse **all** .lu files under ./, extract out all questions from QnA pairs in those files and add them under 'None' intent as defined in this file.

> You can include deep references to QnA maker questions defined in a .qna file in utterances

# None
- [QnA questions](./qna1.qna#?)

> With the above statement, the parser will parse qna1.lu and extract out all questions from QnA pairs in that file and add them under 'None' intent as defined in this file.

Referensi URI

Di bawah ini adalah contoh cara membuat referensi URI:

> URI to LU resource
[import](http://.../foo.lu)

# intent1
> Ability to pull in specific utterances from an intent
- [import](http://.../foo.lu#None)

# intent2
> Ability to pull in utterances or patterns or both from a specific intent 'None'
- [import](http://..../foo.lu#None*utterances*)
- [import](http://..../bar.lu#None*patterns*)
- [import](http://..../taz.lu#None*utterancesandpatterns*)

# intent3
> Ability to pull in all utterances or patterns or both across all intents
- [import](http://..../foo.lu#*utterances*)
- [import](http://..../bar.lu#*patterns*)
- [import](http://..../taz.lu#*utterancesandpatterns*)

Informasi Tambahan

  • Baca format file .qna untuk informasi selengkapnya tentang file .qna.