membuat ai chatbot dengan nlp di python

Membuat AI Chatbot dengan NLP di Python

Apakah Anda penasaran bagaimana cara membuat AI ChatBot dengan Python dan juga dapat melakukan percakapan dengan AI pribadi Anda?

Seperti yang disarankan oleh topik, kami di sini untuk membantu Anda melakukan percakapan dengan AI Anda hari ini. Untuk berkomunikasi dengan AI Anda, Anda memerlukan beberapa alat terlatih yang dapat membantu Anda membangun sistem AI chatbot.

Pada artikel ini, kami akan memandu Anda untuk menggabungkan proses speech recognition dengan algoritma kecerdasan buatan. Natural Language Processing atau NLP adalah prasyarat untuk proyek kami. NLP memungkinkan komputer dan algoritma untuk memahami interaksi manusia melalui berbagai bahasa.

Untuk memproses data bahasa alami dalam jumlah besar, AI pasti membutuhkan NLP atau Natural Language Processing. Saat ini, kami memiliki sejumlah penelitian NLP yang sedang berlangsung untuk meningkatkan AI chatbot dan membantu mereka memahami percakapan manusia.

Chatbot hanyalah aplikasi yang digunakan oleh bisnis atau entitas lain untuk melakukan percakapan otomatis antara manusia dan AI. Percakapan ini mungkin melalui teks atau ucapan. Chatbots diharuskan untuk memahami dan meniru percakapan manusia saat berinteraksi dengan manusia dari seluruh dunia.

Dari chatbot pertama yang dibuat ELIZA hingga Amazon’s ALEXA hari ini, chatbots telah berkembang pesat. Dalam tutorial ini, kita akan membahas semua dasar-dasar yang perlu Anda ikuti dan membuat chatbot dasar yang dapat memahami interaksi manusia dan juga dapat menanggapinya. Kami akan menggunakan API pengenalan suara dan juga model Transformer terlatih.

Apa itu NLP?

NLP adalah singkatan dari Natural Langugae Processing. Dengan menggunakan teknologi NLP, Anda dapat membantu mesin memahami ucapan manusia dan kata-kata yang diucapkan. NLP menggabungkan linguistik komputasi yang merupakan pemodelan berbasis aturan dari bahasa lisan manusia dengan algoritma cerdas seperti statistik, machine, dan deep learning algorithms. Teknologi ini bersama-sama menciptakan smart voice assistans dan chatbot yang dapat Anda gunakan dalam kehidupan sehari-hari.

Ada beberapa human error, perbedaan, dan intonasi khusus yang digunakan manusia sehari-hari dalam berbicara. Teknologi NLP memungkinkan mesin untuk memahami, memproses, dan merespons teks dalam jumlah besar dengan cepat secara real-time.

Dalam kehidupan sehari-hari, Anda telah menemukan teknologi NLP dalam aplikasi GPS yang dipandu suara, asisten virtual, aplikasi pembuatan catatan ucapan-ke-teks, dan chatbot dukungan aplikasi lainnya. Teknologi ini telah menemukan kasus penggunaan yang sangat besar di bidang bisnis yang digunakan untuk merampingkan proses, memantau produktivitas karyawan, dan meningkatkan efisiensi penjualan dan purna jual.

Tugas di NLP

Tugas menafsirkan dan menanggapi ucapan manusia dipenuhi dengan banyak tantangan yang telah kami bahas dalam artikel ini. Faktanya, manusia membutuhkan waktu bertahun-tahun untuk mengatasi tantangan ini dan mempelajari bahasa baru dari awal.

Untuk mengatasi tantangan ini, pemrogram telah mengintegrasikan banyak fungsi ke teknologi NLP untuk menciptakan teknologi bermanfaat yang dapat Anda gunakan untuk memahami ucapan manusia, memproses, dan mengembalikan respons yang sesuai.

