
Pengarang: Chinmay Bhalerao
Awalnya diterbitkan di Towards AI the World’s Leading AI and Technology News and Media Company. Jika Anda sedang membangun produk atau layanan terkait AI, kami mengundang Anda untuk mempertimbangkan untuk menjadi sponsor AI. Di Towards AI, kami membantu menskalakan AI dan startup teknologi. Biarkan kami membantu Anda melepaskan teknologi Anda kepada massa.
Chatbot dan NLP dalam bentuk paling sederhana
Foto oleh Alex Knight di Unsplash
Pemrosesan bahasa alami melibatkan pembuatan kalimat dan frasa yang bermakna menggunakan Bahasa Alami. Realisasi Teks, Perencanaan Kalimat, dan Perencanaan Teks semuanya terlibat. Merencanakan sebuah teks termasuk menempatkan informasi terkait dalam basis pengetahuan. Merencanakan kalimat melibatkan pemilihan kata-kata yang diperlukan, menciptakan frasa yang bermakna, dan menetapkan suasana kalimat. Proses menerjemahkan rencana kalimat menjadi teks disebut realisasi teks. Chatbot adalah program komputer yang mencoba melakukan percakapan dengan pengguna manusia dalam bahasa alami. Chatbot adalah salah satu aplikasi terbesar dari Natural Language Processing [NLP].NLP dibagi menjadi tiga bagian dasar:
Generasi bahasa alami (NLG) Pemahaman bahasa alami (NLU) Interaksi bahasa alami (NLI)
Tujuan dari blog ini adalah untuk membuat chatbot yang bisa diterapkan dengan sangat sedikit baris kode. Mari kita mulai membangun.
Mengimpor perpustakaan:
Saya berasumsi Anda sudah menginstal juru bahasa python. Mengimpor pustaka dasar seperti panda dan NumPy untuk penanganan data dan manipulasi data. Lalu saya menggunakan nltk [Natural language tool kit] untuk operasi data kata dan kalimat.
impor panda sebagai pd
impor matplotlib.pyplot sebagai plt
impor numpy sebagai np
impor nltk
impor acak
impor string
peringatan impor
warnings.filterwarnings(‘abaikan’)
Ayo unduh paket ‘punkt’. Ini membuat daftar kalimat dari teks dengan memanfaatkan algoritma tanpa pengawasan untuk menemukan kata-kata yang memulai kalimat, kolokasi, dan singkatan.
nltk.download(‘titik’,tenang = Benar)
Kumpulan data untuk chatbot:
Saya membuat chatbot ini sepenuhnya didedikasikan untuk Asma. Karena mungkin ada banyak keraguan tentang Asma pada orang dan bot khusus adalah cara terbaik untuk menyelesaikan keraguan. Ini dapat diperlakukan sebagai bot medis.
Untuk chatbot khusus ini, dataset adalah file teks yang mencakup semua informasi yang berkaitan dengan Asma. Kita dapat menggunakan scrapping web di sini secara langsung tetapi demi kesederhanaan, saya sudah mengambil data tentang asma dari situs web pemerintah dan tepercaya yang disebutkan di bawah ini:
Mayo Clinic Organisasi Kesehatan Dunia [WHO]
Pusat pengendalian dan pencegahan penyakit [CDCP]
Meskipun saya hanya mengambil 3 website tetapi Anda dapat mengambil sebanyak mungkin untuk membuat prediksi yang berhubungan dengan kata-kata yang lebih akurat. Setelah scrapping, data akan disimpan dalam satu file teks dan disediakan untuk diproses lebih lanjut.
dengan open(“Asthma_data_1.txt”,’r’,encoding = ‘utf8’) sebagai f:
Data = f.baca()
cetak (Data)
Karena prapemrosesan sangat penting bagi kumpulan data untuk membuatnya lebih murni dan canggih untuk pemrosesan model untuk hasil yang lebih baik. Pemrosesan bahasa alami memungkinkan kita untuk melakukan tokenization dan lemmatization.
Tokenization: Tokenisasi kata-kata di setiap kalimat ke dalam kata dasar mereka sehingga mereka akan bekerja sebagai potongan untuk diproses.
Lemmatization: Lemmatization bekerja sama dengan tokenization, tetapi perbedaannya adalah mengkonversi menjadi kata yang memiliki arti. Ini berarti mengubahnya menjadi potongan-potongan yang lebih kecil dan kemudian menjadikannya kata-kata yang berguna atau dapat dimengerti. Jadi kami melakukan tokenisasi di sini. Kita bisa langsung mengimpor sent_tokenize dari nltk.
# Tokenisasi data
dari nltk impor sent_tokenize
Data = dikirim_tokenize(Data)
Data
Ini adalah bagaimana data Anda akan di-token [Image by Author]
Sekarang saatnya untuk mengerjakan percakapan awal. Kami akan menetapkan beberapa kata yang kami gunakan dalam kehidupan sehari-hari untuk memulai percakapan. Ini seperti salam. Ada banyak ruang lingkup untuk memperbaiki kode berikut, seperti menambahkan sebanyak mungkin salam, kemudian membuat salam dalam huruf kecil untuk memudahkan pemrosesan. tapi untuk saat ini, saya hanya menugaskan beberapa kata untuk menunjukkan demo.
# Fungsi ini menghasilkan respons salam
Korpus = Data
def salam_respons(Teks):
# Menurunkan teks
Teks = Teks.bawah()
# Respon salam bot
bot_greeing = [‘Namaskar’,’Hi’,’Hey there’,’Namaskar’,’Hello’,]
# salam pengguna
salam_pengguna = [‘hi’,’hey’,’hello’,’ola’,’greetings’,’wassup’,’namaskar’]
untuk kata di Text.split():
jika kata di user_greetings:
kembalikan random.choice(bot_greeings)
Mendefinisikan fungsi untuk pengurutan indeks
def index_sort(daftar_var):
panjang = len(daftar_var)
list_index = daftar(rentang(0,panjang))
x = daftar_var
untuk saya dalam rentang (panjang):
untuk j dalam rentang (panjang):
jika x[list_index[i]]> x[list_index[j]]:
#Menukar
Temp = daftar_indeks[i]
daftar_indeks[i] = daftar_indeks[j]
daftar_indeks[j] = Suhu
kembali daftar_indeks
Sekarang kita mencapai tahap akhir pembuatan chatbot. Ini terutama untuk memetakan kesamaan antara kata yang diminta pengguna dan kata yang paling mirip dari database. Kami menggunakan persamaan kosinus di sini.
#Buat respons bot
dari sklearn.feature_extraction.text impor CountVectorizer,TfidfVectorizer
dari sklearn.metrics.pairwise import cosine_similarity def bot_response(user_input):
user_input=pengguna_input.lower()
Corpus.append(masukan_pengguna)
bot_respons=”
cm=TfidfVectorizer().fit_transform(Corpus)
kesamaan_skor=cosinus_kemiripan(cm[-1],cm)
similarity_scores_list=kemiripan_scores.flatten()
indeks=index_sort(daftar_nilai_kesamaan)
indeks=indeks[1:]
respon_flag=0
j = 0
untuk saya dalam rentang(len(indeks)):
jika kesamaan_skor_daftar[index[i]]>0.0:
bot_response=bot_response+”+ Corpus[index[i+1]]+ ‘ ‘ + Korpus[index[i+2]]+ ‘ ‘ + Korpus[index[i+3]]
response_flag=1
d=d+1
jika j > 2:
merusak
jika response_flag==0:
bot_response=bot_response+”+”Maaf saya tidak mengerti”
Corpus.hapus(masukan_pengguna)
kembalikan bot_response
Interaksi:
Sekarang potongan kode terakhir adalah tempat Anda dapat memulai obrolan dengan chatbot. Anda dapat menulis pernyataan dasar sebelum mengobrol untuk mengetahui pengguna apa yang dilakukan chatbot ini.
#Mulai obrolan dengan Chatbot
print(“Doc Bot: Hai….!!!, saya siap membantu anda.”)
print(“Singkatnya saya Dokter, saya akan bercerita tentang keraguan Anda tentang ‘Asma’.”)
print(“CATATAN: Saran saya hanya hasil pencarian google dan hanya untuk tujuan pengetahuan. Mohon mencari perhatian medis dan Obat dalam kasus Asma”)
exit_list=[‘exit’,’bye’,’see you later’,’quit’,’break’,’no’,’thanks’,’thanks alot’]
sementara (Benar):
user_input=input(“Anda : “)
jika user_input.lower() di exit_list:
print(“Dok Bot: Oke, Terima Kasih, Sampai jumpa…”)
print(“Tetap Di Rumah, Tetap Aman!!!”)
merusak
elif user_input.lower() di [‘ok’,’hmm’,’its ok’]:
print(‘Doc Bot: Bisakah saya memberi tahu Anda lebih banyak tentang itu’)
elif user_input.lower() di [‘yes’,’ok’]:
print(‘Bot Dokumen:’+bot_response(masukan_pengguna))
kalau tidak:
if greeting_responce(user_input) != Tidak ada:
print(‘Bot Dokumen:’+ ucapan_respons(masukan_pengguna))
kalau tidak:
print(“Bot Dokumen:”+bot_response(masukan_pengguna))
Hasil obrolan [Image by Author]
Ada berbagai macam kata yang bisa ditemui dan tidak diketahui oleh Bot. Di sinilah data memainkan peran penting. Bot medis diuji dengan sangat drastis sebelum produksi karena memberikan informasi yang sangat berharga yang harus diverifikasi oleh orang yang tepat. Strategi selanjutnya bisa menggunakan alat GUI atau situs web hosting untuk meng-host bot ini. Itu sepenuhnya pilihan pengguna. Jadi dengan baris kode minimal, kami membuat chatbot sederhana.
Bagaimana cara menguji bot?
Cara yang saya ikuti untuk pengujian adalah membuat formulir google dan mengirimkannya ke semua orang terdekat/rekan kerja/teman Anda. Formulir akan menanyakan keraguan mereka tentang Asma dan pertanyaan teraneh dan teraneh yang dapat Anda uji di bot. Setelah jawaban, Anda dapat memahami apakah lebih banyak data diperlukan atau tidak! Dan itu akan menjadi pengujian kehidupan nyata untuk bot.
Jika Anda menemukan ini berwawasan
Jika Anda menemukan artikel ini berwawasan luas, ikuti saya di Linkedin dan medium. Anda juga dapat berlangganan untuk mendapatkan pemberitahuan ketika saya menerbitkan artikel. Ayo buat komunitas! Terima kasih atas dukunganmu!
Chatbot Dengan Jumlah Baris Kode Paling Sedikit awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.
Diterbitkan melalui Menuju AI