Membuat Chatbot dengan Websocket Server

Gifa Delyani Nursyafitri
4 min readJul 14, 2020
Source : https://www.immersa-lab.com/mengenal-apa-itu-chatbot-dan-cara-kerjanya.htm

Holaa people! Balik lagi bareng aku. Pernah gak sih kalian denger tentang chatbot?

Nah, kali ini kita bakalan bahas tentang chatbot dengan Websocket Server.

Apa sih Chatbot itu?

Chatbot terdiri dari dua kata, yaitu chat yang merupakan salah satu cara untuk berkomunikasi melalui media pesan atau tulisan, dan bot yang merupakan suatu program yang memiliki pengetahuan untuk memberikan respon sesuai perintah yang diterima (Suryani & Amalia, 2017).

Penggabungan antara teknologi Artificial Intelligence (AI), Machine Learning, Deep Learning, dan Natural Language Processing (NLP) menciptakan teknologi chatbot.

Chatbot menjadi salah satu kecanggihan yang dapat menggantikan suatu pekerjaan manusia. Dengan sistem kerja dari chatbot, pengguna akan dengan mudah untuk mendapatkan informasi yang diinginkannya.

Chatbot pertama diciptakan pada tahun 1966 oleh Joseph Weizenbaum, seorang profesor di MIT (Massachusetts Institute of Technology) dan di beri nama ELIZA. Sistem di MIT membuat beberapa jenis bahasa alami dalam percakapan antara manusia dan komputer. Kalimat yang dimasukkan kemudian dianalisis berdasarkan aturan yang dipicu oleh kata kunci yang muncul di dalam masukan teks (Khairunnisa, 2018). Chatbot yang dihasilkan masih sangat sederhana dan kaku seperti robot. Chatbot ELIZA merupakan program dalam MAC time sharing dan dirancang seperti seorang psikoterapis yang mampu bercakap dengan manusia.

Contoh percakapan dengan chatbot

Nah, apa aja sih yang dibutuhkan untuk membuat chatbot?

Pertama banget nih, yang pasti kita butuh data.

Misalnya, kita akan membuat chatbot mengenai penyakit yang paling mematikan. Otomatis kita harus mencari data mengenai penyakit mematikan yang akan dijadikan data jawaban. Selain itu kita juga akan membuat pertanyaan berdasarkan data jawaban yang kita miliki.

Data pertanyaan dan jawaban kemudian akan kita jadikan satu file yang berekstensi *.yml

Berikut adalah tampilan data tersebut,

Pola Pertanyaan Kategori Penyakit Mematikan

Di sini, akupunya tiga file YAML kumpulan pertanyaan dan jawaban ya. Kalian bisa sesuaikan dengan data kalian.

File YAML yang digunakan untuk membangun chatbot

Kalian bisa sesuaiin dengan kebutuhan kalian ya guys!

Setelah punya data, kita harus ngapain lagi?

Nah, sebelum lebih jauh, kita harus menginstall package berikut:

  • ChatterBot merupakan salah satu pustaka python yang dapat memberikan respon secara otomatis kepada pengguna. Menurut Ppyi (2019) di dalam (Listari, 2019), ChatterBot menggunakan algoritma pembelajaran mesin agar dapat menghasilkan berbagai jenis respon serta dapat memudahkan pengembang untuk membuat bot obrolan dan mengotomatiskan percakapan dengan pengguna.
  • Simple Websocket Server dibangun dengan python menggunakan Tornado yang menyediakan kemampuan dalam menangani koneksi dalam waktu yang panjang. WebSocket merupakan soket terbuka, yang artinya dapat membuat koneksi web stateful dan memfasilitasi transfer data real-time ke dan dari server. Server menjaga status klien, membuatnya mudah untuk mengimplementasikan aplikasi obrolan real-time atau permainan web berdasarkan WebSockets. WebSockets dirancang untuk iimplementasikan di browser web dan server, dan saat ini didukung di semua browser web utama.