Tugas NLP bertanggung jawab untuk memecah teks manusia dan sinyal audio dari data suara dengan cara yang dapat dianalisis dan diubah menjadi data yang dimengerti komputer. Beberapa tugas yang termasuk dalam penyerapan data NLP adalah sebagai berikut:

  • Speech Recognition: speech recognition atau konversi ucapan ke teks adalah proses yang sangat penting yang terlibat dalam analisis ucapan. Penandaan ucapan atau penandaan tata bahasa adalah subproses pengenalan ucapan yang memungkinkan komputer memecah ucapan dan menandainya dengan konteks tersirat, aksen, atau poin definisi ucapan lainnya.
  • Word sense Disambiguation: Dalam ucapan manusia, sebuah kata mungkin memiliki banyak arti. Proses disambiguasi arti kata adalah analisis semantik yang memilih arti kata tertentu yang paling sesuai dengan konteks yang diberikan. Misalnya, proses ini membantu memutuskan apakah suatu kata adalah kata kerja atau kata ganti.
  • Named Entity Recognition atau NEM: NEM mengidentifikasi kata dan frasa sebagai entitas yang berguna, misalnya, ‘Dev’ adalah nama seseorang dan ‘Amerika’ adalah nama negara.
  • Sentiment Analysis: Perkataan manusia sering mengandung sentimen dan nada Mengekstraksi nada dan konteks tersembunyi ini seperti sikap, sarkasme, ketakutan atau kegembiraan mungkin merupakan tugas tersulit yang dilakukan oleh proses NLP.

Jenis AI Chatbots

Chatbots adalah konsep yang relatif baru dan meskipun memiliki sejumlah besar program dan alat NLP, pada dasarnya kami hanya memiliki dua kategori chatbots yang berbeda berdasarkan teknologi NLP yang mereka gunakan. Kedua jenis chatbot ini adalah sebagai berikut:

Scripted chatbots:

Scripted chatbots diklasifikasikan sebagai chatbots yang bekerja pada skrip yang telah ditentukan sebelumnya yang dibuat dan disimpan di perpustakaan mereka. Setiap kali pengguna mengetik kueri atau mengucapkan kueri (dalam kasus chatbot yang dilengkapi dengan modul konversi ucapan ke teks), chatbot merespons kueri ini sesuai dengan skrip yang telah ditentukan sebelumnya yang disimpan di dalam perpustakaannya.

Salah satu kelemahan dari chatbot semacam itu adalah fakta bahwa pengguna perlu memberikan kueri mereka dengan cara yang sangat terstruktur dengan perintah yang dipisahkan koma atau bentuk lain dari ekspresi reguler yang memudahkan bot untuk melakukan analisis string dan memahami kueri.

Hal ini membuat chatbot semacam ini sulit untuk diintegrasikan dengan modul konversi suara ke teks yang dibantu NLP. Oleh karena itu, chatbot ini hampir tidak pernah dapat diubah menjadi smart virtual assistans.

Artificially Intelligent Chatbots:

Chatbots artificially intelligent, seperti namanya, dibuat untuk meniru sifat dan respons seperti manusia. NLP atau Natural Language Processing sangat bertanggung jawab untuk mengaktifkan chatbot semacam itu agar memahami dialek dan nada percakapan manusia.

NLP dikombinasikan dengan kecerdasan buatan menciptakan chatbot yang benar-benar cerdas yang dapat menanggapi pertanyaan bernuansa dan belajar dari setiap interaksi untuk membuat tanggapan yang lebih sesuai di lain waktu. AI chatbots telah dikembangkan untuk membantu pengguna manusia di berbagai platform seperti chat support otomatis atau asisten virtual.

Tantangan Untuk AI Chatbot Anda

Di dunia saat ini, komputer bukan hanya mesin yang diandalkan karena perhitungannya. Saat ini perlu mesin interaktif dan cerdas yang dapat digunakan oleh semua manusia. Untuk ini, komputer harus dapat memahami ucapan manusia dan perbedaannya.

