Menangani kata-kata yang tidak dikenal dalam tugas pemodelan bahasa menggunakan LSTM

11

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:

  1. Menambahkan token 'kata tidak dikenal' ke kamus word2vec.
  2. 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?

pir
sumber
2
Saya telah menjawab pertanyaan serupa sebelumnya; sementara pertanyaannya kemudian tidak spesifik untuk LSTMs, tampaknya sebagian besar dari apa yang saya tulis akan berlaku: stats.stackexchange.com/questions/163005/…
fnl

Jawaban:

12

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.

Harun
sumber
Hai Aaron, Bisakah Anda memberi saya beberapa petunjuk (kertas atau kode) yang menggunakan opsi ketiga Anda?
Nubuat
arxiv.org/abs/1508.02096 Ini satu
Aaron
kode: github.com/wlin12/JNN
chentc
1
Satu lagi yang terbaru (EMNLP 2017) arxiv.org/abs/1707.06961 dengan kode github.com/yuvalpinter/Mimick
jayelm
-1

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.

Constantine
sumber
4
Harap tambahkan jawaban ini secara substansial. Misalnya, buat cadangan klaim bahwa "menambahkan token kata yang tidak dikenal adalah pilihan terbaik".
Jim