Otomatiskan jawaban untuk pertanyaan umum dalam keterampilan untuk Alice menggunakan perpustakaan DeepPavlov

Selama lebih dari satu tahun sekarang, Laboratorium Sistem Saraf dan Pembelajaran Jauh di MIPT telah menjadikan DeepPavlov - perpustakaan terbuka untuk menciptakan sistem interaktif. Ini berisi serangkaian komponen terlatih untuk analisis bahasa, yang dengannya Anda dapat secara efektif menyelesaikan masalah bisnis.

Misalnya, mengatur jawaban untuk pertanyaan umum dari pelanggan. Untuk melakukan ini melalui pusat panggilan, widget di situs web atau jejaring sosial dengan merekrut karyawan adalah masalah sederhana. Tugas mendesak adalah untuk mengoptimalkan proses sehingga dilakukan secara otomatis, dengan kesalahan minimal, dan juga dalam antarmuka pengguna yang nyaman. Misalnya, dalam asisten suara "Alice" dari "Yandex".

Pada artikel ini kami ingin memberi tahu cara mengatasi masalah secara efektif dalam menjawab FAQ menggunakan pemrosesan bahasa alami dan cara mengintegrasikan solusi ke dalam Alice.



Klasifikasi teks dan cara melakukannya
Menciptakan keterampilan tanya jawab berdasarkan perpustakaan DeepPavlov
Instal Perpustakaan DeepPavlov
Menjalankan skill pada Alice
Kesimpulan

Klasifikasi teks dan cara melakukannya


Masalah mencari pertanyaan yang dekat dengan pertanyaan yang diberikan dari set pasangan jawaban-siap pakai diselesaikan dengan algoritma untuk menentukan kedekatan semantik / klasifikasi teks.

Untuk mengatasi masalah ini "dalam produksi", ada dua cara: Anda dapat menyewa spesialis NLP di negara bagian, atau Anda dapat memasang iklan solusinya.

Kontra dari kedua opsi: 1) kebutuhan untuk pengumpulan data, 2) iterasi tanpa akhir pelatihan model dan pengukuran kualitas, 3) persyaratan serius untuk pengembangan pengembang. Bahkan proses integrasi solusi pemrosesan bahasa yang sudah jadi bukanlah tugas yang mudah, belum lagi membuatnya dari awal. Solusi cloud asing (Google Assistant atau Microsoft Cortana) menawarkan solusi komprehensif untuk masalah klasifikasi teks (DialogFlow, Layanan Azure Bot), tetapi masih ada masalah dengan penskalaan, penautan ke layanan API berbayar dan dukungan untuk bahasa Rusia.

Tapi tepuk tangan - ada alternatifnya: Anda dapat menggunakan perpustakaan perangkat lunak terbuka, yang sangat menyederhanakan pembuatan solusi untuk menjawab FAQ dalam bahasa Rusia dan integrasinya ke dalam asisten suara.

Menciptakan keterampilan tanya jawab berdasarkan perpustakaan DeepPavlov


DeepPavlov hanyalah perpustakaan seperti itu. Ini berisi satu set komponen terlatih untuk analisis bahasa, termasuk komponen klasifikasi teks. Anda dapat membaca lebih lanjut tentang berbagai komponen DeepPavlov dalam bantuan .

Bekerja dengan DeepPavlov tidak memerlukan keterampilan khusus dari pengembang, perpustakaan ini gratis dan memberikan banyak peluang untuk penyempurnaan.

Anda dapat menemukan semua instruksi untuk membuat keterampilan berdasarkan pada basis pengetahuan dalam tutorial ini . Kami menyarankan Anda menulis ulang kode dari tutorial menjadi skrip terpisah dan menjalankan keterampilan dari skrip.

Instal Perpustakaan DeepPavlov


Untuk memulai, instal Python 3.6 dan aktifkan lingkungan pengembangan. Kemudian instal DeepPavlov.

source activate py36 pip install -q deeppavlov 

Pengembangan keterampilan


Keterampilan (skill) dalam DeepPavlov adalah entitas yang, terlepas dari fungsi ( klasifikasi teks , menjawab pertanyaan domain terbuka , dll.) Memiliki format input dan output yang disatukan. Keterampilan dibuat sehingga mereka dapat digabungkan menjadi satu tumpukan sistem dialog sederhana, yang, setelah menerima permintaan, mengambil jawaban dari keterampilan dengan kepercayaan diri tertinggi.

Buat objek dari kelas SimilarityMatchingSkill yang menanggapi permintaan pengguna berdasarkan daftar pertanyaan umum.

 from deeppavlov.contrib.skills.similarity_matching_skill import SimilarityMatchingSkill faq = SimilarityMatchingSkill(data_path = 'http://files.deeppavlov.ai/faq/dataset_ru.csv', x_col_name = 'Question', y_col_name = 'Answer', save_load_path = './model', config_type = 'tfidf_autofaq', edit_dict = {}, train = True) 

