
Bagaimana pekerjaan yang diterapkan berbeda dari berteori kertas adalah terjadinya masalah. Terus-menerus dihadapkan dengan kesulitan-kesulitan baru, yang pada gilirannya menyediakan makanan bagi pikiran.
Dalam proses bekerja pada bot obrolan, saya dihadapkan dengan kebutuhan untuk mengantisipasi (yaitu, mengantisipasi) perkembangan dialog. Saya belum pernah memikirkan hal ini sebelumnya, tetapi kemudian - memutuskan kata-kata mana yang akan dimasukkan ke bibir komputer sebagai tanggapan terhadap frasa manusia tertentu - saya harus memikirkannya.
Kesimpulannya tampak menarik bagi saya. Mereka terbaring di permukaan masalah dan mungkin bukan wahyu bagi mereka yang telah mempelajari AI sebelumnya, tetapi saya belum melihat bahasa langsung di media. Jadi mari kita mulai ...
Dialog seseorang dan chatbot: seseorang mengatakan sesuatu, chatbot harus merespons dengan
wajar . Tampaknya kesulitan utama dalam pemrograman adalah tidak dapat diprediksinya apa yang akan diucapkan oleh seseorang, karena seseorang dapat mengatakan apa saja secara harfiah. Dan jika ada, sulit untuk menemukan jawaban yang masuk akal: daftar jawaban untuk pertanyaan yang tidak dapat diprediksi harus tidak terbatas, tetapi secara tak terbatas secara teknis tidak mungkin. Akibatnya, chatbot harus "memahami" apa yang dikatakan lawan bicaranya - lebih jauh di jalur yang dijalankan oleh pengembang AI, jauh melampaui batas-batas topik yang diumumkan ...
Humor dari situasi ini adalah bahwa untuk mendapatkan dari chatbot "memahami", "memahami" frasa lawan bicara tidak hanya kesempatan, tetapi juga kebutuhan khusus, untuk alasan bahwa ... orang sendiri tidak berkomunikasi seperti itu. Jika Anda berpikir bahwa orang menganalisis apa yang mereka dengar dengan bantuan peralatan mental - otak, maka, berdasarkan analisis, mereka menyuarakan jawabannya, maka komunikasi tidak terjadi seperti itu, itu terjadi secara berbeda.
Pernahkah Anda bertanya-tanya mengapa Anda menikmati berbicara dengan teman? Bukankah itu karena Anda mendengar dari teman-teman yang sebagian besar menyenangkan, tidak hanya dalam arti "saling melengkapi", tetapi juga dalam arti "menarik", "menarik", dll? Tepat karena alasan yang sama, tidak menyenangkan bagi Anda untuk berbicara dengan musuh, karena informasi yang berasal dari mereka memiliki tanda atau vektor yang berlawanan untuk Anda. Dengan kata lain,
Anda tahu sebelumnya informasi apa dari siapa Anda akan terima, dan bertindak sesuai dengan keadaan : dengan senang hati melakukan kontak dengan teman, hindari pertemuan dengan musuh jika memungkinkan.
Inilah pertanyaannya: mengapa Anda perlu menghubungi teman-teman Anda jika Anda tahu sebelumnya apa yang akan mereka katakan? Tidak, saya mengerti dan berbagi: bersenang-senang, santai ... namun, keinginan untuk mendapatkan informasi baru di sini jelas di tempat terakhir. Untuk sebagian besar, orang mendapatkan informasi - dalam arti tertentu, informasi baru untuk diri mereka sendiri - dari sumber lain, dan ketika berkomunikasi dengan teman-teman mereka mendapatkan buzz dari sesuatu yang lain, yaitu dari prediksi percakapan, seperti ketika berkomunikasi dengan musuh, jauh sebelum mereka berkomunikasi, mereka mengalami negatif emosi, berkat prediksi yang sama tentang apa yang akan terjadi.
Sebagian besar percakapan dapat diprediksi, dan ini hanya dapat berarti satu hal: orang tahu terlebih dahulu jalannya percakapan di masa depan dengan lawan bicara tertentu.
Pada kenyataannya, komunikasi antara orang-orang sedikit berbeda dari apa yang diasumsikan secara default:
- teman bicara mengatakan sesuatu
- Anda menganalisis frasa yang Anda dengar dan memberikan jawaban.
Pada kenyataannya, komunikasi antar manusia terjadi sebagai berikut:
- Anda mengantisipasi apa yang akan dikatakan lawan bicara Anda, dan siapkan terlebih dahulu jawaban untuk frasa yang diharapkan ,
- jika harapan terpenuhi, keluarkan kosong,
- jika tidak, Anda juga mengeluarkan blank, tetapi bukan individual, untuk lawan bicara tertentu, tetapi situasional, cocok untuk lawan bicara apa pun.
Ini adalah antisipasi, dan hukumnya berlaku tidak hanya untuk percakapan dengan orang, sikap yang didefinisikan (positif atau negatif), tetapi juga untuk setiap percakapan pada prinsipnya.
Misalkan Anda bertemu seorang teman dan berkata kepadanya: "Halo."
Frasa ini mematuhi situasi: sesuai dengan aturan tertentu, asal yang dalam hal ini tidak penting, digunakan pada awal dialog. Tidak masuk akal untuk menunggu jawaban, yang mungkin diketahui, Anda dapat mulai membangun frase berikutnya. Mendengar sapaan balasan, Anda segera memulai frasa yang sudah disiapkan, tanpa pertimbangan lebih lanjut.
Namun, sebagai tanggapan Anda dapat mendengar sesuatu yang lain, misalnya: "Ya, Anda pergi ...". Percakapan yang direncanakan sebelumnya mengubah jalur yang berbeda, skrip berubah secara dramatis. Ya itu terjadi. Dalam hal ini, otak Anda memberikan jawaban standar seperti: "Anda sendiri pergi!" - hanya sesaat kemudian dari frasa yang akan terdengar jika skenario yang direncanakan tetap tidak berubah. Suatu saat, sebenarnya, bukan waktu untuk refleksi, tetapi waktu untuk mengakses perpustakaan kosong situasional. Pemikiran seperti apa yang ada ketika semuanya dilakukan "di mesin", praktis pada tingkat tidak sadar!
Orang dapat membayangkan bahwa lawan bicaranya "melompati langkah": ia tidak menyapa, tetapi mengucapkan kalimat berikut dengan ramah, akrab dengan komunikasi masa lalu Anda. Kebiasaan berarti tersirat. Untuk Anda (lebih tepatnya, otak Anda), tidak masuk akal untuk menunggu jawaban yang sudah diketahui, tetapi masuk akal untuk mempersiapkan frasa untuk dialog selanjutnya. Maka sangat mungkin bahwa frasa berikutnya setelah "halo" yang terlewat tidak akan terkejut: benda kerja yang disiapkan akan tiba di mulut Anda tanpa penundaan sedikit pun. Jika diinginkan, tidak adanya sapaan balik dapat dianggap bukan "langkah yang terlewatkan", tetapi cabang baru dari skrip, tetapi ini tidak mengubah gambaran keseluruhan.

