Saturday, 15 July 2023

Membuat Chatbot menggunakan Phyton

Cara menambahkan meta tags video

Membuat Chatbot menggunakan Phyton







Chatbots dapat memberikan dukungan real-time bagi pelanggan, oleh karenanya merupakan aset berharga di banyak industri. Saat Anda memahami dasar-dasar library ChatterBot, Anda dapat membuat dan melatih chatbot belajar mandiri hanya dengan beberapa baris kode Python.








Anda akan mengaktifkan dan menjalankan chatbot dasar langsung di langkah pertama, tetapi bagian yang paling menarik adalah fase pembelajaran, saat Anda melatih chatbot Anda. Kualitas dan persiapan data pelatihan Anda akan membuat perbedaan besar dalam performa chatbot Anda.


Untuk mensimulasikan proses dunia nyata yang mungkin Anda lalui untuk membuat chatbot yang relevan dengan industri, Anda akan mempelajari cara menyesuaikan respons chatbot. Anda akan melakukannya dengan menyiapkan data obrolan WhatsApp untuk melatih chatbot. Anda dapat menerapkan proses serupa untuk melatih bot Anda dari data percakapan yang berbeda dalam topik khusus domain apa pun.



Hal Yang Harus diperhatikan



Sebelum memulai, pastikan Anda memiliki versi Python yang berfungsi untuk proyek ChatterBot ini. Versi Python apa yang Anda butuhkan bergantung pada sistem operasi Anda:



Anda perlu menggunakan versi Python di bawah 3.8 agar berhasil bekerja dengan versi ChatterBot yang direkomendasikan dalam tutorial ini. Kamu bisa install Python 3.7.9 using pyenv-win.

Anda harus dapat menjalankan proyek di Ubuntu Linux dengan berbagai versi Python. Namun, jika Anda mengalami masalah apa pun, maka Anda dapat mencobanya install Python 3.7.9, for example using pyenv.

Anda dapat menjalankan proyek dengan berbagai versi Python. Chatbot dibangun dan diuji dengan Python 3.10.7 but should also run with older Python versions.



Jika Anda telah menginstal versi Python yang tepat untuk sistem operasi Anda, maka Anda siap untuk memulai. Anda akan menyentuh beberapa konsep Python saat mengerjakan tutorial:



Langkah 1: Buat Chatbot Menggunakan Python ChatterBot



Pada langkah ini, Anda akan menyiapkan lingkungan virtual dan menginstal dependensi yang diperlukan. Anda juga akan membuat chatbot baris perintah yang berfungsi yang dapat membalas Anda — tetapi itu belum memiliki balasan yang sangat menarik untuk Anda.


Untuk memulai proyek chatbot Anda, buat dan aktifkan lingkungan virtual, lalu instal chatterbot dan pytz:


PS> python -m venv venv
PS> venv\Scripts\activate
(venv) PS> python -m pip install chatterbot==1.0.4 pytz
$ python -m venv venv
$ source venv/bin/activate
(venv) $ python -m pip install chatterbot==1.0.4 pytz


Menjalankan perintah ini di aplikasi terminal Anda menginstal ChatterBot dan mengontrolnya ke lingkungan virtual Python baru.


Setelah penginstalan selesai, menjalankan python -m pip freeze akan menampilkan daftar dependensi terinstal yang serupa dengan yang dapat Anda temukan di file requirements.txt kode contoh yang disediakan:


Dengan penginstalan selesai, dan mengabaikan beberapa masalah yang dimiliki perpustakaan saat ini, Anda siap untuk memulai! Buat file Python baru, beri nama bot.py, dan tambahkan kode yang Anda perlukan untuk mengaktifkan dan menjalankan chatbot dasar:


 1# bot.py
 2
 3from chatterbot import ChatBot
 4
 5chatbot = ChatBot("Chatpot")
 6
 7exit_conditions = (":q", "quit", "exit")
 8while True:
 9    query = input("> ")
10    if query in exit_conditions:
11        break
12    else:
13        print(f"🪴 {chatbot.get_response(query)}")


Setelah mengimpor ChatBot di baris 3, Anda membuat turunan dari ChatBot di baris 5. Satu-satunya argumen yang diperlukan adalah sebuah nama, dan Anda menyebutnya "Chatpot". Tidak, itu bukan salah ketik—Anda akan benar-benar membuat chatbot pot bunga yang cerewet dalam tutorial ini! Anda akan segera menyadari bahwa pot mungkin bukan mitra percakapan terbaik.


