Jadi, saya baru mulai belajar bagaimana jaringan saraf dapat beroperasi untuk mengenali pola dan mengategorikan input, dan saya telah melihat bagaimana jaringan saraf tiruan dapat mengurai data gambar dan mengkategorikan gambar ( demo dengan convnetjs ), dan kuncinya ada adalah untuk mengecilkan gambar dan setiap piksel merangsang satu neuron input ke dalam jaringan.
Namun, saya mencoba membungkus kepala saya jika ini mungkin dilakukan dengan input string? Kasing yang saya pakai adalah "mesin rekomendasi" untuk film yang telah ditonton pengguna. Film memiliki banyak data string (judul, plot, tag), dan saya bisa membayangkan "downsampling" teks ke beberapa kata kunci yang menggambarkan film itu, tetapi bahkan jika saya memilah lima kata teratas yang menggambarkan film ini, saya pikir saya perlu input neuron untuk setiap kata bahasa Inggris untuk membandingkan satu set film? Saya dapat membatasi input neuron hanya untuk kata-kata yang digunakan dalam set, tetapi kemudian bisakah itu tumbuh / belajar dengan menambahkan film baru (pengguna menonton film baru, dengan kata-kata baru)? Sebagian besar perpustakaan yang saya lihat tidak mengizinkan penambahan neuron baru setelah sistem dilatih?
Apakah ada cara standar untuk memetakan data string / kata / karakter ke input ke jaringan saraf? Atau apakah jaringan saraf benar-benar bukan alat yang tepat untuk pekerjaan mengurai data string seperti ini (apa alat yang lebih baik untuk pencocokan pola dalam data string)?
sumber
Baik jawaban dari @Emre dan @Madison May memberikan poin bagus tentang masalah yang dihadapi. Masalahnya adalah salah satu dari merepresentasikan string Anda sebagai vektor fitur untuk input ke NN.
Pertama, masalahnya tergantung pada ukuran string yang ingin Anda proses. String panjang yang berisi token mayor (biasanya kata-kata) sering disebut dokumen dalam pengaturan ini. Ada metode terpisah untuk berurusan dengan token / kata-kata individu.
Ada beberapa cara untuk mewakili dokumen. Banyak dari mereka membuat anggapan seperti kata-kata . Tipe paling sederhana merepresentasikan dokumen sebagai vektor dari jumlah kata, atau frekwensi istilah (tf). Untuk menghilangkan efek panjang dokumen, biasanya orang lebih suka menormalkan dengan jumlah dokumen yang muncul dalam istilah, frekuensi dokumen ( tf-idf ).
Pendekatan lain adalah pemodelan topik, yang mempelajari representasi data dimensi rendah laten. LDA dan LSI / LSA adalah pilihan umum, tetapi penting untuk diingat bahwa ini tidak diawasi. Representasi yang dipelajari belum tentu ideal untuk pembelajaran apa pun yang diawasi yang Anda lakukan dengan NN. Jika Anda ingin melakukan pemodelan topik, Anda juga dapat mencoba model topik yang diawasi .
Untuk kata-kata individual, Anda dapat menggunakan word2vec , yang memanfaatkan NNs untuk menanamkan kata-kata ke ruang berukuran sewenang-wenang. Kesamaan antara dua vektor kata dalam ruang yang dipelajari ini cenderung sesuai dengan kesamaan semantik.
Pendekatan yang lebih baru dirintis adalah bahwa dari vektor paragraf , yang pertama kali belajar model kata-seperti word2vec, kemudian dibangun di atas representasi itu untuk mempelajari representasi terdistribusi dari kumpulan kata-kata (dokumen dengan ukuran berapa pun). Ini menunjukkan hasil paling canggih dalam banyak aplikasi.
Saat menggunakan NN di NLP, orang sering menggunakan arsitektur yang berbeda, seperti Jaring Berulang Berulang (seperti jaringan Memori Jangka Pendek ). Dalam beberapa kasus orang bahkan menggunakan Neural Networks Konvolusional pada teks.
sumber
Ini bukan masalah tentang jaringan saraf per se, tetapi tentang mewakili data tekstual dalam pembelajaran mesin. Anda dapat mewakili film, pemeran, dan tema sebagai variabel kategori. Plotnya lebih rumit; Anda mungkin menginginkan model topik untuk itu, tetapi saya akan membiarkannya sampai Anda memahami beberapa hal. Memang tepat bahwa "downsampling" tekstual yang Anda sebutkan.
Lihatlah tutorial ini untuk mempelajari cara menyandikan variabel kategori untuk jaringan saraf. Dan semoga beruntung!
sumber
Saya sudah mencoba 2 cara berikut untuk implementasi uji coba-n dari jaringan saraf dengan teks. Yang terakhir bekerja dengan cukup baik, tetapi dengan keterbatasan.
Buat kosakata menggunakan word2vect atau NLTK / token kata khusus dan tetapkan indeks untuk setiap kata. Indeks inilah yang mewakili kata sebagai angka.
Tantangan:
Gunakan matriks identitas, misalnya untuk kata "n", gunakan "nx n" atau (n-1 x n-1) matriks di mana setiap baris dan kolom mewakili kata. Masukkan "1" di sel persimpangan dan "0" di tempat istirahat. ( referensi )
Tantangan:
sumber