Teknologi NLP telah memungkinkan mesin untuk secara cerdas menguraikan teks manusia dan benar-benar meresponsnya juga. Namun, komunikasi antar manusia bukanlah urusan sederhana. Ada banyak dialek nada dan kata-kata yang rumit yang membuat sulit untuk membuat chatbot atau asisten virtual yang sempurna yang dapat memahami dan menanggapi setiap manusia.

Untuk mengatasi masalah kekacauan ucapan, pengembang harus menghadapi beberapa rintangan utama yang perlu dieksplorasi untuk terus meningkatkan chatbot ini. Untuk memahami rintangan atau masalah ini, kita perlu memahami cara kerja NLP untuk mengubah ucapan manusia menjadi sesuatu yang dipahami oleh algoritma atau AI. Berikut daftar tantangan yang dialami chatbot setiap kali pengguna mencoba berinteraksi dengannya:

  1. Sinonim, homonim, kata gaul
  2. Salah eja
  3. Singkatan
  4. Aturan tanda baca yang rumit
  5. Perbedaan aksen, dialek dan ucapan

Bagi otak manusia, semua ini tampak sangat sederhana karena kita telah tumbuh dan berkembang dengan adanya semua modulasi dan aturan bicara ini. Namun, proses melatih chatbot AI mirip dengan manusia yang mencoba mempelajari bahasa yang sama sekali baru dari awal.

Arti berbeda yang ditandai dengan intonasi, konteks, atau modulasi suara sulit untuk diproses oleh mesin atau algoritma dan kemudian menanggapinya. Teknologi NLP terus berkembang untuk menciptakan teknologi terbaik guna membantu mesin memahami perbedaan dan nuansa ini dengan lebih baik.

Membuat AI Chatbot di Python

Pertama, kita perlu menginstal library yang diperlukan untuk membangun AI Chatbot. Kita akan mulai dengan menginstall beberapa library yaitu sebagai berikut :

# To be able to convert text to Speech
! pip install SpeechRecognition  #(3.8.1)
#To convey the Speech to text and also speak it out
!pip install gTTS  #(2.2.3)
# To install our language model
!pip install transformers  #(4.11.3)
!pip install tensorflow #(2.6.0, or pytorch)

Selanjutnya kita import library numpy.

import numpy as np

Kita akan mulai dengan membuat class kosong yang akan kita buat langkah demi langkah. Untuk membangun chatbot, kita perlu menjalankan keseluruhan skrip. Untuk nama botn yang kita gunakan adalah “Dev”

# Beginning of the AI
class ChatBot():
    def __init__(self, name):
        print("----- starting up", name, "-----")
        self.name = name
# Execute the AI
if __name__ == "__main__":
    ai = ChatBot(name="Dev")

Apa itu Speech Recognition?

NLP atau Natural Language Processing memiliki sejumlah subbidang karena percakapan dan ucapan sulit untuk ditafsirkan dan ditanggapi oleh komputer. Salah satu subbidang NLP tersebut adalah Speech Recognition.

Speech Recognition bekerja dengan metode dan teknologi untuk memungkinkan pengenalan dan penerjemahan bahasa lisan manusia menjadi sesuatu yang dapat dipahami dan ditanggapi oleh komputer atau AI. Untuk komputer, memahami angka lebih mudah daripada memahami kata dan ucapan.

Ketika beberapa sistem pengenalan ucapan pertama dibuat, IBM Shoebox adalah yang pertama mendapatkan kesuksesan yang layak dengan memahami dan menanggapi beberapa kata bahasa Inggris terpilih. Saat ini, kami memiliki sejumlah contoh sukses yang memahami banyak sekali bahasa dan merespons dalam dialek dan bahasa yang benar saat manusia berinteraksi dengannya.