Di baris 8, Anda membuat while loop yang akan terus berulang kecuali Anda memasukkan salah satu kondisi keluar yang ditentukan di baris 7. Terakhir, di baris 13, Anda memanggil .get_response() pada instance ChatBot yang Anda buat sebelumnya dan menyebarkannya input pengguna yang Anda kumpulkan di baris 9 dan ditugaskan ke kueri.


Panggilan ke .get_response() di baris terakhir skrip pendek adalah satu-satunya interaksi dengan chatbot Anda. Namun — Anda memiliki chatbot baris perintah yang berfungsi yang dapat Anda coba.


Jika Anda siap untuk berkomunikasi dengan Chatpot buatan sendiri, maka Anda dapat melanjutkan dan menjalankan file Python:


$ python bot.py


Setelah model bahasa disiapkan, Anda akan melihat tanda lebih besar dari (>) yang Anda tetapkan di bot.py sebagai permintaan input Anda. Anda sekarang dapat mulai berinteraksi dengan panci cerewet Anda:


> hello
🪴 hello
> are you a plant?
🪴 hello
> can you chat, pot?
🪴 hello


Yah… chat-pot Anda merespons, tetapi benar-benar kesulitan untuk mengembangkannya. Sulit untuk mengharapkan lebih banyak dari tanaman dalam pot—bagaimanapun juga, ia tidak pernah bisa melihat dunia!


Bahkan jika chat-pot Anda belum banyak bicara, itu sudah belajar dan berkembang. Untuk menguji ini, hentikan sesi saat ini. Anda dapat melakukannya dengan mengetikkan salah satu syarat keluar—":q", "quit", atau "exit". Kemudian mulai chatbot lain kali. Masukkan pesan yang berbeda, dan Anda akan melihat bahwa chatbot mengingat apa yang Anda ketikkan selama proses sebelumnya:


> hi
🪴 hello
> what's up?
🪴 are you a plant?


Selama proses pertama, ChatterBot membuat file database SQLite yang menyimpan semua input Anda dan menghubungkannya dengan kemungkinan respons. Seharusnya ada tiga file baru yang muncul di direktori kerja Anda:


./
├── bot.py
├── db.sqlite3
├── db.sqlite3-shm
└── db.sqlite3-wal


ChatterBot menggunakan default SQLStorageAdapter dan membuat database file SQLite kecuali Anda menentukan storage adapter yang berbeda .


Karena Anda mengatakan keduanya hello dan hi di awal obrolan (chat), tempat obrolan Anda mengetahui bahwa ia dapat menggunakan pesan-pesan ini secara bergantian. Itu berarti jika Anda banyak mengobrol dengan chatbot baru Anda, lambat laun akan ada balasan yang lebih baik untuk Anda. Tetapi meningkatkan tanggapannya secara manual terdengar seperti proses yang panjang!


Sekarang setelah Anda membuat chatbot baris perintah yang berfungsi, Anda akan belajar cara melatihnya sehingga Anda dapat melakukan percakapan yang sedikit lebih menarik.



Langkah ke-2: Mulai Ujicoba Chatbot Yang Anda buat



Pada langkah sebelumnya, Anda membuat chatbot yang dapat berinteraksi dengan Anda dari baris perintah. Chatbot dimulai dari awal yang bersih dan tidak terlalu menarik untuk diajak bicara.


Pada langkah ini, Anda akan melatih penggunaan chatbot Anda ListTrainer untuk membuatnya sedikit lebih pintar dari awal. Saya juga akan belajar tentang pelatih bawaan yang disertakan dengan ChatterBot, termasuk batasannya.


Chatbot Anda tidak harus memulai dari awal, dan ChatterBot memberi Anda cara cepat untuk melatih bot Anda. Anda akan menggunakan ChatterBot ListTrainer untuk memberikan beberapa contoh percakapan yang akan memberi lebih banyak ruang bagi chatbot Anda untuk berkembang:


 1# bot.py
 2
 3from chatterbot import ChatBot
 4from chatterbot.trainers import ListTrainer
 5
 6chatbot = ChatBot("Chatpot")
 7
 8trainer = ListTrainer(chatbot)
 9trainer.train([
10    "Hi",
11    "Welcome, friend 🤗",
12])
13trainer.train([
14    "Are you a plant?",
15    "No, I'm the pot below the plant!",
16])
17
18exit_conditions = (":q", "quit", "exit")
19while True:
20    query = input("> ")
21    if query in exit_conditions:
22        break
23    else:
24        print(f"🪴 {chatbot.get_response(query)}")


