Untuk tugas pemrosesan bahasa alami (NLP) seseorang sering menggunakan vektor word2vec sebagai embedding kata-kata. Namun, mungkin ada banyak kata yang tidak dikenal yang tidak ditangkap oleh vektor word2vec hanya karena kata-kata ini tidak cukup sering terlihat dalam data pelatihan (banyak implementasi menggunakan jumlah minimum sebelum menambahkan kata ke dalam kosakata). Ini mungkin terutama dengan teks dari misalnya Twitter, di mana kata-kata sering salah eja.
Bagaimana seharusnya kata-kata yang tidak diketahui itu ditangani ketika memodelkan tugas NLP seperti prediksi sentimen menggunakan jaringan jangka pendek (LSTM) panjang? Saya melihat dua opsi:
- Menambahkan token 'kata tidak dikenal' ke kamus word2vec.
- Menghapus kata-kata yang tidak dikenal ini sehingga LSTM bahkan tidak tahu kata itu dalam kalimat.
Apa cara yang disukai untuk menangani kata-kata ini?
Jawaban:
Opsi 1 (menambahkan token kata yang tidak dikenal) adalah cara kebanyakan orang memecahkan masalah ini.
Opsi 2 (menghapus kata-kata yang tidak dikenal) adalah ide yang buruk karena itu mengubah kalimat dengan cara yang tidak konsisten dengan bagaimana LSTM dilatih.
Pilihan lain yang baru-baru ini dikembangkan adalah untuk membuat kata embedding on-the-fly untuk setiap kata menggunakan jaringan saraf convolutional atau LSTM terpisah yang memproses karakter setiap kata satu per satu. Dengan menggunakan teknik ini, model Anda tidak akan pernah menemukan kata yang tidak dapat dibuat penyisipannya.
sumber
Memetakan kata-kata langka hanya berarti bahwa kami menghapus kata-kata itu dan menggantinya dengan token dalam data pelatihan. Dengan demikian model kami tidak tahu kata-kata langka. Ini adalah bentuk smoothing kasar karena model mengasumsikan bahwa token tidak akan pernah benar-benar terjadi dalam data nyata atau lebih baik namun mengabaikan n-gram ini sama sekali.
sumber