Sebagian besar keberhasilan ini adalah melalui pustaka SpeechRecognition. Untuk menggunakan Google API populer, kita akan menggunakan kode berikut. Paste code berikut dibawah def __init__().

import speech_recognition as sr

def speech_to_text(self):
    recognizer = sr.Recognizer()
    with sr.Microphone() as mic:
         print("listening...")
         audio = recognizer.listen(mic)
    try:
         self.text = recognizer.recognize_google(audio)
         print("me --> ", self.text)
    except:
         print("me -->  ERROR")

Note

Tugas pertama yang harus dikerjakan oleh chatbot kita adalah konversi ucapan ke teks. Pada dasarnya, ini melibatkan pengubahan sinyal suara atau audio menjadi data teks. Singkatnya, chatbot benar-benar ‘mendengarkan’ ucapan Anda dan menyusun file teks yang berisi semua yang dapat diuraikan dari ucapan Anda. Anda dapat menguji kode dengan menjalankannya dan mencoba mengatakan sesuatu dengan lantang. Seharusnya secara optimal menangkap sinyal audio Anda dan mengubahnya menjadi teks.

# Execute the AI
if __name__ == "__main__":
     ai = ChatBot(name="Dev")
     while True:
         ai.speech_to_text()

Selanjutnya, AI kita harus dapat merespons sinyal audio yang Anda berikan padanya. Sederhananya, chatbot kita telah menerima masukan. Sekarang, ia harus memprosesnya dan menghasilkan respons yang sesuai dan mampu memberikan keluaran atau respons terhadap interaksi ucapan manusia.

Untuk mengikuti, tambahkan fungsi berikut seperti yang ditunjukkan di bawah ini. Metode ini memastikan bahwa chatbot akan diaktifkan dengan menyebutkan namanya. Saat Anda mengatakan “Hai Dev” atau “Halo Dev”, bot akan menjadi aktif.

def wake_up(self, text):
    return True if self.name in text.lower() else False

Sebagai isyarat, kita memberi chatbot kemampuan untuk mengenali namanya dan menggunakannya sebagai penanda untuk menangkap ucapan berikut dan menanggapinya dengan sesuai. Ini dilakukan untuk memastikan bahwa chatbot tidak menanggapi semua yang dikatakan manusia dalam jangkauan ‘pendengarannya’.

Dengan kata lain, Anda tidak ingin chatbot Anda selalu mendengarkan dan mengambil bagian dalam setiap percakapan. Oleh karena itu, kita akan membuat fungsi yang memungkinkan chatbot mengenali namanya dan menanggapi setiap ucapan yang mengikuti setelah namanya dipanggil.

Setelah chatbot mendengar namanya, ia akan merumuskan respons yang sesuai dan membalasnya. Untuk ini, chatbot juga memerlukan modul text-to-speech. Di sini, kita akan menggunakan perpustakaan GTTS atau Google Text to Speech untuk menyimpan file mp3 pada sistem file yang dapat diputar ulang dengan mudah. Fungsionalitas berikut perlu ditambahkan ke class kita agar bot dapat merespons kembali.

from gtts import gTTS
import os
@staticmethod
def text_to_speech(text):
    print("AI --> ", text)
    speaker = gTTS(text=text, lang="en", slow=False)
    speaker.save("res.mp3")
    os.system("start res.mp3")  #if you have a macbook->afplay or for windows use->start
    os.remove("res.mp3")

Tambahkan code berikut untuk memanggil fungsi text_to_speech().

#Those two functions can be used like this
# Execute the AI
if __name__ == "__main__":
     ai = ChatBot(name="Dev")
     while True:
         ai.speech_to_text()
         ## wake up
         if ai.wake_up(ai.text) is True:
             res = "Hello I am Dev the AI, what can I do for you?"
         ai.text_to_speech(res)