Di baris 4, Anda mengimpor ListTrainer, dan meneruskan chatbot Anda di baris 8 untuk membuat trainer.


Di baris 9 hingga 12, Anda menyiapkan putaran pelatihan pertama, tempat Anda meneruskan daftar dua string ke trainer.train(). Menggunakan .train() menyuntikkan entri ke dalam database Anda untuk membangun struktur grafik yang digunakan ChatterBot untuk memilih kemungkinan balasan.




Anda dapat menjalankan lebih dari satu sesi latihan, jadi pada baris 13 hingga 16, Anda menambahkan pernyataan lain dan balasan lain ke basis data chatbot Anda.


Jika sekarang Anda menjalankan chatbot interaktif sekali lagi menggunakan python bot.py, Anda dapat memperoleh respons yang agak berbeda dari sebelumnya:



> hi
🪴 Welcome, friend 🤗
> hello
🪴 are you a plant?
> me?
🪴 are you a plant?
> yes
🪴 hi
> are you a plant?
🪴 No, I'm the pot below the plant!
> cool
🪴 Welcome, friend 🤗


Percakapannya belum cukup lancar sehingga Anda ingin pergi kencan kedua, tetapi ada konteks tambahan yang tidak Anda miliki sebelumnya! Saat Anda melatih chatbot Anda dengan lebih banyak data, itu akan menjadi lebih baik dalam menanggapi input pengguna.


Library ChatterBot hadir dengan beberapa corpora yang dapat Anda gunakan untuk melatih chatbot Anda. Namun, pada saat penulisan, ada beberapa masalah jika Anda mencoba menggunakan sumber daya ini secara langsung.




Tutorial di atas yang disediakan mungkin sudah cukup untuk Anda untuk membuat Chatnot, selanjutnya Anda hanya akan membuat parse yang disesuaikan data input percakapan Anda sendiri untuk pelatihan dengan ListTrainer ChatterBot.


Untuk menguji chatbot Anda agar mampu menjawab pertanyaan yang dibutuhkan corpora industri, Anda mungkin perlu bekerja dengan data khusus, misalnya dari permintaan dukungan yang ada atau log obrolan dari perusahaan Anda.


Selanjutnya, Anda akan mengerjakan langkah-langkah mengonversi data obrolan dari percakapan WhatsApp ke dalam format yang dapat Anda gunakan untuk melatih bot obrolan Anda. Jika sumber daya Anda sendiri adalah data percakapan WhatsApp, maka Anda dapat menggunakan langkah-langkah ini secara langsung. Jika data Anda berasal dari tempat lain, Anda dapat menyesuaikan langkah-langkahnya agar sesuai dengan format teks spesifik Anda.


Untuk memulai, Anda akan mempelajari cara mengekspor data dari percakapan obrolan WhatsApp.



Langkah ke-3: Ekspor Obrolan WhatsApp



Di akhir langkah ini, Anda akan mengunduh file TXT yang berisi riwayat obrolan percakapan WhatsApp. Jika Anda tidak memiliki akun WhatsApp atau tidak ingin bekerja dengan data percakapan Anda sendiri, Anda dapat mengunduh contoh ekspor obrolan di bawah ini:


Jika Anda akan bekerja dengan sampel riwayat obrolan yang disediakan, Anda dapat melompat ke bagian berikutnya, di mana Anda akan membersihkan ekspor obrolan Anda.


Untuk mengekspor riwayat percakapan yang Anda lakukan di WhatsApp, Anda perlu membuka percakapan di ponsel Anda. Setelah berada di layar percakapan, Anda dapat mengakses menu ekspor:



  1. Klik tiga titik (⋮) di pojok kanan atas untuk membuka menu utama.
  2. Pilih More untuk memunculkan opsi menu tambahan.
  3. Pilih Export chat untuk membuat ekspor TXT dari percakapan Anda.

Dalam tangkapan layar yang digabungkan di bawah ini, Anda dapat melihat tiga langkah berurutan yang diberi nomor dan diberi garis merah:



