Sebenarnya NLP adalah salah satu area yang paling umum di mana resampling data diperlukan karena ada banyak tugas klasifikasi teks yang berurusan dengan masalah yang tidak seimbang (pikirkan tentang penyaringan spam, penghinaan komentar deteksi, klasifikasi artikel, dll). Tetapi SMOTE tampaknya bermasalah di sini karena beberapa alasan:
- SMOTE bekerja di ruang fitur. Ini berarti bahwa output SMOTE bukan data sintetis yang merupakan perwakilan nyata dari teks di dalam ruang fitur.
- Di satu sisi SMOTE bekerja dengan KNN dan di sisi lain, ruang fitur untuk masalah NLP sangat besar. KNN akan dengan mudah gagal dalam dimensi besar itu.
Jadi saya bisa mengusulkan dua pendekatan:
- Jangan pedulikan representasi teks asli sampel sintetis baru yang saya anggap baik-baik saja. Anda perlu menyeimbangkan distribusi untuk classifier Anda bukan untuk pembaca data teks. Jadi terapkan SMOTE sebagai tradisional (namun saya biasanya menggunakan solusi 2 di bawah jadi saya tidak menjamin hasilnya!) Dengan beberapa langkah Pengurangan Dimensi.
1) Mari kita asumsikan Anda ingin membuat sampel data Anda dari double kelas ganda menggunakan 3-NN. Abaikan kelas utama dan simpan hanya sampel kelas kecil.
2) Untuk setiap titik sampel dalam ruang fitur pilih 5 tetangga terdekat. Kemudian pilih 3 dari mereka secara acak (bukankah itu tidak perlu rumit? Jika saya tidak ingin menjelaskan algoritma asli saya akan mengatakan hanya memilih 3 tetangga!)
3) Untuk setiap dimensi, hitung jarak antara sampel dan tetangga dan kalikan dengan angka acak antara 0-1 dan tambahkan ke nilai asli sampel dalam dimensi tersebut. (Paragraf yang rumit ini hanya berarti untuk setiap dimensi memilih nilai acak antara sampel asli dan tetangga itu!)
- Tapi saya biasanya melakukan oversampling lain yang ada di teks (jadi lebih intuitif) dan agak SMOTE.
1) Abaikan kelas utama. Dapatkan distribusi panjang semua dokumen di kelas minor sehingga kami menghasilkan sampel baru sesuai dengan panjang dokumen yang sebenarnya (jumlah kata / frasa). Kami berasumsi kami ingin membuat ukuran kelas rangkap tiga (sehingga menghasilkan dokumen sintetik per dokumen asli)k = 2
2) Menghasilkan urutan bilangan bulat acak sesuai dengan distribusi itu. Ini digunakan untuk menentukan panjang dokumen sintetis baru.n
mmnkk