Metrik evaluasi untuk mode pemahaman bahasa percakapan

Himpunan data Anda dibagi menjadi dua bagian: satu set untuk pelatihan, dan satu set untuk pengujian. Set pelatihan digunakan untuk melatih model, sementara set pengujian digunakan sebagai pengujian untuk model setelah pelatihan untuk menghitung performa dan evaluasi model. Set pengujian tidak diperkenalkan ke model melalui proses pelatihan, untuk memastikan bahwa model diuji pada data baru.

Evaluasi model dipicu secara otomatis setelah pelatihan berhasil diselesaikan. Proses evaluasi dimulai dengan menggunakan model terlatih untuk memprediksi niat dan entitas yang ditentukan pengguna untuk ucapan dalam set pengujian, dan membandingkannya dengan tag yang disediakan (yang menetapkan dasar kebenaran). Hasil ditampilkan sehingga Anda dapat meninjau performa model. Untuk evaluasi, pemahaman bahasa percakapan menggunakan metrik berikut:

  • Presisi: Mengukur seberapa presisi/akurat model Anda. Ini adalah rasio antara positif yang diidentifikasi dengan benar (positif sejati) dan semua positif yang diidentifikasi. Metrik presisi mengungkapkan berapa banyak kelas yang diprediksi diberi label dengan benar.

    Precision = #True_Positive / (#True_Positive + #False_Positive)

  • Pengenalan: Mengukur kemampuan model untuk memprediksi kelas positif aktual. Ini adalah rasio antara prediksi positif sejati dan apa yang sebenarnya ditandai. Metrik pengenalan mengungkapkan berapa banyak kelas yang diprediksi benar.

    Recall = #True_Positive / (#True_Positive + #False_Negatives)

  • F-measure: F-measure adalah fungsi dari Presisi dan Pengenalan. Hal ini diperlukan ketika Anda mencari keseimbangan antara Presisi dan Pengenalan.

    F1 Score = 2 * Precision * Recall / (Precision + Recall)

Skor presisi, pengenalan, dan f-measure dihitung untuk:

  • Setiap entitas secara terpisah (evaluasi tingkat entitas)
  • Setiap niat secara terpisah (evaluasi tingkat niat)
  • Untuk model secara kolektif (evaluasi tingkat model).

Definisi presisi, pengenalan, dan evaluasi adalah sama untuk evaluasi tingkat entitas, tingkat niat, dan tingkat model. Namun, jumlah untuk Positif Benar, Positif Palsu, dan Negatif Palsu dapat berbeda. Misalnya, pertimbangkan teks berikut ini.

Contoh

  • Buat tanggapan dengan terima kasih banyak.
  • balas dengan mengatakan ya.
  • Silakan periksa email saya.
  • surel ke cynthia bahwa makan malam minggu lalu sangat indah.
  • kirim surel ke mike

Ini adalah niat yang digunakan: Balas,sendEmail,readEmail. Ini adalah entitas: contactName, pesan.

Model ini dapat membuat prediksi berikut:

Ucapan Niat yang diprediksi Niat sebenarnya Entitas yang diprediksi Entitas sebenarnya
Buat tanggapan dengan terima kasih banyak Balas Balas thank you very much sebagai message thank you very much sebagai message
balas dengan mengatakan ya sendEmail Balas -- yes sebagai message
Silakan periksa surel saya readEmail readEmail -- --
surel ke cynthia bahwa makan malam minggu lalu sangat indah Balas sendEmail dinner last week was splendid sebagai message cynthia sebagai contactName, dinner last week was splendid sebagai message
kirim surel ke mike sendEmail sendEmail mike sebagai message mike sebagai contactName

Evaluasi tingkat niat untuk niat Balasan niat

Kunci Count Penjelasan
Positif Benar 1 Ucapan 1 diprediksi dengan benar sebagai Balasan.
Positif Palsu 1 Ucapan 4 diprediksi secara keliru sebagai Balasan.
Negatif Palsu 1 Ucapan 2 diprediksi secara keliru sebagai sendEmail.

Presisi = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5

Pengenalan = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5

Skor F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5

Evaluasi tingkat niat untuk niat sendEmail niat

Kunci Count Penjelasan
Positif Benar 1 Ucapan 5 diprediksi dengan benar sebagai sendEmail
Positif Palsu 1 Ucapan 2 diprediksi secara keliru sebagai sendEmail.
Negatif Palsu 1 Ucapan 4 diprediksi secara keliru sebagai Balasan.

Presisi = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5

Pengenalan = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5

Skor F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5

Evaluasi tingkat niat untuk readEmail niat

Kunci Count Penjelasan
Positif Benar 1 Ucapan 3 diprediksi dengan benar sebagai readEmail.
Positif Palsu 0 --
Negatif Palsu 0 --

Presisi = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1

Pengenalan = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 0) = 1

Skor F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 1 * 1) / (1 + 1) = 1

Evaluasi tingkat entitas untuk contactName entitas

Kunci Count Penjelasan
Positif Benar 1 cynthia diprediksi dengan benar seperti contactName dalam ucapan 4
Positif Palsu 0 --
Negatif Palsu 1 mike diprediksi dengan benar seperti message dalam ucapan 5

Presisi = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1

Pengenalan = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5

Skor F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 1 * 0.5) / (1 + 0.5) = 0.67

Evaluasi tingkat entitas untuk pesan entitas