Selanjutnya, kita dapat mempertimbangkan untuk memutakhirkan chatbot kami agar melakukan perintah sederhana seperti beberapa asisten virtual yang membantu Anda melakukannya. Contoh dari tugas semacam itu adalah melengkapi chatbot agar dapat menjawab dengan benar setiap kali pengguna menanyakan waktu saat ini. Untuk menambahkan fungsi ini ke class chatbot, paste kode yang diberikan di bawah ini:

import datetime
@staticmethod
def action_time():
    return datetime.datetime.now().time().strftime('%H:%M')
#and run the script after adding the above function to the AI class

Tambahkan code berikut untuk memanggil fungsi action_time().

# Run the AI
if __name__ == "__main__":
ai = ChatBot(name="Dev")
while True:
         ai.speech_to_text()
         ## waking up
         if ai.wake_up(ai.text) is True:
             res = "Hello I am Dev the AI, what can I do for you?"
         ## do any action
         elif "time" in ai.text:
            res = ai.action_time()
         ## respond politely
         elif any(i in ai.text for i in ["thank","thanks"]):
            res = np.random.choice(
                  ["you're welcome!","anytime!",
                   "no problem!","cool!",
                   "I'm here if you need me!","peace out!"])
         ai.text_to_speech(res)

Setelah semua fungsi yang telah kita tambahkan ke chatbot, kini ia dapat menggunakan teknik speech recognition untuk menanggapi isyarat ucapan dan membalas dengan tanggapan yang telah ditentukan sebelumnya.

Namun, chatbot kita masih belum terlalu cerdas dalam hal menanggapi apa pun yang tidak ditentukan atau diatur sebelumnya. Sekarang saatnya menggabungkan kecerdasan buatan ke dalam chatbot untuk membuat respons cerdas terhadap interaksi ucapan manusia dengan chatbot atau model ML yang dilatih menggunakan NLP atau Natural Language Processing.

Model Bahasa untuk AI Chatbot

Di sini, kita akan menggunakan Model Bahasa Transformer untuk chatbot. Model ini disajikan oleh Google dan menggantikan traditional sequence to sequence models dengan attention mechanisms. Model bahasa ini secara dinamis memahami ucapan dan nadanya.

Oleh karena itu, model dengan mudah melakukan tugas NLP. Beberapa model bahasa yang paling populer digunakan adalah BERT Google dan GPT OpenAI. Model ini memiliki fungsi multidisiplin dan miliaran parameter yang membantu meningkatkan chatbot dan membuatnya benar-benar cerdas.

Di sinilah chatbot menjadi cerdas dan bukan hanya bot skrip yang akan siap menangani tes apa pun yang diberikan kepada mereka. Paket utama yang akan kita gunakan dalam kode kita di sini adalah paket Transformers yang disediakan oleh HuggingFace.

Tool ini populer di kalangan pengembang karena menyediakan tool yang telah dilatih sebelumnya dan siap bekerja dengan berbagai tugas NLP. Dalam kode di bawah ini, kita secara khusus menggunakan DialogGPT yang dilatih dan dibuat oleh Microsoft berdasarkan jutaan percakapan dan obrolan berkelanjutan di platform Reddit dalam interval waktu tertentu.

import transformers
nlp = transformers.pipeline("conversational", 
                            model="microsoft/DialoGPT-medium")
#Time to try it out
input_text = "hello!"
nlp(transformers.Conversation(input_text), pad_token_id=50256)

Pengingat: Jangan lupa untuk memberikan pad_token_id karena versi perpustakaan saat ini yang kami gunakan dalam kode kami memunculkan peringatan saat tidak diberi parameter pad_token_id. Apa yang dapat Anda lakukan untuk menghindari peringatan ini adalah dengan menambahkan ini sebagai parameter.

nlp(transformers.Conversation(input_text), pad_token_id=50256)

Anda akan mendapatkan seluruh percakapan sebagai pipeline output dan karenanya Anda hanya perlu mengekstrak respons dari chatbot di sini.

