Klasifikasi teks yang menjelaskan keputusannya

11

Saya sedang membangun pengkategorisasi teks untuk kalimat pendek. Selain memberi tahu pengguna "kategori teks yang Anda masukkan adalah C", saya ingin dapat menjelaskan mengapa saya membuat keputusan ini, dengan cara yang singkat dan mudah dimengerti. Misalnya, saya tidak ingin memberi tahu pengguna "Saya memasukkan kalimat Anda ke dalam jaringan saraf 3-lapis yang kompleks dan itulah jawaban yang mendapat skor terbaik"; Saya ingin penjelasan seperti "Kalimat Anda mengandung kata-kata U, V dan W, yang merupakan karakteristik dari kategori ini, karena kalimat-kalimat seperti X, Y dan Z yang muncul dalam data pelatihan".

Pertanyaan saya adalah: algoritma klasifikasi apa yang paling cocok untuk aplikasi seperti itu?

k-terdekat-tetangga sepertinya adalah kandidat yang baik, karena saya dapat memberi tahu pengguna "Kalimat Anda memiliki kategori C karena mirip dengan kalimat X, Y dan Z yang memiliki kategori yang sama. Tetapi kinerjanya dalam masalah kategorisasi teks diketahui. menjadi miskin. Saya mencari classifie yang menyeimbangkan kinerja dengan kemampuan penjelasan.

EDIT: Setelah menghabiskan banyak waktu mencari classifier seperti itu, saya mulai membangun perpustakaan pembelajaran mesin yang disebut limdu , yang memungkinkan classifier untuk menjelaskan keputusan mereka. Ini masih dalam pengembangan, tetapi, sudah membantu saya menjelaskan kepada diri sendiri dan rekan-rekan saya mengapa pengklasifikasi kami sering gagal ...

Erel Segal-Halevi
sumber
Inti dari pembelajaran mesin adalah bahwa Anda tidak peduli apa yang terjadi di bawah tenda, Anda hanya peduli dengan kinerjanya. Pendekatan lain gagal, dan itulah sebabnya semua orang saat ini menggunakan pendekatan statistik buram ini - mereka jauh lebih baik.
Yuval Filmus
2
@Yuval Saya sepenuhnya tidak setuju bahwa pendekatan lain gagal. Mereka tidak optimal tetapi mereka masih mencapai tujuan mengotomatisasi tugas klasifikasi jauh di atas kemampuan manusia atau kesabaran untuk melakukannya. Kotak hitam buram bukan satu-satunya cara untuk secara efektif melakukan pembelajaran mesin terutama dalam situasi seperti ini di mana kinerja bukan satu-satunya pertimbangan. Jadilah sedikit lebih berpikiran terbuka tentang berbagai tujuan di balik tugas pembelajaran mesin.
Richard D

Jawaban:

7

Meskipun berkinerja buruk pada tugas klasifikasi teks, jika Anda ingin penjelasan yang jelas tentang alasan klasifikasi, pohon keputusan akan menjadi pilihan terbaik Anda karena memberikan aturan yang jelas untuk bagaimana sebuah instance diklasifikasikan. Jejak pohon akan memberikan nilai penentuan dan dengan menganalisis contoh yang dekat dengan simpul akar, Anda bahkan mungkin dapat menentukan atribut mana yang lebih signifikan dalam klasifikasi.

Pilihan lain adalah menggunakan classifier Naive Bayes , yang berkinerja lebih baik untuk tugas penambangan teks dan akan memberi Anda skema evaluasi yang komprehensif berdasarkan probabilitas yang dapat Anda gunakan untuk menghasilkan "mengapa" yang Anda cari, bahkan memberikan indikasi nilai atribut mana yang lebih penting daripada yang lain dalam membuat penentuan.

Dukungan Mesin Vektor , khususnya Sequential Minimum Optimization (SMO), tampaknya bekerja dengan baik dengan tugas-tugas ini dan juga memberikan indikasi nilai yang digunakan untuk membuat klasifikasi dalam bentuk bobot atribut dan vektor dukungan, tetapi saya pikir Anda mungkin memiliki waktu yang lebih sulit memperjelas bagaimana bobot dan vektor ini memengaruhi keputusan klasifikasi keseluruhan.

Semoga berhasil dengan proyek Anda! Kedengarannya sangat menarik.

Richard D
sumber
1
Terima kasih. Saya juga menemukan bahwa pengklasifikasi online, seperti perceptron dan winnow, cukup bagus dalam tugas ini (setidaknya dalam skenario saya), dan mudah untuk menjelaskan keputusan dengan melihat nilai absolut setiap fitur menambah skor klasifikasi. Untuk setiap sampel, saya mengurutkan fitur sesuai dengan nilai absolut (fitur * berat), dan menunjukkan beberapa yang pertama.
Erel Segal-Halevi
3

Samar-samar saya ingat bahwa Peter Norvig memiliki implementasi MYCIN , sistem pakar diagnosis medis , yang ditulis dalam LISP dalam bukunya Paradigma Pemrograman Kecerdasan Buatan: Studi Kasus di Common Lisp , yang melakukan hal ini.

Mungkin itu adalah tempat yang baik untuk memulai penelitian Anda. Anda akan menemukan kode sumber online, bersama dengan basis aturan , namun, saya sangat menyarankan membaca teks dan tidak mencoba memahaminya dari kode sumber saja.

Anda juga dapat langsung menuju ke halaman untuk Emycin (penekanan saya),

Emycin adalah shell sistem pakar , kerangka kerja untuk membangun program yang merekam pengetahuan pakar domain dan menggunakan pengetahuan itu untuk membantu pengguna yang tidak ahli memecahkan masalah. Ini menyediakan antarmuka yang membantu para ahli mendefinisikan tipe data dan aturan, algoritma penalaran mundur-balik (mirip dengan Prolog, tetapi dengan perbedaan utama), mekanisme untuk menangani ketidakpastian, dan fasilitas untuk introspeksi yang memungkinkan pengguna mempelajari apa yang diketahui oleh sistem dan apa yang dilakukannya .

Pål GD
sumber
2
Ada alasan mengapa sistem pakar tidak begitu populer lagi, sulit untuk membuat kode semua aturan.
adrianN