3 WhatsApp screens showing how to access the export menu


Setelah mengeklik Ekspor obrolan, Anda harus memutuskan apakah akan menyertakan media, seperti foto atau pesan audio atau tidak. Karena chatbot Anda hanya berurusan dengan teks, pilih TANPA MEDIA. Kemudian, Anda dapat menyatakan ke mana Anda ingin mengirim file tersebut.


Sekali lagi, Anda dapat melihat contoh langkah selanjutnya ini dalam dua tangkapan layar WhatsApp yang digabungkan dengan angka merah dan garis besar di bawah ini:


2 WhatsApp phone screenshots showing where to save an export file without media


Dalam contoh ini, Anda menyimpan file ekspor obrolan ke folder Google Drive bernama Chats Ekspor. Anda harus menyiapkan folder itu di Google Drive sebelum dapat memilihnya sebagai opsi. Tentu saja, Anda tidak perlu menggunakan Google Drive. Selama Anda menyimpan atau mengirim file ekspor obrolan sehingga Anda dapat mengaksesnya di komputer, Anda siap melakukannya.


Setelah selesai, alihkan kembali ke komputer Anda. Temukan file yang Anda simpan, dan unduh ke mesin Anda.


Secara khusus, Anda harus menyimpan file ke folder yang juga berisi bot.py dan beri nama ulang chat.txt. Kemudian, buka dengan editor teks favorit Anda untuk memeriksa data yang Anda terima:



9/15/22, 14:50 - Messages and calls are end-to-end encrypted.
⮑ No one outside of this chat, not even WhatsApp, can read
⮑ or listen to them. Tap to learn more.
9/15/22, 14:49 - Philipp: Hi Martin, Philipp here!
9/15/22, 14:50 - Philipp: I'm ready to talk about plants!
9/15/22, 14:51 - Martin: Oh that's great!
9/15/22, 14:52 - Martin: I've been waiting for a good convo about
⮑ plants for a long time
9/15/22, 14:52 - Philipp: We all have.
9/15/22, 14:52 - Martin: Did you know they need water to grow?
...


Jika Anda ingat bagaimana ChatterBot menangani data pelatihan, Anda akan melihat bahwa formatnya tidak ideal untuk digunakan untuk pelatihan.


ChatterBot uses complete lines as messages when a chatbot replies to a user message. In the case of this chat export, it would therefore include all the message metadata. That means your friendly pot would be studying the dates, times, and usernames! Not exactly great conversation fertilizer.


Untuk menghindari masalah ini, Anda harus membersihkan data ekspor obrolan sebelum menggunakannya untuk melatih bot obrolan Anda.



Langkah 4: Bersihkan Ekspor Obrolan Anda



Pada langkah ini, Anda akan membersihkan data ekspor obrolan WhatsApp sehingga Anda dapat menggunakannya sebagai input untuk melatih chatbot Anda pada topik khusus industri. Dalam contoh ini, topiknya adalah - tanaman hias!


Sebagian besar data yang akan Anda gunakan untuk melatih chatbot Anda akan memerlukan semacam pembersihan sebelum dapat memberikan hasil yang bermanfaat. Ini seperti pepatah lama:


Garbage in, garbage out (Source)



Luangkan waktu untuk menjelajahi data yang sedang Anda kerjakan dan untuk mengidentifikasi potensi masalah:



9/15/22, 14:50 - Messages and calls are end-to-end encrypted.
⮑ No one outside of this chat, not even WhatsApp, can read
⮑ or listen to them. Tap to learn more.

...

9/15/22, 14:50 - Philipp: I'm ready to talk about plants!

...

9/16/22, 06:34 - Martin: <Media omitted>

...


Misalnya, Anda mungkin memperhatikan bahwa baris pertama ekspor obrolan yang disediakan bukan bagian dari percakapan. Selain itu, setiap pesan sebenarnya dimulai dengan metadata yang menyertakan tanggal, waktu, dan nama pengguna pengirim pesan.


Jika Anda menggulir lebih jauh ke bawah file percakapan, Anda akan menemukan baris yang bukan pesan sebenarnya. Karena Anda tidak menyertakan file media dalam ekspor obrolan, WhatsApp mengganti file ini dengan teks <Media dihilangkan>.


Semua data ini akan mengganggu keluaran chatbot Anda dan tentunya membuatnya terdengar kurang komunikatif. Oleh karena itu, sebaiknya hapus data ini.


