Mari kita selesaikan dari bawah ke atas. Klasifikasi (juga dikenal sebagai kategorisasi) adalah contoh pembelajaran terawasi . Dalam pembelajaran yang diawasi, Anda memiliki:
- model - sesuatu yang mendekati struktur internal dalam data Anda, memungkinkan Anda untuk memikirkannya dan membuat prediksi yang berguna (misalnya memprediksi kelas suatu objek); biasanya model memiliki parameter yang ingin Anda "pelajari"
- melatih dan menguji dataset - set objek yang Anda gunakan untuk melatih model Anda (menemukan nilai bagus untuk parameter) dan mengevaluasi lebih lanjut
- algoritma pelatihan dan klasifikasi - pertama menjelaskan cara belajar model dari set data pelatihan, kedua menunjukkan cara mendapatkan kelas objek baru yang diberikan model terlatih
Sekarang mari kita ambil contoh sederhana klasifikasi spam. Kumpulan data pelatihan Anda adalah kumpulan email + label yang sesuai - "spam" atau "bukan spam". Dataset Pengujian memiliki struktur yang sama, tetapi dibuat dari beberapa email independen (biasanya satu hanya membagi dataset-nya dan membuat, katakanlah, 9/10 darinya untuk digunakan untuk pelatihan dan 1/10 - untuk pengujian). Salah satu cara untuk memodelkan email adalah dengan merepresentasikan masing-masingnya sebagai kumpulan kata. Jika kita mengasumsikan bahwa kata-kata tidak saling tergantung satu sama lain, kita dapat menggunakan pengklasifikasi Naif Bayes , yaitu, menghitung probabilitas sebelumnya untuk setiap kata dan setiap kelas (algoritma pelatihan) dan kemudian menerapkan teorema Bayes untuk menemukan probabilitas posterior dari dokumen baru yang akan dimiliki. kelas tertentu.
Jadi, pada dasarnya kita memiliki:
raw model + training set + training algorithm -> trained model
trained model + classification algorithm + new object -> object label
Sekarang perhatikan bahwa kami mewakili objek kami (dokumen) sebagai kantong kata-kata. Tetapi apakah satu-satunya jalan? Bahkan, kita dapat mengekstraksi lebih banyak dari teks mentah. Sebagai contoh, alih-alih kata-kata seperti ini, kita dapat menggunakan batang atau lemmasanya , membuang kata-kata berhenti yang berisik , menambahkan tag POS kata-kata, mengekstrak entitas bernama atau bahkan menjelajahi struktur HTML dokumen. Bahkan, representasi yang lebih umum dari suatu dokumen (dan, secara umum, objek apa pun) adalah vektor fitur . Misalnya untuk teks:
actor, analogue, bad, burn, ..., NOUN, VERB, ADJ, ..., in_bold, ... | label
0, 0, 1, 1, ..., 5, 7, 2, ..., 2, ... | not spam
0, 1, 0, 0, ..., 3, 12, 10, ..., 0, ... | spam
Di sini baris pertama adalah daftar fitur yang mungkin dan baris berikutnya menunjukkan berapa kali fitur itu terjadi dalam dokumen. Misalnya dalam dokumen pertama tidak ada kemunculan kata "aktor", 1 kemunculan kata "burn", 5 kata benda, 2 kata sifat dan 2 buah teks dalam huruf tebal. Kolom terakhir sesuai dengan label kelas yang dihasilkan.
Menggunakan vektor fitur, Anda dapat memasukkan properti apa pun dari teks Anda. Meskipun menemukan serangkaian fitur yang baik mungkin membutuhkan waktu.
Dan bagaimana dengan model dan algoritma? Apakah kita terikat ke Naif Bayes. Tidak semuanya. regresi logistik , SVM , pohon keputusan - hanya untuk menyebutkan beberapa pengklasifikasi populer. (Catatan, yang kami katakan "classifier" dalam kebanyakan kasus kami maksudkan model + algoritma yang sesuai untuk pelatihan dan klasifikasi).
Sedangkan untuk implementasi, Anda dapat membagi tugas menjadi 2 bagian:
- Ekstraksi fitur - mengubah teks mentah menjadi vektor fitur.
- Klasifikasi objek - membangun dan menerapkan model.
Poin pertama berhasil di banyak perpustakaan NLP . Kedua adalah tentang pembelajaran mesin, jadi, tergantung pada dataset Anda, Anda bisa menggunakan Weka , atau MLlib .