Mundarija[Yashirish][Show]
Aloqa sohasida matn va vizual tasvirlar foydasiga ovozli qo‘ng‘iroqlar bosqichma-bosqich bekor qilinmoqda. Facebook so'roviga ko'ra, xaridorlarning yarmidan ko'pi o'zlari gaplasha oladigan kompaniyadan xarid qilishni afzal ko'rishadi. Suhbat muloqotning yangi ijtimoiy jihatdan maqbul usuliga aylandi.
Bu korxonalarga o'z mijozlari bilan istalgan vaqtda va istalgan joydan muloqot qilish imkonini beradi. Chatbotlar foydalanish qulayligi va kutish vaqtlarining qisqarishi tufayli kompaniyalar va mijozlar orasida tobora ommalashib bormoqda.
Chatbotlar yoki avtomatlashtirilgan suhbat dasturlari mijozlarga matnga asoslangan interfeys orqali xizmatlarga kirishning yanada moslashtirilgan usulini taqdim etadi. Eng yangi sun'iy intellektga asoslangan chatbotlar ma'lum bir muhitda shaxs (yoki boshqa bot, ishga tushirish) tomonidan qilingan so'rovni (savol, buyruq, buyurtma va h.k.) tanib olishi va tegishli javob berishi (javob, harakat va h.k.).
Ushbu postda biz chatbotlar nima ekanligini, ularning afzalliklari, foydalanish holatlari va o'zingizni qanday yaratishni ko'rib chiqamiz. chuqur o'rganish Python-dagi chatbot, boshqa narsalar qatorida.
Boshlaylik.
Xo'sh, chatbotlar nima?
Chatbot ko'pincha inson va mashina o'zaro ta'sirining eng ilg'or va istiqbolli shakllaridan biri deb ataladi. Ushbu raqamli yordamchilar odamlar va xizmatlar o'rtasidagi o'zaro munosabatlarni tartibga solish orqali mijozlar tajribasini yaxshilaydi.
Shu bilan birga, ular korxonalarga an'anaviy qo'llab-quvvatlash xarajatlarini kamaytirishi mumkin bo'lgan samaradorlik uchun mijozlar bilan bog'lanish jarayonini optimallashtirish uchun yangi imkoniyatlarni taqdim etadi.
Xulosa qilib aytganda, bu sun'iy intellektga asoslangan dasturiy ta'minot bo'lib, u odamlar bilan ularning tabiiy tillarida muloqot qilish uchun mo'ljallangan. Ushbu chatbotlar ko'pincha audio yoki yozma usullar orqali o'zaro ta'sir qiladi va ular odamlar bilan odamga o'xshash tarzda bog'lanish uchun inson tillarini osongina taqlid qilishlari mumkin.
Chatbotlar foydalanuvchilar bilan o'zaro munosabatlaridan o'rganadilar, vaqt o'tishi bilan yanada real va samaraliroq bo'ladi. Ular sarf-xarajatlarga ruxsat berish, iste'molchilar bilan onlayn muloqot qilish va yetakchilarni yaratish kabi keng ko'lamli biznes faoliyati bilan shug'ullanishi mumkin.
Python yordamida o'zingizning chuqur o'rganish chatbotingizni yaratish
Sohada juda ko'p turli xil chatbotlar mavjud kompyuterni o'rganish va AI. Ba'zi chatbotlar virtual yordamchilar, boshqalari shunchaki suhbatlashish uchun, boshqalari esa mijozlarga xizmat ko'rsatish agentlari.
Ehtimol, siz so'rovlarga javob berish uchun korxonalar tomonidan ishlaydiganlarning ayrimlarini ko'rgansiz. Tez-tez so'raladigan so'rovlarga javob berish uchun biz ushbu qo'llanmada kichik chatbot yaratamiz.
1. Paketlarni o'rnatish
Bizning birinchi qadamimiz quyidagi paketlarni o'rnatishdir.
2. Trening ma'lumotlari
Endi chatbotimizga qanday ma'lumot berishimiz kerakligini aniqlash vaqti keldi. Bizga katta hajmdagi maʼlumotlar toʻplamini yuklab olishning hojati yoʻq, chunki bu oddiy chatbot.
Biz faqat o'zimiz yaratgan ma'lumotlardan foydalanamiz. Darsni samarali davom ettirish uchun siz quyida ko'rsatilgan formatdagi .JSON faylini yaratishingiz kerak bo'ladi. Mening faylim "intents.json" deb nomlangan.
JSON fayli foydalanuvchi kiritishi mumkin boʻlgan xabarlar toʻplamini yaratish va tegishli javoblar toʻplamiga moslashtirish uchun ishlatiladi. Fayldagi har bir lug'atda har bir xabar qaysi guruhga tegishli ekanligini aniqlovchi teg mavjud.
Biz ushbu ma'lumotlardan a neyron tarmoq so'z birikmasini faylimizdagi teglardan biri sifatida tasniflash uchun.
Keyin biz o'sha guruhlardan javob olishimiz va uni foydalanuvchiga taqdim etishimiz mumkin. Agar siz uni qo'shimcha teglar, javoblar va naqshlar bilan taklif qilsangiz, chatbot yaxshiroq va murakkabroq bo'ladi.
3. JSON ma'lumotlarini yuklash
Biz .json maʼlumotlarimizni yuklash va baʼzi modullarni import qilishdan boshlaymiz. your.json faylini siz bilan bir xil katalogda yig'ing Python skripti. Bizning .json maʼlumotlarimiz endi maʼlumotlar oʻzgaruvchisida saqlanadi.
4. Ma'lumotlarni chiqarish
Endi JSON faylimizdan kerakli ma'lumotlarni olish vaqti keldi. Barcha naqshlar, shuningdek, ular tegishli bo'lgan sinf/teg talab qilinadi.
Bizga naqshlarimizdagi barcha noyob atamalar roʻyxati ham kerak boʻladi (sabablarga koʻra keyinroq tushuntiramiz), shuning uchun keling, ushbu qiymatlarni kuzatib borish uchun boʻsh roʻyxatlar yarataylik.
Endi biz JSON maʼlumotlarimizni aylanib chiqamiz va kerakli maʼlumotlarni olamiz. Biz ularni satr sifatida ishlatish o'rniga, har bir naqshni so'zlar ro'yxatiga aylantirish uchun nltk.word tokenizerdan foydalanamiz.
Keyin, bizning docs_x roʻyxatida biz har bir naqshni tegishli teg bilan birga docs_y roʻyxatiga qoʻshamiz.
5. So‘z o‘zagi
So'zning o'zagini topish o'zak deyiladi. Masalan, "bu" so'zining o'zagi "bu" bo'lishi mumkin, "bo'lyapti" so'zining o'zagi esa "bo'ladi".
Biz modelimiz lug'atini qisqartirish va umumiy jumlalar nimani anglatishini aniqlash uchun ushbu so'z birikmasidan foydalanamiz. Ushbu kod shunchaki ma'lumotlarni tayyorlashning keyingi bosqichida qo'llaniladigan so'z birikmalarining noyob ro'yxatini yaratadi.
6. So'zlar xaltasi
Maʼlumotlarimizni import qilib, soʻz birikmalarini yaratganimizdan soʻng bir nechta soʻzlar haqida gapirish vaqti keldi. Neyron tarmoqlar va mashinani o'rganish algoritmlari, barchamiz bilganimizdek, raqamli kiritishni talab qiladi. Shunday qilib, bizning qatorlar ro'yxati uni qisqartirmaydi. Bizning jumlalarimizda raqamlarni ifodalash mexanizmi kerak, bu erda so'zlar to'plami kiradi.
Har bir ibora bizning modelimiz lug'atidagi atamalar soni uzunligi ro'yxati bilan ifodalanadi. Bizning lug'atimizdagi har bir so'z ro'yxatdagi joy bilan ifodalanadi. Agar ro'yxatdagi pozitsiya 1 bo'lsa, so'z bizning bayonotimizda paydo bo'ladi; agar u 0 bo'lsa, so'z bizning gapimizda ko'rinmaydi.
Biz uni so‘zlar xaltasi deb ataymiz, chunki biz iborada so‘zlarning qanday ketma-ket kelishini bilmaymiz; Biz bilgan narsa shundaki, ular bizning modelimiz lug'atida mavjud.
Kiritilgan ma'lumotni tizimlashtirishdan tashqari, biz neyron tarmoq tushunadigan tarzda chiqishimizni ham formatlashimiz kerak. Biz maʼlumotlar toʻplamimizdagi yorliqlar/teglar sonining uzunligi boʻlgan, soʻzlar toʻplamiga oʻxshash chiqish roʻyxatlarini tuzamiz. Roʻyxatdagi har bir joy oʻziga xos yorliq/tegni ifodalaydi va bu joylardan birida 1 qaysi yorliq/yorliq koʻrsatilayotganligini bildiradi.
Nihoyat, biz NumPy massivlaridan o'quv ma'lumotlarimiz va natijalarimizni saqlash uchun foydalanamiz.
7. Modelni ishlab chiqish
Biz barcha maʼlumotlarimizni qayta ishlaganimizdan keyin modelni yaratish va oʻqitishni boshlashga tayyormiz. Maqsadlarimiz uchun ikkita yashirin qatlamli juda oddiy neyron tarmog'idan foydalanamiz.
Bizning tarmog'imizning maqsadi so'zlar to'plamini ko'rib chiqish va ularni sinfga belgilash (JSON faylidagi teglarimizdan biri). Biz modelimiz arxitekturasini yaratishdan boshlaymiz. Yaxshiroq modelni topish uchun ba'zi raqamlar bilan o'ynashingiz mumkinligini yodda tuting! mashina ta'lim asosan sinov va xatoga asoslangan.
8. Model tayyorlash va saqlash
Endi biz uni o'rnatganimizdan so'ng, modelimizni ma'lumotlarimizga o'rgatish vaqti keldi! Bunga maʼlumotlarimizni modelga moslashtirish orqali erishamiz. Biz taqdim etayotgan davrlar soni - bu o'quv jarayonida modelning bir xil ma'lumotlarga ta'sir qilish soni.
Modelni o‘qitishni tugatganimizdan so‘ng uni fayl modeliga saqlashimiz mumkin. tflearn - bu boshqa skriptlarda ishlatilishi mumkin bo'lgan skript.
9. Chatbotdan foydalanish
Endi siz botingiz bilan suhbatni boshlashingiz mumkin.
Chatbotning afzalliklari
- Botlar yiliga 365 kun, kuniga 24 soat, to'lovsiz ishlashi kutilayotganligi sababli, mavjudlik va reaktsiya tezligini oshiradi.
- Bu botlar katta maʼlumotlarning uchta asosiy V: hajmi, tezligi va xilma-xilligi bilan kurashish uchun mukammal vositadir.
- Chatbotlar - bu kompaniya iste'molchilari haqida ma'lumot olish va tushunish uchun ishlatilishi mumkin bo'lgan dasturiy ta'minot.
- U yuqori afzalliklarga ega bo'lganidan keyin arzon texnik xarajatlarga ega bo'lgan yuqori quvvatga ega.
- Chatbot ilovalari saqlanishi va tahlil va prognozlar uchun ishlatilishi mumkin bo'lgan ma'lumotlarni yaratadi.
Foydalanish holati
- Mijozlarning so'rovlarini hal qilish
- Tez-tez beriladigan savollarga javob berish
- Mijozlarni qo'llab-quvvatlash jamoasiga tayinlash
- Mijozlarning fikr-mulohazalarini yig'ish
- Yangi takliflarni tavsiya qilish
- So'zlashuv savdosi bilan xarid qiling
- IT yordam xizmati
- Turar joyni bron qilish
- Pul o'tkazmasi
Xulosa
Chatbotlar, boshqa sunʼiy intellekt texnologiyalari singari, insonning koʻnikmalarini oshirish va odamlarga koʻproq vaqtni taktik vazifalarga emas, strategik vazifalarga sarflashga imkon berib, ularni yanada ijodiy va tasavvurga ega boʻlishga ozod qilish uchun ishlatiladi.
Korxonalar, xodimlar va iste'molchilar tez tavsiyalar va prognozlar kabi kengaytirilgan chatbot xususiyatlaridan, shuningdek, suhbat davomida yuqori aniqlikdagi video konferentsiyaga oson kirish imkoniyatidan, AI va AI rivojlanishi bilan birlashganda foyda olishlari mumkin. 5G texnologiyasi.
Ushbu va boshqa imkoniyatlar hali ham o'rganilmoqda, ammo internetga ulanish, AI, NLP va mashinani o'rganish rivojlanishi bilan ular yanada kengroq bo'ladi.
Chwoo
Salom,
Ushbu dastur uchun rahmat.
Menda savol bor.
"so'zlar_to'plami" aniqlanmagan. Men bu xatoni tushunolmayapman.
Bu xatoni qanday hal qilishim mumkinligini ayta olasizmi?
Ushbu dastur uchun rahmat!! Kuningiz xayrli bo'lsin
Jay
Iltimos, chatbot bo'limidan foydalanishdan oldin funksiya qo'shing:
///////////////////////////////////////////////////////// ///////////////////////////
def to'p_so'z(lar, so'zlar):
sumka = [diapazondagi _ uchun 0(len(so'zlar))]
s_words = nltk.word_tokenize(lar)
s_words = [s_words ichidagi soʻz uchun stemmer.stem(word.lower())]
for se in s_words:
enumerate(so'zlar)dagi i, w uchun:
agar w == se:
sumka [i] = 1
numpy.array(sumka)ni qaytarish
// Bu sizning muammoingizni albatta hal qiladi. //
///////////////////////////////////////////////////////// /////////////////////////
Men siz bilan to'liq kodni baham ko'raman, shuning uchun siz uning aniq rasmini olasiz.
///////////////////////////////////////////////////////// /////////
import nltk
nltk.stem.lancaster import LancasterStemmer dan
stemmer = LancasterStemmer()
import numpy
import tflearn
import tenzor oqimi
import tasodifiy
json import qilish
import qilingan tuzlangan
fayl sifatida open("intents.json") bilan:
ma'lumotlar = json.load (fayl)
harakat qilib ko'ring:
open("data.pickle", "rb") bilan f:
so'zlar, teglar, trening, chiqish = pickle.load(f)
bundan tashqari:
so'zlar = []
teglar = []
docs_x = []
docs_y = []
maʼlumotlardagi niyat uchun[“niyatlar”]:
niyatdagi naqsh uchun["naqshlar"]:
wrds = nltk.word_tokenize(naqsh)
so'zlar.extend(wrds)
docs_x.append(wrds)
docs_y.append(niyat[“teg”])
agar niyat[“teg”] teglarda boʻlmasa:
labels.append(niyat[“teg”])
so'zlar = [stemmer.stem(w.lower()) uchun w so'zlarda agar w != “?”]
so'zlar = tartiblangan (ro'yxat (to'plam (so'zlar)))
teglar = tartiblangan (yorliqlar)
trening = []
chiqish = []
out_empty = [diapazondagi _ uchun 0(len(yorliqlar))]
x uchun doc enumerate(docs_x):
sumka = []
wrds = [hujjatdagi w uchun stemmer.stem(w.lower())]
so'zda w uchun:
wrd bo'lsa:
bag.append(1)
boshqa:
bag.append(0)
output_row = out_empty[:]
chiqish_qator[labels.index(docs_y[x])] = 1
trening.append(sumka)
output.append(chiqish_qator)
trening = numpy.array (trening)
chiqish = numpy.array (chiqish)
open("data.pickle", "wb") bilan f:
pickle.dump((so'zlar, teglar, trening, chiqish), f)
tensorflow.reset_default_graph()
net = tflearn.input_data(shakl=[Yo'q, len(trening[0])])
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, len(chiqish[0]), faollashtirish="softmax")
net = tflearn.regression (net)
model = tflearn.DNN (aniq)
harakat qilib ko'ring:
model.load (“model.tflearn”)
bundan tashqari:
model.fit(trening, chiqish, n_epoch=1500, batch_size=8, show_metric=True)
model.save (“model.tflearn”)
def to'p_so'z(lar, so'zlar):
sumka = [diapazondagi _ uchun 0(len(so'zlar))]
s_words = nltk.word_tokenize(lar)
s_words = [s_words ichidagi soʻz uchun stemmer.stem(word.lower())]
for se in s_words:
enumerate(so'zlar)dagi i, w uchun:
agar w == se:
sumka [i] = 1
numpy.array(sumka)ni qaytarish
def chat():
chop etish ("Bot bilan gaplashishni boshlang (to'xtatish uchun chiqishni yozing)!")
haqiqat esa:
inp = kiritish(“Siz:”)
agar inp.lower() == "chit":
tanaffus
natijalar = model.predict([so'zlar_to'plami(inp, so'zlar)])
natijalar_index = numpy.argmax (natijalar)
teg = teglar[results_index]
maʼlumotlardagi tg uchun[“niyatlar”]:
if tg['tag'] == teg:
javoblar = tg['javoblar']
chop etish (tasodifiy tanlov (javoblar))
chat()
///////////////////////////////////////////////////////// ///////////////
Rahmat,
Baxtli kodlash!
Lu
Salom,
Python-da chatbot yaratmoqchi bo'lgan taqdirda amalga oshirish jarayoni haqida fikr bera olasizmi, ammo ma'lumot Excelda so'rovnomadan olingan. Rahmat!