Kunci Count Penjelasan
Positif Benar 2 thank you very much diprediksi dengan benar seperti message dalam ucapan 1 dan dinner last week was splendid diprediksi dengan benar seperti message dalam ucapan 4
Positif Palsu 1 mike diprediksi dengan benar seperti message dalam ucapan 5
Negatif Palsu 1 yes tidak diprediksi seperti message dalam ucapan 2

Presisi = #True_Positive / (#True_Positive + #False_Positive) = 2 / (2 + 1) = 0.67

Pengenalan = #True_Positive / (#True_Positive + #False_Negatives) = 2 / (2 + 1) = 0.67

Skor F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.67 * 0.67) / (0.67 + 0.67) = 0.67

Evaluasi tingkat model untuk model kolektif

Kunci Count Penjelasan
Positif Benar 6 Jumlah TP untuk semua niat dan entitas
Positif Palsu 3 Jumlah FP untuk semua niat dan entitas
Negatif Palsu 4 Jumlah FN untuk semua niat dan entitas

Presisi = #True_Positive / (#True_Positive + #False_Positive) = 6 / (6 + 3) = 0.67

Pengenalan = #True_Positive / (#True_Positive + #False_Negatives) = 6 / (6 + 4) = 0.60

Skor F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.67 * 0.60) / (0.67 + 0.60) = 0.63

Matriks kebingungan

Matriks Konfusi adalah matriks N x N yang digunakan untuk evaluasi performa model, di mana N adalah jumlah entitas atau niat. Matriks membandingkan label yang diharapkan dengan yang diprediksi oleh model. Hal ini memberikan pandangan holistik tentang seberapa baik performa model dan jenis kesalahan apa yang dibuatnya.

Anda dapat menggunakan matriks Konfusi untuk mengidentifikasi niat atau entitas yang terlalu dekat satu sama lain dan sering salah dipahami (ambiguitas). Dalam hal ini, pertimbangkan untuk menggabungkan jenis niat atau entitas ini. Jika tidak memungkinkan, pertimbangkan untuk menambahkan lebih banyak contoh yang diberi tag dari kedua atau entitas niat untuk membantu model tersebut membedakan keduanya.

Diagonal yang disorot pada gambar di bawah ini adalah entitas yang diprediksi dengan benar, di mana tag yang diprediksi sama dengan tag yang sebenarnya.

Cuplikan layar contoh matriks konfusi

Anda dapat menghitung metrik evaluasi tingkat niat atau tingkat entitas dan tingkat model dari matriks konfusi:

  • Nilai dalam diagonal adalah nilai Positif Benar dari setiap niata atau entitas.
  • Jumlah nilai dalam baris niat atau entitas (tidak termasuk diagonal) adalah positif palsu dari model.
  • Jumlah nilai dalam kolom niat atau entitas (tidak termasuk diagonal) adalah Negatif palsu dari model.

Demikian pula,

  • Positif benar dari model ini adalah jumlah Positif benar untuk semua niat atau entitas.
  • Positif palsu dari model ini adalah jumlah positif palsu untuk semua niat atau entitas.
  • Negatif palsu dari model ini adalah jumlah negatif palsu untuk semua niat atau entitas.

Panduan

Setelah melatih model, Anda akan melihat beberapa panduan dan rekomendasi tentang cara meningkatkan model. Disarankan untuk memiliki model yang mencakup setiap titik di bagian panduan.

  • Set pelatihan memiliki data yang cukup: Ketika niat atau entitas memiliki kurang dari 15 instans berlabel dalam data pelatihan, itu dapat menyebabkan akurasi yang lebih rendah karena model tidak dilatih dengan memadai pada niat tersebut. Dalam hal ini, pertimbangkan untuk menambahkan lebih banyak data berlabel dalam set pelatihan. Anda hanya boleh mempertimbangkan untuk menambahkan lebih banyak data berlabel ke entitas Anda jika entitas Anda memiliki komponen yang dipelajari. Jika entitas Anda hanya ditentukan oleh komponen daftar, bawaan, dan regex, maka rekomendasi ini tidak berlaku.

  • Semua niat atau entitas ada dalam set pengujian: Ketika data pengujian tidak memiliki instans berlabel untuk niat atau entitas, evaluasi model kurang komprehensif karena skenario yang belum diuji. Pertimbangkan untuk memiliki data pengujian untuk setiap niat dan entitas dalam model Anda untuk memastikan semuanya sedang diuji.

  • Perbedaan yang tidak jelas antara niat atau entitas: Ketika data mirip untuk niat atau entitas yang berbeda, itu dapat menyebabkan akurasi yang lebih rendah karena mungkin sering salah diklasifikasikan sebagai satu sama lain. Tinjau niat dan entitas berikut dan pertimbangkan untuk menggabungkannya jika serupa. Jika tidak, tambahkan lebih banyak contoh untuk membedakannya dengan lebih baik satu sama lain. Anda dapat memeriksa tab matriks confusion untuk panduan selengkapnya. Jika Anda melihat dua entitas terus-menerus diprediksi untuk rentang yang sama karena mereka berbagi komponen daftar, bawaan, atau regex yang sama, pastikan untuk menambahkan komponen yang dipelajari untuk setiap entitas dan membuatnya diperlukan. Pelajari selengkapnya tentang komponen entitas.

Langkah berikutnya

Melatih model di Language Studio