Buka file Python baru untuk memproses data Anda sebelum menyerahkannya ke ChatterBot untuk pelatihan. Mulailah dengan membaca konten file dan menghapus metadata obrolan:



 1# cleaner.py
 2
 3import re
 4
 5def remove_chat_metadata(chat_export_file):
 6    date_time = r"(\d+\/\d+\/\d+,\s\d+:\d+)"  # e.g. "9/16/22, 06:34"
 7    dash_whitespace = r"\s-\s"  # " - "
 8    username = r"([\w\s]+)"  # e.g. "Martin"
 9    metadata_end = r":\s"  # ": "
10    pattern = date_time + dash_whitespace + username + metadata_end
11
12    with open(chat_export_file, "r") as corpus_file:
13        content = corpus_file.read()
14    cleaned_corpus = re.sub(pattern, "", content)
15    return tuple(cleaned_corpus.split("\n"))
16
17if __name__ == "__main__":
18    print(remove_chat_metadata("chat.txt"))


Kode function ini menghapus metadata pesan yang tidak relevan dengan percakapan dari file ekspor chat menggunakan re bawaan modul, yang memungkinkan Anda bekerja dengan ekspresi reguler:

  • Baris 3 imports re.

  • Baris 6 hingga 9 mendefinisikan beberapa pola regex. Membuat beberapa pola membantu Anda melacak apa yang Anda cocokkan dan memberi Anda fleksibilitas untuk menggunakan capturing grups untuk menerapkan preprocessing lebih lanjut nanti. Misalnya, dengan akses ke username, Anda dapat memotong percakapan dengan menggabungkan pesan yang dikirim secara berurutan oleh pengguna yang sama.

  • Baris 10 menggabungkan pola regex yang Anda tentukan di baris 6 hingga 9 menjadi satu pola. Pola lengkap cocok dengan semua metadata yang ingin Anda hapus.

  • Baris 12 dan 13 buka file ekspor obrolan dan baca data ke dalam memori.

  • Baris 14 menggunakan re.sub() untuk mengganti setiap kemunculan pola yang Anda tentukan di pattern dengan string kosong (""), menghapus secara efektif itu dari string.

  • Baris 15 pertama pisahkan string konten file menjadi item daftar menggunakan .split("\n"). Ini memecah cleaned_corpus ke dalam daftar di mana setiap baris mewakili item terpisah. Kemudian, Anda mengonversi daftar ini menjadi tuple dan mengembalikannya dari remove_chat_metadata().

  • Baris 17 dan 18 gunakan idiom nama-utama Python untuk memanggil remove_chat_metadata() dengan "chat.txt" sebagai argumennya, sehingga Anda dapat memeriksa hasilnya saat menjalankan skrip.



Eventually, you’ll use cleaner as a module and import the functionality directly into bot.py. But while you’re developing the script, it’s helpful to inspect intermediate outputs, for example with a print() call, as shown in line 18.



Akhirnya, Anda akan menggunakan cleaner sebagai modul dan mengimpor fungsionalitas langsung ke bot.py. Namun saat Anda sedang mengembangkan skrip, akan sangat membantu untuk memeriksa hasil antara, misalnya dengan panggilan print(), seperti yang ditunjukkan pada baris 18.




Setelah menghapus metadata pesan dari setiap baris, Anda juga ingin menghapus beberapa baris lengkap yang tidak relevan dengan percakapan. Untuk melakukannya, buat fungsi kedua di skrip pembersihan data Anda:


 1# cleaner.py
 2
 3# ...
 4
 5def remove_non_message_text(export_text_lines):
 6    messages = export_text_lines[1:-1]
 7
 8    filter_out_msgs = ("<Media omitted>",)
 9    return tuple((msg for msg in messages if msg not in filter_out_msgs))
10
11if __name__ == "__main__":
12    message_corpus = remove_chat_metadata("chat.txt")
13    cleaned_corpus = remove_non_message_text(message_corpus)
14    print(cleaned_corpus)