chat = nlp(transformers.Conversation(ai.text), pad_token_id=50256)
res = str(chat)
res = res[res.find("bot >> ")+6:].strip()

Terakhir, kita siap menjalankan Chatbot dan melakukan percakapan yang menyenangkan dengan AI Chatbot yang telah kita buat dan berikut full code-nya kode:

# for speech-to-text
import speech_recognition as sr
# for text-to-speech
from gtts import gTTS
# for language model
import transformers
import os
import time
# for data
import os
import datetime
import numpy as np
# Building the AI
class ChatBot():
    def __init__(self, name):
        print("----- Starting up", name, "-----")
        self.name = name
    def speech_to_text(self):
        recognizer = sr.Recognizer()
        with sr.Microphone() as mic:
            print("Listening...")
            audio = recognizer.listen(mic)
            self.text="ERROR"
        try:
            self.text = recognizer.recognize_google(audio)
            print("Me  --> ", self.text)
        except:
            print("Me  -->  ERROR")
    @staticmethod
    def text_to_speech(text):
        print("Dev --> ", text)
        speaker = gTTS(text=text, lang="en", slow=False)
        speaker.save("res.mp3")
        statbuf = os.stat("res.mp3")
        mbytes = statbuf.st_size / 1024
        duration = mbytes / 200
        os.system('start res.mp3')  #if you are using mac->afplay or else for windows->start
        # os.system("close res.mp3")
        time.sleep(int(50*duration))
        os.remove("res.mp3")
    def wake_up(self, text):
        return True if self.name in text.lower() else False
    @staticmethod
    def action_time():
        return datetime.datetime.now().time().strftime('%H:%M')
# Running the AI
if __name__ == "__main__":
    ai = ChatBot(name="dev")
    nlp = transformers.pipeline("conversational", model="microsoft/DialoGPT-medium")
    os.environ["TOKENIZERS_PARALLELISM"] = "true"
    ex=True
    while ex:
        ai.speech_to_text()
        ## wake up
        if ai.wake_up(ai.text) is True:
            res = "Hello I am Dave the AI, what can I do for you?"
        ## action time
        elif "time" in ai.text:
            res = ai.action_time()
        ## respond politely
        elif any(i in ai.text for i in ["thank","thanks"]):
            res = np.random.choice(["you're welcome!","anytime!","no problem!","cool!","I'm here if you need me!","mention not"])
        elif any(i in ai.text for i in ["exit","close"]):
            res = np.random.choice(["Tata","Have a good day","Bye","Goodbye","Hope to meet soon","peace out!"])
            ex=False
        ## conversation
        else:   
            if ai.text=="ERROR":
                res="Sorry, come again?"
            else:
                chat = nlp(transformers.Conversation(ai.text), pad_token_id=50256)
                res = str(chat)
                res = res[res.find("bot >> ")+6:].strip()
        ai.text_to_speech(res)
    print("----- Closing down Dev -----")

Penutup

Dalam artikel ini, kami telah mendemonstrasikan tutorial langkah demi langkah yang dapat Anda manfaatkan untuk membuat Chatbot percakapan. Chatbot ini dapat ditingkatkan lebih lanjut untuk mendengarkan dan membalas seperti yang dilakukan manusia.

Kode yang disertakan di sini dapat digunakan untuk membuat chatbot dan proyek serupa. Sebagai kesimpulan, kami telah menggunakan tool Speech Recognition dan teknologi NLP untuk mencakup proses teks ke ucapan dan sebaliknya. Model bahasa Transformers terlatih juga digunakan untuk memberikan kecerdasan chatbot ini alih-alih membuat bot skrip.

Sekarang, Anda dapat mengikuti atau membuat modifikasi untuk membuat chatbot atau asisten virtual Anda sendiri untuk diintegrasikan ke dalam bisnis, proyek, atau fungsi dukungan aplikasi Anda.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top