Opsi ketiga membuat Anda memutuskan kedalaman antisipasi. Jika kita tidak dapat mengantisipasi frasa yang tidak dikatakan lawan bicara, kita harus menganalisisnya setelah mengucapkannya. Jadi, sangat ideal untuk mengantisipasi tidak hanya frasa berikut, tetapi seluruh dialog secara keseluruhan - tetapi ini dari bidang harapan baik. Orang tidak mampu melakukan hal seperti itu: selama dialog mereka dipaksa untuk terus-menerus beralih dari perpustakaan pengadaan perorangan ke perpustakaan situasional.
Jadi,
setiap replika melibatkan satu set jawaban berikutnya, dengan set yang sangat terbatas . Dalam kasus salam, ini disebabkan oleh ritual kesopanan, dalam kasus umum - batas reaksi manusia terhadap peristiwa tertentu: kegembiraan, kesedihan, kekaguman, penghinaan, dll. Ada beberapa lusin sensasi, Anda tidak bisa membayangkan orang lain - orang hanya tidak merasakan apa pun. Reaksi memungkinkan untuk mengantisipasi dialog, dengan persiapan untuk setiap frasa yang mungkin dari lawan bicara.
Dengan demikian, dialog sama sekali bukan kemungkinan tak terbatas untuk mengatakan sesuatu yang sewenang-wenang dan menjawab sesuatu yang sewenang-wenang, tetapi jalan sempit di mana Anda hanya bisa bergerak. Mereka seperti trek di arena pacuan kuda: diizinkan untuk mematikan hanya jika disediakan oleh perancang trek - psikologi manusia. Anda tidak bisa keluar jalan: pagar utama telah dipasang, Anda tahu.
Seperti mobil pada autodrome, percakapan juga bergerak dalam lingkaran. Teman mendapatkan tendangan dari topik yang merepotkan, pacar gosip di antara mereka sendiri tidak kurang antusias. Jika pertikaian muncul di antara orang-orang yang bermusuhan, argumen dari pihak yang berlawanan diajukan di antara telinga. Dalam kasus terakhir, mereka berkata: "Dia tidak mendengarku." Dia mendengar dengan telinga, mungkin, tetapi reaksi Anda terhadap rencana percakapan tidak diantisipasi oleh lawan bicara, karena lawan bicara menjawab dengan standar kosong yang tidak cocok untuk Anda lagi. Bundaran adalah situasi tanpa harapan.