Di remove non message_text(), saya akan menjadi kode tertulis yang memungkinkan Anda menghapus baris yang tidak relevan dari korpus percakapan:


  • Baris 6 menghapus baris pengantar pertama, yang disertakan dengan setiap ekspor obrolan WhatsApp, serta baris kosong di akhir file.

  • Baris 8 membuat tuple tempat Anda dapat menentukan string apa yang ingin Anda kecualikan dari data yang akan digunakan untuk pelatihan. Untuk saat ini, hanya berisi satu string, tetapi jika Anda juga ingin menghapus konten lain, Anda dapat dengan cepat menambahkan lebih banyak string ke tuple ini sebagai item.

  • Baris 9 memfilter messages untuk string yang ditentukan dalam filter_out_msgs menggunakan ekspresi generator yang Anda konversi menjadi tuple sebelum mengembalikannya



Terakhir, Anda juga mengubah baris 12 menjadi 14. Sekarang Anda mengumpulkan nilai kembalian dari pemanggilan fungsi pertama dalam variabel message_corpus, kemudian menggunakannya sebagai argumen untuk remove_non_message_text(). Anda menyimpan hasil pemanggilan fungsi tersebut ke cleaned_corpus dan mencetak nilai tersebut ke konsol Anda di baris 14.


Karena Anda ingin memperlakukan cleaner sebagai modul dan menjalankan kode pembersih di bot.py, sebaiknya sekarang refactor kode di nama-main idiom ke dalam fungsi utama yang kemudian dapat Anda impor dan panggil di bot.py:


 1# cleaner.py
 2
 3import re
 4
 5def clean_corpus(chat_export_file):
 6    message_corpus = remove_chat_metadata(chat_export_file)
 7    cleaned_corpus = remove_non_message_text(message_corpus)
 8    return cleaned_corpus
 9
10# ...
11
12# Deleted: if __name__ == "__main__":


Anda memfaktorkan ulang kode Anda dengan memindahkan pemanggilan fungsi dari idiom nama-utama ke dalam fungsi khusus, clean_corpus(), yang Anda tetapkan di bagian atas file. Pada baris 6, Anda mengganti "chat.txt" dengan parameter chat_export_file agar lebih umum. Anda akan memberikan nama file saat memanggil fungsi tersebut. Fungsi clean_corpus() mengembalikan corpus yang telah dibersihkan, yang dapat Anda gunakan untuk melatih chatbot Anda.


Setelah membuat modul pembersihan, kini Anda dapat kembali ke bot.py dan mengintegrasikan kode ke dalam saluran Anda.



Langkah 5: Latih Chatbot Anda di Data Khusus dan Mulai Chating



Pada langkah ini, Anda akan melatih chatbot Anda dengan data percakapan WhatsApp yang telah Anda bersihkan pada langkah sebelumnya. Anda akan berakhir dengan chatbot yang telah Anda latih tentang data percakapan khusus industri, dan Anda akan dapat mengobrol dengan bot - tentang tanaman hias!


Buka bot.py dan sertakan panggilan ke fungsi pembersihan Anda dalam kode:



 1# bot.py
 2
 3from chatterbot import ChatBot
 4from chatterbot.trainers import ListTrainer
 5from cleaner import clean_corpus
 6
 7CORPUS_FILE = "chat.txt"
 8
 9chatbot = ChatBot("Chatpot")
10
11trainer = ListTrainer(chatbot)
12cleaned_corpus = clean_corpus(CORPUS_FILE)
13trainer.train(cleaned_corpus)
14
15exit_conditions = (":q", "quit", "exit")
16while True:
17    query = input("> ")
18    if query in exit_conditions:
19        break
20    else:
21        print(f"🪴 {chatbot.get_response(query)}")


Anda tidak perlu melakukan banyak pekerjaan ekstra dalam file ini, karena Anda telah menyiapkan fungsi pembersihan dengan baik:


  • Baris 5 mengimpor clean_corpus() dari cleaner.

  • Baris 7 menentukan nama file dari file ekspor obrolan Anda. Dalam contoh ini, Anda menganggap bahwa itu disebut "chat.txt", dan terletak di direktori yang sama dengan bot.py. Jika Anda membutuhkan penanganan jalur lebih lanjut, lihat modul Python pathlib.

  • Baris 12 menerapkan kode pembersihan Anda ke file riwayat obrolan dan mengembalikan sejumlah pesan yang telah dibersihkan, yang Anda sebut cleaned_corpus.

  • Baris 13 akhirnya menggunakan data tersebut sebagai input ke .train(), melatih chatbot Anda secara efektif dengan data percakapan WhatsApp.