Objek dari kelas SimilarityMatchingSkill memiliki parameter berikut:

  • data_path - path ke file data csv (pembatas koma)
  • x_col_name - nama kolom dengan pertanyaan dalam file csv (Pertanyaan, default)
  • y_col_name - nama kolom dengan jawaban dalam file csv (Jawab, default)
  • config_type adalah nama konfigurasi yang ingin Anda gunakan untuk klasifikasi. Daftar semua konfigurasi .
  • edit_dict - `dict` dengan parameter yang akan ditulis ulang dalam konfigurasi config_type tertentu
  • save_load_path - jalur tempat menyimpan model yang terlatih
  • melatih - apakah akan melatih model

Untuk mulai menggunakan model, setelah pelatihan cukup untuk memuatnya dengan perintah berikut:

 faq = SimilarityMatchingSkill(save_load_path='./model')`. 

Kelas SimilarityMatchingSkill menyederhanakan akses ke komponen klasifikasi teks. Tetapi jika ada bagian dari konfigurasi yang ingin Anda ubah, Anda dapat melakukan ini dengan mendefinisikan parameter edit_dict. Objek dari kelas SimilarityMatchingSkill (seperti keahlian apa pun) mengambil tiga parameter sebagai input: daftar penawaran untuk klasifikasi, daftar riwayat kueri dan daftar negara (dalam kasus SimilarityMatchingSkill, dua terakhir dapat menjadi daftar kosong).

 faq(['  ?'],[],[]) 

Sistem dialog tipikal biasanya berisi beberapa keterampilan. Untuk menunjukkan bekerja dengan beberapa keterampilan, kami akan membuat beberapa keterampilan dari kelas PatternMatchingSkill.

 from deeppavlov.skills.pattern_matching_skill import PatternMatchingSkill hello = PatternMatchingSkill(responses=['', ''], patterns=['', '']) bye = PatternMatchingSkill(responses=['', ' '], patterns=['', ' ']) fallback = PatternMatchingSkill(responses=[' '], default_confidence = 0.3) 

PatternMatchingSkill adalah kelas keterampilan sederhana yang dipanggil saat permintaan pengguna cocok dengan salah satu elemen dari daftar pola dan merespons elemen acak dari daftar respons dengan kepercayaan default_confidence. Anda dapat mengkonfigurasi parameter default_confidence secara manual untuk memprioritaskan respons keterampilan.

Langkah terakhir adalah menggabungkan keterampilan ke dalam agen dan mengkonfigurasi parameter pemilihan keterampilan. Parameter `HighestConfidenceSelector` menentukan bahwa keterampilan akan dipanggil dengan kepercayaan diri tertinggi.

 from deeppavlov.agents.default_agent.default_agent import DefaultAgent from deeppavlov.agents.processors.highest_confidence_selector import HighestConfidenceSelector agent = DefaultAgent([hello, bye, faq, fallback], skills_selector=HighestConfidenceSelector()) 

Selanjutnya, mulai server dengan jalur untuk permintaan `endpoint = 'faq`` dan port koneksi` port = 5000`

 from deeppavlov.utils.alice import start_agent_server start_agent_server(agent, host='0.0.0.0', port=5000, endpoint='/faq') 

Harap dicatat bahwa Yandex.Dialogs memerlukan server dengan alamat IP eksternal dan akses melalui https sebagai URL Webhook. Untuk membuat prototipe cepat, Anda dapat menggunakan Ngrok - ini memungkinkan Anda membuat terowongan untuk mengakses server Anda dari DeepPavlov di jaringan lokal. Untuk melakukan ini, jalankan

 ngrok http 5000 

di server Anda dengan DeepPavlov. Menanggapi hal ini, dua terowongan akan dibuat, satu untuk protokol http dan https. Salin alamat terowongan untuk https, tambahkan titik akhir / faq ke tautan, tautan terakhir akan menjadi URL Webhook untuk Yandex.Dialog kami.

Menjalankan skill pada Alice


Untuk menguji interaksi dengan platform Yandex.Dialogs, buka dialogs.yandex.ru/developer dan buat dialog baru . Tetapkan nama unik dan nama aktivasi. Untuk URL Webhook, tentukan tautan yang diterima sebelumnya. Simpan perubahannya. Untuk berinteraksi dengan keterampilan, buka tab Tes.

Kesimpulan


Nah, sekarang Anda tahu cara menggunakan model klasifikasi teks dari pustaka DeepPavlov untuk membuat bot tanya-jawab, cara cepat membuat prototipe keterampilan menggunakan DeepPavlov dan menghubungkannya ke Alice.

Omong-omong, antarmuka untuk menghubungkan ke Amazon Alexa dan Microsoft Bot Framework juga diimplementasikan di perpustakaan kami.

Kami menyambut umpan balik dalam komentar. Dan Anda dapat meninggalkan pertanyaan tentang DeepPavlov di forum kami.

Source: https://habr.com/ru/post/id445748/


All Articles