Saya memiliki kumpulan teks dengan topik yang sesuai. Misalnya "A rapper Tupac was shot in LA"
dan diberi label sebagai ["celebrity", "murder"]
. Jadi pada dasarnya setiap vektor fitur dapat memiliki banyak label (bukan jumlah yang sama. Vektor fitur pertama dapat memiliki 3 label, kedua 1, ketiga 5).
Jika saya hanya memiliki satu label yang sesuai dengan setiap teks, saya akan mencoba classifier Naif Bayes , tetapi saya tidak benar-benar tahu bagaimana saya harus melanjutkan jika saya dapat memiliki banyak label.
Apakah ada cara untuk mengubah Naive Bayes menjadi masalah klasifikasi multi label (jika ada pendekatan yang lebih baik - beri tahu saya)?
PS beberapa hal tentang data yang saya miliki.
- sekitar 10.000 elemen dalam dataset
- teks kira-kira 2-3 kalimat
- maksimum 7 label per teks
machine-learning
text-mining
Salvador Dali
sumber
sumber
Jawaban:
Sebagai permulaan, Naif Bayes mungkin tidak sesuai di sini. Ini mengasumsikan independensi di antara input (maka "Naif") dan kata-kata dalam kalimat sangat tergantung.
Tetapi, dengan asumsi Anda benar-benar ingin menjalankan dengan NB sebagai algoritma untuk memulai eksperimen Anda, ada dua opsi yang akan saya pertimbangkan:
Ungraceful: Banyak pengklasifikasi NB
Ini akan menjadi pendekatan alternatif. Buat korupus dari semua kata yang diamati sebagai vektor input Anda. Buat corpus dari semua tag yang diamati sebagai vektor output Anda. Klasifikasi NB dengan beberapa keluaran sama dengan memiliki beberapa pengklasifikasi NB dengan satu keluaran masing-masing (demikian juga yang mana yang lebih mudah diterapkan dalam kerangka kerja perangkat lunak apa pun yang Anda gunakan). Perlakukan setiap elemen sebagai sampel pelatihan di mana input yang diberikan (kata) adalah
1
jika kata itu ada dan0
jika kata itu tidak ada. Gunakan skema biner yang sama untuk output.Brute ini memaksa aplikasi NB Classifier ke data Anda, dan membuat Anda menemukan makna dengan tetap menambang untuk mengatur sekumpulan besar classifier yang akan Anda gunakan.
Lebih Anggun: Memproses data Anda
Ini adalah pendekatan yang saya sarankan jika Anda ingin menjalankan dengan satu NB Classifier multi-kelas.
Tujuan Anda di sini adalah untuk mengetahui cara memetakan setiap set tag ke satu kelas. Saya yakin ada semacam skema pengelompokan atau analisis jaringan (mungkin ["selebriti"] yang dikaitkan dengan ["pembunuhan"] dapat menjadi segmen ["pesta pora"]) yang secara masuk akal akan memetakan tag Anda ke satu cluster tunggal. Jika Anda memperlakukan tag sebagai node dan dua tag yang diberikan bersama sebagai tautan, maka Anda akan ingin melihat algoritma pendeteksian komunitas (yang merupakan tempat saya memulai). Tapi, jika Anda hanya ingin sesuatu berfungsi, maka semacam peretasan pada tag yang mengubah daftar tag menjadi hanya tag yang paling umum dilihat dalam dataset Anda sudah cukup.
Metode ini memuat pekerjaan pembersihan data Anda dan akan membuat output NB Classifier lebih mudah dipahami.
sumber