Cara melatih chatbot


10

Saya ingin mulai bereksperimen dengan jaringan saraf dan sebagai masalah mainan saya ingin melatih satu untuk mengobrol, yaitu menerapkan bot mengobrol seperti cleverbot. Lagipula tidak sepintar itu.

Saya mencari-cari beberapa dokumentasi dan saya menemukan banyak tutorial tentang tugas-tugas umum, tetapi sedikit tentang topik khusus ini. Yang saya temukan baru saja mengekspos hasilnya tanpa memberikan wawasan tentang implementasi. Orang-orang yang melakukannya, apakah itu cukup dangkal (halaman dokumentasi tensorflow pada seq2seq kurang imho).

Sekarang, saya merasa saya mungkin telah memahami prinsip ini kurang lebih tetapi saya tidak yakin dan saya bahkan tidak yakin bagaimana memulainya. Jadi saya akan menjelaskan bagaimana saya akan mengatasi masalah dan saya ingin umpan balik pada solusi ini, memberi tahu saya di mana saya salah dan mungkin memiliki tautan ke penjelasan rinci dan pengetahuan praktis tentang proses tersebut.

  1. Dataset yang akan saya gunakan untuk tugas ini adalah dump semua riwayat obrolan facebook dan whatsapp saya. Saya tidak tahu seberapa besar itu tetapi mungkin masih belum cukup besar. Bahasa target bukan bahasa Inggris, oleh karena itu saya tidak tahu di mana harus cepat mengumpulkan sampel percakapan yang bermakna.

  2. Saya akan menghasilkan vektor pemikiran dari setiap kalimat. Masih tidak tahu bagaimana sebenarnya; Saya menemukan contoh yang bagus untuk word2vec di situs deeplearning4j, tetapi tidak ada untuk kalimat. Saya mengerti bagaimana vektor kata dibangun dan mengapa, tetapi saya tidak dapat menemukan penjelasan lengkap untuk vektor kalimat.

  3. Dengan menggunakan vektor pemikiran sebagai input dan output, saya akan melatih jaringan saraf. Saya tidak tahu berapa banyak layer yang seharusnya, dan yang mana yang harus layer lstm.

  4. Maka harus ada jaringan saraf lain yang mampu mengubah vektor pemikiran menjadi urutan karakter yang menyusun kalimat. Saya membaca bahwa saya harus menggunakan padding untuk menebus panjang kalimat yang berbeda, tetapi saya kehilangan cara menyandikan karakter (apakah cukup codepoint?).

Jawaban:


7

Saya akan merekomendasikan untuk memulai dengan membaca posting blog ini . Anda mungkin dapat mengkanibal kode untuk membuat RNN yang menerima satu pernyataan dialog dan kemudian mulai mengeluarkan jawaban untuk pernyataan itu.

Itu akan menjadi versi mudah proyek Anda, semua tanpa vektor kata dan vektor pemikiran. Anda hanya memasukkan karakter, jadi kesalahan ketik tidak perlu mengkhawatirkan Anda.

Langkah selanjutnya yang lebih kompleks adalah dengan memasukkan vektor kata dan bukan karakter. Itu akan memungkinkan Anda untuk menyamaratakan kata-kata yang bukan bagian dari data pelatihan Anda. Dan itu mungkin masih hanya modifikasi kecil dari kode.

Jika Anda bersikeras menggunakan vektor pemikiran, Anda harus mulai membaca terjemahan NN . Dan mungkin mencoba untuk mendapatkan jaringan encoder pra-terlatih. Atau pra-latih sendiri pada korpus terjemahan besar untuk bahasa Anda.

Dengan set latihan kecil Anda yang terbaik yang dapat Anda lakukan mungkin adalah pakaian yang sangat besar sampai sistem Anda membuat kembali data pelatihan Anda secara verbal. Menggunakan kata vektor akan memungkinkan sistem Anda untuk memberikan jawaban yang sama untuk "Saya mengalahkan kucing hari ini." seperti yang Anda berikan dalam data pelatihan untuk "Saya menendang anjing kemarin."

Saya tidak yakin vektor akan membuat perbedaan besar. Jika Anda mendapatkan decoder untuk belajar sama sekali.


Saya sudah membaca artikel pertama beberapa waktu lalu dan saya merasa karakter bukan level abstraksi yang tepat. Saya tidak berpikir untuk menggunakan vektor kata satu per satu, tetapi saya rasa itu juga cara yang menarik dan tidak terlalu rumit. Saya akan membaca koran, yang mungkin setelah saya ...
Totem

Saya telah menemukan inti bot untuk digunakan ... Tapi saya terjebak pada pembuatan teks. ai.stackexchange.com/questions/5963/... Apa yang saya ingin tanyakan adalah terlepas dari vektor, dan tingkat pembelajaran, masih tidak berfungsi sebagaimana mestinya ... Saya khawatir bahwa ini mungkin merupakan kekurangan dari Perpustakaan saya menggunakan, tapi saya tidak berpikir itu mungkin untuk ukuran layer 300 ... Atau apakah jumlah pelatihan yang diperlukan terkait dengan ukuran layer? Bantuan apa pun akan dihargai. Harap perhatikan perpustakaan yang digunakan.
FreezePhoenix

0

Menurut konsep proyek Anda, sebagai permulaan, saya akan meminta Anda untuk menerapkan beberapa teknik pengembangan yang digerakkan oleh tes. Pertama, cobalah untuk membuat database berukuran lebih kecil yang dapat Anda gunakan untuk menangani sejumlah kecil dataset, yang dapat memberikan peningkatan yang diinginkan.

Yang mengatakan, gunakan database itu untuk membuat pohon terorganisir sejalan dengan data Anda, sebagai node. Jadi jika bot mulai menghasilkan beberapa umpan balik, dari database, ditandai dengan titik data dari dataset yang ditentukan Anda. ke simpul berikutnya di pohon.

catatan : Sebagai permulaan, jangan gunakan riwayat obrolan besar Anda secara keseluruhan, karena ini adalah tugas yang sederhana..ie.t terlalu banyak input == Overfitting.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.