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 ...
sumber
Jawaban:
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.
sumber
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),
sumber