Sadržaj[Sakrij][Prikaži]
Glasovni pozivi se postepeno ukidaju u korist teksta i vizuala u sektoru komunikacija. Prema Facebook anketi, više od polovine kupaca radije kupuje od kompanije s kojom mogu razgovarati. Ćaskanje je postalo novi društveno prihvatljiv način komunikacije.
Omogućava preduzećima da komuniciraju sa svojim klijentima u bilo koje vrijeme i sa bilo koje lokacije. Chatbotovi sve više dobijaju na popularnosti među kompanijama i kupcima zbog njihove lakoće upotrebe i skraćenog vremena čekanja.
Chatbotovi ili automatizirani konverzacijski programi pružaju klijentima prilagođeniji način pristupa uslugama putem interfejsa zasnovanog na tekstu. Najnoviji chat botovi sa AI mogu prepoznati upit (pitanje, naredbu, naredbu, itd.) koji je postavila osoba (ili drugi bot, početak) u određenom okruženju i odgovoriti na odgovarajući način (odgovor, radnja, itd.).
U ovom postu ćemo proći kroz šta su chat botovi, njihove prednosti, slučajeve upotrebe i kako napraviti svoje duboko učenje chatbot u Pythonu, između ostalog.
Počnimo.
Dakle, šta su chatbotovi?
Chatbot se često naziva jednim od najnaprednijih i najperspektivnijih oblika interakcije čovjeka i mašine. Ovi digitalni asistenti poboljšavaju korisničko iskustvo pojednostavljujući interakciju između ljudi i usluga.
Istovremeno, oni pružaju preduzećima nove opcije za optimizaciju procesa kontakta sa klijentima radi efikasnosti, što može smanjiti uobičajene troškove podrške.
Ukratko, softver baziran na umjetnoj inteligenciji je namijenjen za komunikaciju s ljudima na njihovim prirodnim jezicima. Ovi chat botovi često komuniciraju putem audio ili pisanih tehnika i lako mogu oponašati ljudske jezike kako bi se povezali s ljudima na ljudski način.
Chatbotovi uče iz svojih interakcija s korisnicima, postajući s vremenom sve realističniji i efikasniji. Oni se mogu nositi sa širokim spektrom poslovnih aktivnosti, kao što su odobravanje potrošnje, interakcija s potrošačima na mreži i generiranje potencijalnih klijenata.
Kreiranje vlastitog chatbot za duboko učenje s Python-om
Postoji mnogo različitih vrsta chatbotova u oblasti mašinsko učenje i AI. Neki chat botovi su virtuelni asistenti, dok su drugi tu samo za razgovor, dok su drugi agenti za korisničku podršku.
Vjerovatno ste vidjeli neke od onih koji su zaposleni u preduzećima da odgovaraju na upite. Napravit ćemo malog chat bota u ovom vodiču da odgovori na često tražena pitanja.
1. Instaliranje paketa
Naš prvi korak je da instaliramo sljedeće pakete.
2. Podaci o obuci
Sada je vrijeme da shvatimo koju vrstu informacija trebamo dati našem chatbotu. Ne moramo preuzimati velike skupove podataka jer je ovo jednostavan chatbot.
Koristit ćemo samo informacije koje smo sami kreirali. Da biste efikasno pratili lekciju, moraćete da generišete .JSON datoteku istog formata kao što je prikazano ispod. Moj fajl se zove "intents.json."
JSON datoteka se koristi za kreiranje skupa poruka koje će korisnik vjerovatno unijeti i mapirati u skup relevantnih odgovora. Svaki rečnik u datoteci ima oznaku koja identifikuje kojoj grupi pripada svaka poruka.
Koristit ćemo ove informacije za obuku a neuronska mreža da kategoriziramo frazu riječi kao jednu od oznaka u našoj datoteci.
Tada možemo samo uzeti odgovor od tih grupa i dati ga korisniku. Chatbot će biti bolji i složeniji ako ga ponudite s dodatnim oznakama, odgovorima i obrascima.
3. Učitavanje JSON podataka
Počećemo sa učitavanjem naših .json podataka i uvozom nekih modula. Sastavite svoj.json fajl u isti direktorijum kao i vaš Python skripta. Naši .json podaci će sada biti sačuvani u varijabli podataka.
4. Ekstrakcija podataka
Sada je vrijeme da izvučemo informacije koje su nam potrebne iz naše JSON datoteke. Svi obrasci, kao i klasa/oznaka kojoj pripadaju, su obavezni.
Također će nam trebati lista svih jedinstvenih pojmova u našim obrascima (iz razloga koje ćemo objasniti kasnije), pa hajde da napravimo neke prazne liste da bismo pratili ove vrijednosti.
Sada ćemo proći kroz naše JSON podatke i dohvatiti informacije koje su nam potrebne. Umjesto da ih imamo kao nizove, koristit ćemo nltk.word tokenizer da transformišemo svaki obrazac u listu riječi.
Zatim, na našoj listi docs_x, dodaćemo svaki uzorak, zajedno sa njegovom povezanom oznakom, na docs_y listu.
5. Izvor riječi
Pronalaženje korena reči poznato je kao koren reči. Na primjer, korijen riječi "to" može biti "to", dok bi korijen riječi "događanje" mogao biti "dešava se".
Koristit ćemo ovu tehniku stvaranja korijena da skratimo vokabular našeg modela i pokušamo shvatiti što rečenice općenito impliciraju. Ovaj kod će jednostavno generirati jedinstvenu listu riječi sa korijenom koje će se koristiti u sljedećoj fazi naše pripreme podataka.
6. Vreća riječi
Vrijeme je da razgovaramo o gomilu riječi sada kada smo uvezli naše podatke i generirali nevezani vokabular. Neuralne mreže i algoritmi mašinskog učenja, kao što svi znamo, zahtevaju numerički unos. Dakle, naša lista žica je neće smanjiti. Potreban nam je mehanizam za predstavljanje brojeva u našim rečenicama, a tu dolazi i vrećica riječi.
Svaka fraza će biti predstavljena listom dužine broja pojmova u vokabularu našeg modela. Svaka riječ u našem rječniku će biti predstavljena mjestom na listi. Ako je pozicija na listi 1, riječ se pojavljuje u našoj izjavi; ako je 0, riječ se ne pojavljuje u našoj rečenici.
Mi to nazivamo vrećom riječi jer ne znamo redoslijed u kojem se riječi pojavljuju u frazi; sve što znamo je da postoje u rečniku našeg modela.
Osim strukturiranja našeg ulaza, moramo također formatirati naš izlaz tako da ga neuronska mreža razumije. Napravit ćemo izlazne liste koje su dužine broja oznaka/oznaka u našem skupu podataka, slično vrećici riječi. Svako mjesto na listi predstavlja jedinstvenu oznaku/oznaku, a 1 na bilo kojoj od tih lokacija označava koja je oznaka/oznaka predstavljena.
Konačno, koristićemo NumPy nizove za pohranjivanje naših podataka o obuci i izlaza.
7. Razvoj modela
Spremni smo da počnemo da gradimo i obučavamo model sada kada smo prethodno obradili sve naše podatke. Za naše ciljeve koristićemo vrlo osnovnu neuronsku mrežu sa dva skrivena sloja.
Svrha naše mreže će biti da pogleda kolekciju riječi i dodijeli ih klasi (jedna od naših oznaka iz JSON datoteke). Počećemo sa uspostavljanjem arhitekture našeg modela. Imajte na umu da se možete poigrati s nekim od brojeva kako biste došli do boljeg modela! Mašinsko učenje uglavnom se zasniva na pokušajima i greškama.
8. Model Training & Saving
Vrijeme je da treniramo naš model na našim podacima sada kada smo ga postavili! To ćemo postići uklapanjem naših podataka u model. Broj epoha koje pružamo je koliko puta će model biti izložen istim podacima tokom obuke.
Model možemo sačuvati u model fajla kada završimo sa obukom. tflearn je skripta koja se može koristiti u drugim skriptama.
9. Korištenje chatbot-a
Sada možete početi razgovarati sa svojim botom.
Prednosti Chatbota
- Kako se očekuje da botovi rade 365 dana u godini, 24 sata dnevno, bez plaćanja, povećajte dostupnost i brzinu reakcije.
- Ovi botovi su savršeni alati za rješavanje tri ključna vs velikih podataka: volumen, brzina i raznolikost.
- Chatbotovi su softver koji se može koristiti za učenje i razumijevanje potrošača kompanije.
- Ima superiornu snagu da ima jeftine troškove održavanja nakon što ima vrhunske prednosti.
- Chatbot aplikacije kreiraju podatke koji se mogu sačuvati i koristiti za analitiku i prognoze.
Slučaj upotrebe
- Rješavanje upita kupaca
- Odgovaranje na često postavljana pitanja
- Dodjeljivanje klijenata timu za podršku
- Prikupljanje povratnih informacija kupaca
- Preporuka za nove ponude
- Kupujte uz razgovornu trgovinu
- IT Helpdesk
- Rezervacija smještaja
- Transfer novca
zaključak
Chatbotovi, kao i druge tehnologije umjetne inteligencije, koristit će se za povećanje ljudskih vještina i oslobađanje ljudi da budu kreativniji i maštovitiji tako što će im omogućiti da provode više vremena na strateškim, a ne taktičkim zadacima.
Preduzeća, zaposleni i potrošači će vjerovatno imati koristi od poboljšanih funkcija chatbot-a kao što su brže preporuke i predviđanja, kao i lak pristup video konferencijama visoke definicije iz razgovora, u bliskoj budućnosti, kada se AI kombinira s razvojem 5G tehnologija.
Ove i druge mogućnosti se još istražuju, ali kako internet konekcija, AI, NLP i mašinsko učenje budu napredovali, one će postati sve zastupljenije.
Chwoo
Zdravo,
Hvala vam na ovom programu.
Imam pitanje.
“bag_of_words” nije definirana. Ne mogu razumjeti ovu grešku.
Možete li mi reći kako mogu riješiti ovu grešku??
Hvala na ovom programu!! ugodan dan
kreja
Molimo dodajte funkciju prije korištenja odjeljka chatbot:
///////////////////////////////////////////////// //////////////////////////////
def bag_of_words(s, words):
torba = [0 za _ u rasponu (len(riječi))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) za riječ u s_words]
za sebe u s_words:
za i, w u nabrajanju (riječima):
ako w == se:
torba[i] = 1
vrati numpy.array(vreća)
// Definitivno će riješiti vaš problem. //
////////////////////////////////////////////////////////// // //////////////////////////////
Dijelim kompletan kod s vama, tako da ćete dobiti jasnu sliku o tome.
////////////////////////////////////////////////// /////////
import nltk
from nltk.stem.lancaster import LancasterStemmer
stemmer = LancasterStemmer()
import numpy
import tflearn
import tensorflow
import random
import json
uvoziti kiseli krastavac
sa open(“intents.json”) kao fajlom:
podaci = json.load(fajl)
probaj:
sa open(“data.pickle”, “rb”) kao f:
riječi, oznake, trening, izlaz = pickle.load(f)
osim:
riječi = []
oznake = []
docs_x = []
docs_y = []
za namjeru u podacima [“namjere”]:
za uzorak u namjeri [“uzorci”]:
wrds = nltk.word_tokenize(uzorak)
riječi.proširiti(wrds)
docs_x.append(wrds)
docs_y.append(namjera[“oznaka”])
ako namjera[“tag”] nije u oznakama:
labels.append(namjera[“oznaka”])
riječi = [stemmer.stem(w.lower()) za w u riječima ako w != “?”]
riječi = sortirano(lista(skup(riječi)))
etikete = sortirano (oznake)
obuka = []
izlaz = []
out_empty = [0 za _ u rasponu (len(oznake))]
za x, doc u enumerate(docs_x):
torba = []
wrds = [stemmer.stem(w.lower()) za w u dokumentu]
za w riječima:
ako w u wrds:
bag.append(1)
drugo:
bag.append(0)
izlazni_red = van_prazan[:]
izlazni red[oznake.indeks(docs_y[x])] = 1
training.append(torba)
output.append(output_row)
trening = numpy.array(trening)
izlaz = numpy.array(izlaz)
sa open(“data.pickle”, “wb”) kao f:
pickle.dump((riječi, oznake, obuka, izlaz), f)
tensorflow.reset_default_graph()
net = tflearn.input_data(shape=[Ništa, len(trening[0])])
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, len(output[0]), activation=”softmax”)
net = tflearn.regression(net)
model = tflearn.DNN(net)
probaj:
model.load(“model.tflearn”)
osim:
model.fit(trening, izlaz, n_epoch=1500, batch_size=8, show_metric=True)
model.save(“model.tflearn”)
def bag_of_words(s, words):
torba = [0 za _ u rasponu (len(riječi))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) za riječ u s_words]
za sebe u s_words:
za i, w u nabrajanju (riječima):
ako w == se:
torba[i] = 1
vrati numpy.array(vreća)
def chat():
print(“Počnite razgovarati sa botom (ukucajte quit da prestanete)!”)
dok je Tačno:
inp = input(“Vi: “)
ako inp.lower() == “prekini”:
pauza
rezultati = model.predict([vreca_riječi(inp, riječi)])
rezultati_indeks = numpy.argmax(rezultati)
oznaka = oznake[indeks_rezultata]
za tg u data[“namjere”]:
if tg['tag'] == oznaka:
odgovori = tg['odgovori']
print(random.choice(responses))
chat()
////////////////////////////////////////////////// ////////////////
Hvala ti,
Sretno kodiranje!
Lu
Zdravo,
Možete li mi dati ideju o procesu koji treba provesti u slučaju da želite napraviti chatbot u pythonu, ali informacije se dobijaju iz ankete u excelu. Hvala ti!