Note : khusus untuk Websocket Server, kita harus memiliki masternya terlebih dahulu. Bisa lihat di sini.

Setelah itu, kita akan membuat tiga file python.

from chatterbot import ChatBot
from chatterbot.trainers import ListTrainer
import os
def setup():
chatbot = ChatBot('Bot',
storage_adapter='chatterbot.storage.SQLStorageAdapter',
trainer='chatterbot.trainers.ListTrainer')
for file in os.listdir('D:/SKRIPSI/penyakitbot/penyakit bot/penyakitfix/'):
convData = open(r'D:/SKRIPSI/penyakitbot/penyakit bot/penyakitfix/' + file,encoding='latin-1').readlines()
chatbot.set_trainer(ListTrainer)
chatbot.train(convData)
#print("Training completed")
setup()

Script di atas merupakan isi dari file yang pertama, misalkan simpan dengan nama “chatbot_train.py”.

File ini merupakan file pertama yang akan dijalankan dimana digunakan untuk melakukan training pada data yang tersedia, kemudian di dalam file ini juga didefinisikan bahwa hasil training akan disimpan di SQLite.

from chatterbot import ChatBot
from chatterbot.trainers import ListTrainer
def get_response(usrText):
bot = ChatBot('Bot',
storage_adapter='chatterbot.storage.SQLStorageAdapter',
logic_adapters=[
{
'import_path': 'chatterbot.logic.BestMatch'
},
{
'import_path': 'chatterbot.logic.LowConfidenceAdapter',
'threshold': 0.80,
'default_response': 'Maaf, Gaga masih tidak mengerti maksud mu:( apa kamu bisa mengulangi pertanyaanmu lagi?'
}
],
trainer='chatterbot.trainers.ListTrainer')
bot.set_trainer(ListTrainer)
while True:
if usrText.strip()!= 'Bye':
result = bot.get_response(usrText)
reply = str(result)
return(reply)
if usrText.strip() == 'Bye':
return('Bye')
break

Selanjutnya simpan script ini dengan nama “Chatbot.py” di dalam folder yang sama dengan folder sebelumnya.

File ini dijalankan setelah menjalankan chatbot_train.py.

from SimpleWebSocketServer import WebSocket, SimpleWebSocketServer
from chatbot import get_response
class ChatServer(WebSocket):def handleMessage(self):
# echo message back to client
message = self.data
response = get_response(message)
self.sendMessage(response)
def handleConnected(self):
print(self.address, 'connected')
def handleClose(self):
print(self.address, 'closed')
server = SimpleWebSocketServer('', 8000, ChatServer)
server.serveforever()

Script di atas kemudian aku simpan dengan nama “server.py”. File python ini bertujuan agar chatbot yang telah kita bangun sebelumnya dapat dikoneksikan dengan website statis.

Terus kita harus ngapain lagi?

Nah, kita perlu bikin tampilan website kita menjadi lebih menarik. Kalian bisa cari kode CSS buat bikin website kalian menjadi lebih interaktif ya? Inget, gak boleh males dan mager!

Jadi ini tampilan dari website yang aku bikin hehe.

Tampilan Website

Nah, karena website nya udah jadi, sekarang kita coba yuk chatbotnya?

Tampilan jawaban pertanyaan dari chatbot

Hore! chatbot kita udah berhasil memberikan jawaban sesuai dengan pertanyaan yang diajukan. Jadi kita gak perlu capek lagi deh ngasih informasi yang sama secara berulang ulang.

Nah kalau mau chatbot ini bisa diakses banyak orang, kita harus jadiin website ini sebagai website dinamis dengan cara di hosting.

Semoga ini bermanfaat ya!

Btw, ini tugas akhir ku loh hehe. Next time kita bakalan bahas tentang chatbot yang dikoneksikan dengan Telegram API. Gimana?

See you!

--

--

Gifa Delyani Nursyafitri

Ku abadikan disini, karena aku paham betul bahwa ingatan manusia terbatas.