Penting untuk diketahui bahwa ChatterBot akan memperlakukan iterable dengan lebih dari dua item sedikit berbeda dari saat hanya ada dua item, seperti yang Anda lakukan dalam pelatihan sebelumnya:



Jika Anda memberikan daftar percakapan pelatihan yang lebih panjang, tindakan ini akan menetapkan setiap item dalam daftar sebagai respons yang memungkinkan untuk pendahulunya dalam daftar. (Source)



Bergantung pada data input Anda, ini mungkin atau mungkin tidak persis seperti yang Anda inginkan. Untuk data ekspor obrolan WhatsApp yang disediakan, ini tidak ideal karena tidak setiap baris mewakili pertanyaan diikuti dengan jawaban.


Untuk mengatasinya, Anda dapat menerapkan pemrosesan awal tambahan pada data Anda, di mana Anda mungkin ingin mengelompokkan semua pesan yang dikirim oleh orang yang sama ke dalam satu baris, atau memotong ekspor obrolan berdasarkan waktu dan tanggal. Dengan begitu, pesan yang dikirim dalam jangka waktu tertentu dapat dianggap sebagai satu percakapan.


Selalu ada lebih banyak yang harus dibersihkan untuk meningkatkan data masukan Anda! Namun, untuk tutorial ini, saatnya untuk mencoba lagi chatbot houseplant percakapan. Jalankan bot.py dan mengobrol dengan cerewet Anda untuk menguji bagaimana responsnya berubah karena pelatihan:


> hi
🪴 Welcome, friend 🤗
> thanks for the green welcome
🪴 I let you
> you let me be here?
🪴 It's a monsters!
> did you mean monstera?
🪴 The leafs are getting dryer and dryer. But she's growing new ones
> who?
🪴 Do raindrops touch their leaves?
> very philosophical!
🪴 Lol
> ;)
🪴 I don't grow any crop at home
> no crops in pots
🪴 Ah, gotcha!
> ah, I just thought you meant that
🪴 But water makes sense
> yes, water in pots
🪴 Do you have any plant care pro tips?
> water.
🪴 I always thought that love and music was more than enough
> haha
🪴 Well, no. Just the balcony. This worked best
> ok, balcony is notes
🪴 I let you


Chatbot Anda telah meningkatkan jangkauan responsnya berdasarkan data pelatihan yang Anda berikan padanya. Seperti yang mungkin Anda perhatikan saat berinteraksi dengan chatbot Anda, responsnya tidak selalu masuk akal.


ChatterBot menggunakan kalimat lengkap sebagai balasan, dan Anda melatihnya hanya dengan sampel kecil data percakapan. Ukuran data pelatihan yang kecil berarti tidak memiliki banyak balasan untuk dipilih. Dan karena datanya percakapan, tidak semua kalimat sangat berguna sebagai balasan. Namun Chatpot berusaha semaksimal mungkin untuk menemukan balasan paling cocok untuk setiap pesan baru yang Anda ketik!


Untuk memilih tanggapan atas masukan Anda, ChatterBot menggunakan logika BestMatch adaptor secara default. Adaptor logika ini menggunakan jarak Levenshtein untuk membandingkan string input dengan semua pernyataan di database. Kemudian memilih balasan untuk pernyataan yang paling dekat dengan string input.


Jika Anda menggunakan data input yang terstruktur dengan baik, maka pengaturan default ChatterBot memberi Anda hasil yang layak. Dan jika Anda siap melakukan pekerjaan ekstra untuk mendapatkan apa yang Anda inginkan, maka Anda beruntung! ChatterBot memungkinkan banyak penyesuaian dan memberikan beberapa instruksi untuk memandu Anda ke arah yang benar:



ChatterBot memberi Anda default yang masuk akal. Tetapi jika Anda ingin menyesuaikan bagian mana pun dari proses, maka itu memberi Anda semua kebebasan untuk melakukannya.


Di bagian ini, Anda menggabungkan semuanya dan melatih chatbot Anda dengan korpus yang dibersihkan dari ekspor obrolan percakapan WhatsApp Anda. Pada titik ini, Anda sudah dapat melakukan percakapan yang menyenangkan dengan chatbot Anda, meskipun mungkin agak tidak masuk akal. Bergantung pada jumlah dan kualitas data pelatihan Anda, chatbot Anda mungkin sudah lebih atau kurang berguna


Semoga bermanfaat.

No comments:

Post a Comment