Grafik khas. Frasa apa pun dapat diucapkan, selalu ada pilihan satu atau jawaban lain: sesuai, setiap node harus memiliki setidaknya satu sisi input dan beberapa ekstensi-ekstensi keluar.
Idealnya, chatbot memerlukan margin beberapa kolom - rencana percakapan: individu untuk masing-masing lawan bicara dengan siapa dia berbicara, dan umum untuk orang asing. Jelas bahwa, misalnya, seorang pria yang berkomunikasi dengan wanita tercinta dan bawahan yang tidak baik akan memiliki hal-hal yang berbeda: tema, kosa kata, intonasi, warna emosional, kenyaringan dan sebagainya, tetapi pertama-tama - arah pemikiran.
Harus dipahami bahwa antisipasi bukan obat mujarab, tetapi salah satu dari banyak metode, apalagi, ketika mengembangkan AI itu bukan yang paling signifikan, ada yang lebih penting. Selain itu, teknik ini sangat sulit untuk diterapkan.
Jika lawan bicara menyapa entah bagaimana secara non-standar, chatbot mungkin โtidak menebakโ tentang salam, dan akan bereaksi secara berbeda sesuai (variabilitas ucapan manusia adalah masalah masalah, sial). Tetapi menyapa adalah kasus yang paling sederhana: mengantisipasi ucapan selanjutnya jauh lebih sulit.
Lebih lanjut, ketika membuat frasa Anda sendiri, chatbot dapat merencanakan reaksi yang salah dari lawan bicara, yang akan mengarah pada ketidaksesuaian dengan jawaban yang diharapkan.
Akhirnya, dalam beberapa kasus, karena alasan algoritmik murni, lebih menguntungkan untuk menunggu frasa lawan bicara, kemudian menganalisisnya. Jika chatbot digunakan untuk memesan tiket, jelas bahwa tidak ada gunanya atau peluang untuk memprediksi tiket untuk tanggal mana dan rute mana yang akan diminta oleh pembeli - Anda harus menunggu informasinya. Pada saat yang sama, antisipasi diperlukan dalam dialog bebas AI yang khas: ini dapat menghemat banyak waktu pemrosesan, setidaknya karena kemampuan untuk mengantisipasi sambil memikirkan atau mengucapkan frasa seseorang.
Sehubungan dengan antisipasi dan perpustakaan kosong situasional, kasus yang menarik diingat. Seorang teman mendatangi istri saya dan saya. Setelah beberapa waktu, dia menyebut suaminya, yang selamanya lupa mematikan lampu: dia mulai dengan antusias menceritakan bagaimana ekor ceko-nya, dan sebagainya. "Tentu saja! Tentu saja! Anda benar sekali, sayang! โ - Mendengar pernyataan belas kasihan istri saya. Lelucon di keluarga saya justru sebaliknya. Sang istri pada dasarnya tidak mematikan lampu: satu menit setelah kedatangannya di rumah, lampu menyala di mana-mana - di kamar, koridor, di dapur, di toilet, dan di kamar mandi. Melewati, saya secara otomatis mematikannya, dan istri saya secara otomatis menyalakannya tidak kurang, dan tidak ada yang bisa dilakukan tentang hal itu. Tapi percakapan dengan temannya itu hanya itu. Sang istri menggunakan masing-masing ruang kosong yang sesuai dengan pertemuan, sementara tidak ada yang mengganggu komunikasi. Wanita, seperti kata mereka, bernyanyi serempak - mereka sepenuhnya bulat dan bahagia.
Catatan tambahanArtikel ini ditulis sebagai bagian dari seri pengembangan bot obrolan sintaksis oleh saya, Vanya yang Sensible.
Artikel sebelumnya:
- Pembuatan AI menggunakan metode glock cuzdra. Pengembaraan Intelektual ;
- Chatbot mendapatkan pendengaran, atau penderitaan seorang amatir .
Jika seseorang ingin mengenal Vanya dalam kondisinya saat ini, rilis 2.0 ada di sini:
bitbucket.org/mikejum/intellectualivan/downloadsDibandingkan dengan versi sebelumnya, Vanya berbicara dan menjadi kurang buggy - bisa dibilang, dia tumbuh lebih bijaksana, meskipun tidak sebanyak yang kita inginkan. Seperti yang dikatakan oleh suku saya yang berusia enam tahun setelah berbicara dengan bot obrolan, "Vanya sama bodohnya dengan Siri."
Ada masalah instalasi karena transisi dari Access ke PostgreSQL: sekarang unzipping file tidak cukup, Anda harus menginstal PostgreSQL dan menggunakan dump, instruksi terlampir.
Untuk pertanyaan yang tak terhindarkan, berapa banyak antisipasi yang diterapkan dalam versi 2.0, saya akan menjawab seperti ini. Diimplementasikan sebagian, pada tingkat awal, namun bermasalah untuk menyadarinya selama dialog. Seperti yang disebutkan sebelumnya, antisipasi adalah salah satu dari banyak fitur yang diperlukan dalam pengembangan AI, jauh dari yang paling signifikan.