Pregled sadržaja[Sakriti][Pokazati]
Glasovni pozivi postupno se ukidaju u korist teksta i slika u komunikacijskom sektoru. Prema anketi na Facebooku, više od polovice kupaca radije kupuje od tvrtke s kojom mogu razgovarati. Chat je postao novi društveno prihvatljiv način komunikacije.
Omogućuje tvrtkama da komuniciraju sa svojim klijentima u bilo koje vrijeme i s bilo koje lokacije. Chatbotovi sve više dobivaju na popularnosti među tvrtkama i korisnicima zbog svoje jednostavne upotrebe i smanjenog vremena čekanja.
Chatbotovi ili automatizirani razgovorni programi pružaju klijentima prilagođeniju metodu pristupa uslugama putem tekstualnog sučelja. Najnoviji chatbotovi pokretani umjetnom inteligencijom mogu prepoznati upit (pitanje, naredbu, nalog 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 ćemo postu objasniti što su chatbotovi, njihove prednosti, slučajeve upotrebe i kako napraviti vlastiti duboko učenje chatbot u Pythonu, između ostalog.
Počnimo.
Dakle, što su chatbotovi?
Chatbot se često naziva jednim od najnaprednijih i najperspektivnijih oblika interakcije čovjeka i stroja. Ovi digitalni pomoćnici poboljšavaju korisničko iskustvo pojednostavljivanjem interakcija između ljudi i usluga.
Istovremeno, oni tvrtkama pružaju nove opcije za optimizaciju procesa kontakta s klijentima za učinkovitost, što može smanjiti konvencionalne troškove podrške.
Ukratko, to je softver temeljen na umjetnoj inteligenciji koji je namijenjen komunikaciji s ljudima na njihovim prirodnim jezicima. Ovi chatbotovi često komuniciraju putem audio ili pisanih tehnika i mogu lako oponašati ljudske jezike kako bi se povezali s ljudima na ljudski način.
Chatbotovi uče iz svojih interakcija s korisnicima, s vremenom postaju realističniji i učinkovitiji. Oni se mogu nositi sa širokim rasponom poslovnih aktivnosti, kao što je autorizacija potrošnje, interakcija s potrošačima na mreži i generiranje potencijalnih klijenata.
Stvaranje vlastitog chatbota za duboko učenje pomoću pythona
Postoji mnogo različitih vrsta chatbota u području stroj za učenje i AI. Neki chatbotovi su virtualni pomoćnici, dok su drugi tu samo da s njima razgovaraju, dok su treći agenti korisničke službe.
Vjerojatno ste vidjeli neke od onih koje tvrtke zapošljavaju da odgovaraju na upite. Napravit ćemo mali chatbot u ovom vodiču koji će odgovarati na često tražene upite.
1. Instaliranje paketa
Naš prvi korak je instalacija sljedećih paketa.
2. Podaci o obuci
Sada je vrijeme da shvatimo koju ćemo vrstu informacija morati dati našem chatbotu. Ne trebamo preuzimati velike skupove podataka jer je ovo jednostavan chatbot.
Koristit ćemo samo informacije koje smo sami stvorili. Kako biste učinkovito pratili lekciju, morat ćete generirati .JSON datoteku u istom formatu kao što je ovaj prikazan u nastavku. Moja datoteka se zove "intents.json."
JSON datoteka koristi se za stvaranje skupa poruka koje će korisnik vjerojatno unijeti i preslikati u skup relevantnih odgovora. Svaki rječnik u datoteci ima oznaku koja identificira kojoj grupi svaka poruka pripada.
Koristit ćemo ove informacije za obuku a neuronska mreža da kategoriziramo frazu riječi kao jednu od oznaka u našoj datoteci.
Tada jednostavno možemo uzeti odgovor od tih grupa i dati ga korisniku. Chatbot će biti bolji i kompliciraniji ako ga ponudite s dodatnim oznakama, odgovorima i uzorcima.
3. Učitavanje JSON podataka
Počet ćemo učitavanjem naših .json podataka i uvozom nekih modula. Sastavite svoju datoteku.json u istom direktoriju kao i vaša Python skripta. Naši .json podaci sada će biti spremljeni u varijablu podataka.
4. Ekstrakcija podataka
Sada je vrijeme da izdvojimo informacije koje su nam potrebne iz naše JSON datoteke. Potrebni su svi obrasci, kao i klasa/oznaka kojoj pripadaju.
Trebat će nam i popis svih jedinstvenih izraza u našim obrascima (iz razloga koje ćemo kasnije objasniti), pa stvorimo neke prazne popise kako bismo pratili te 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 za transformaciju svakog uzorka u popis riječi.
Zatim ćemo na našem popisu docs_x dodati svaki uzorak, zajedno s pripadajućom oznakom, na popis docs_y.
5. Korak riječi
Pronalaženje korijena riječi poznato je kao stvaranje korijena. Na primjer, korijen riječi "to" mogao bi biti "to", dok bi korijen riječi "događanje" mogao biti "dogoditi se".
Upotrijebit ćemo ovu tehniku podrijetla kako bismo smanjili vokabular našeg modela i pokušali dokučiti što rečenice općenito impliciraju. Ovaj kod će jednostavno generirati jedinstveni popis riječi s korijenom koji će se koristiti u sljedećoj fazi naše pripreme podataka.
6. Vrećica riječi
Vrijeme je da razgovaramo o gomili riječi sada kada smo uvezli svoje podatke i generirali rječnik s korijenom. Neuronske mreže a algoritmi strojnog učenja, kao što svi znamo, zahtijevaju numerički unos. Dakle, naš popis nizova to neće smanjiti. Trebamo mehanizam za predstavljanje brojeva u našim rečenicama, a tu dolazi gomila riječi.
Svaka će fraza biti predstavljena popisom duljine ili broja pojmova u vokabularu našeg modela. Svaka riječ u našem vokabularu bit će predstavljena mjestom na popisu. Ako je pozicija na popisu 1, riječ se pojavljuje u našem iskazu; ako je 0, riječ se ne pojavljuje u našoj rečenici.
Nazivamo to vrećom riječi jer ne znamo redoslijed u kojem se riječi pojavljuju u frazi; sve što znamo je da postoje u vokabularu našeg modela.
Osim strukturiranja našeg ulaza, moramo također formatirati naš izlaz tako da ga neuronska mreža razumije. Izradit ćemo izlazne popise koji su duljine broja oznaka/oznaka u našem skupu podataka, slično vrećici riječi. Svako mjesto na popisu predstavlja jedinstvenu oznaku/oznaku, a 1 na bilo kojoj od tih lokacija označava koja je oznaka/oznaka predstavljena.
Konačno, koristit ćemo nizove NumPy za pohranjivanje podataka o treningu i izlaza.
7. Razvoj modela
Sada kada smo prethodno obradili sve naše podatke, spremni smo za početak izgradnje i obuke modela. Koristit ćemo vrlo osnovnu neuronsku mrežu s dva skrivena sloja za naše ciljeve.
Svrha naše mreže bit će pogledati zbirku riječi i dodijeliti ih klasi (jedna od naših oznaka iz JSON datoteke). Počet ćemo uspostavljanjem arhitekture našeg modela. Imajte na umu da se možete poigrati s nekim brojevima kako biste došli do boljeg modela! Strojno učenje uglavnom se temelji na pokušajima i pogreškama.
8. Obuka i spremanje modela
Vrijeme je da uvježbamo naš model na našim podacima sad kad smo ga postavili! To ćemo postići prilagođavanjem naših podataka modelu. Broj epoha koje pružamo je broj puta koji će model biti izložen istim podacima tijekom obuke.
Možemo spremiti model u model datoteke nakon što završimo s obukom. tflearn je skripta koja se može koristiti u drugim skriptama.
9. Korištenje chatbota
Sada možete početi razgovarati sa svojim botom.
Prednosti Chatbota
- Kako se očekuje da će botovi raditi 365 dana u godini, 24 sata dnevno, bez plaćanja, povećajte dostupnost i brzinu reakcije.
- Ovi botovi savršeni su alati za rješavanje tri ključna protiv velikih podataka: volumena, brzine i raznolikosti.
- Chatbotovi su softver koji se može koristiti za upoznavanje i razumijevanje potrošača tvrtke.
- Ima vrhunsku snagu koja ima jeftine troškove održavanja nakon vrhunskih prednosti.
- Chatbot aplikacije stvaraju podatke koji se mogu sačuvati i koristiti za analitiku i predviđanja.
Slučaj upotrebe
- Rješavanje upita kupaca
- Odgovaranje na često postavljana pitanja
- Dodjeljivanje klijenata timu za podršku
- Prikupljanje povratnih informacija kupaca
- Preporuka novih ponuda
- Kupujte uz razgovornu trgovinu
- IT Helpdesk
- Rezervacija smještaja
- Prijenos 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 dopuštajući im da provedu više vremena na strateškim umjesto na taktičkim zadacima.
Tvrtke, zaposlenici i potrošači vjerojatno će imati koristi od poboljšanih značajki chatbota kao što su brže preporuke i predviđanja, kao i jednostavan pristup videokonferenciji visoke razlučivosti unutar razgovora, u bliskoj budućnosti, kada se AI kombinira s razvojem 5G tehnologija.
Ove i druge mogućnosti još se istražuju, ali kako internetska povezanost, AI, NLP i strojno učenje budu napredovali, postat će sve prisutniji.
Chwoo
Pozdrav,
Hvala vam na ovom programu.
Imam pitanje.
“bag_of_words” nije definiran. Ne mogu razumjeti ovu grešku.
Možete li mi reći kako mogu riješiti ovu grešku??
Hvala vam na ovom programu!! Ugodan dan
kreja
Dodajte funkciju prije korištenja odjeljka chatbota:
//////////////////////////////////////////////////// ///////////////////////////////
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 se u s_words:
za i, w u enumerate(riječima):
ako je w == se:
torba[i] = 1
vrati numpy.array(bag)
// Definitivno će riješiti vaš problem. //
////////////////////////////////////////////////////////// // //////////////////////////////
Dijelim cijeli kod s vama, tako da ćete dobiti jasnu sliku o njemu.
////////////////////////////////////////////////// /////////
uvoziti nltk
iz nltk.stem.lancaster import LancasterStemmer
stemmer = LancasterStemmer()
import numpy
uvoz tflearn
import tensorflow
uvoz slučajnim
uvoz json
uvozna kiselina
s open(“intents.json”) kao datotekom:
podaci = json.load(file)
probati:
s open(“data.pickle”, “rb”) kao f:
riječi, oznake, obuka, izlaz = pickle.load(f)
osim:
riječi = []
oznake = []
dokumenti_x = []
dokumenti_y = []
za namjeru u podacima ["namjere"]:
za uzorak u namjeri ["uzorci"]:
wrds = nltk.word_tokenize(uzorak)
words.extend(wrds)
docs_x.append(wrds)
docs_y.append(namjera[“oznaka”])
ako namjera[“oznaka”] nije u oznakama:
labels.append(namjera[“oznaka”])
riječi = [stemmer.stem(w.lower()) za w u riječima if w != “?”]
riječi = sortirano(popis(set(riječi)))
oznake = sortirano(oznake)
trening = []
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 je w u riječima:
bag.append(1)
drugo:
bag.append(0)
izlazni_red = izlaz_prazan[:]
output_row[labels.index(docs_y[x])] = 1
training.append(bag)
izlaz.dodaj(izlazni_red)
trening = numpy.array(trening)
izlaz = numpy.array(izlaz)
s open(“data.pickle”, “wb”) kao f:
pickle.dump((riječi, oznake, obuka, izlaz), f)
tensorflow.reset_default_graph()
net = tflearn.input_data(shape=[None, len(training[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)
probati:
model.load(“model.tflearn”)
osim:
model.fit(trening, output, 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 se u s_words:
za i, w u enumerate(riječima):
ako je w == se:
torba[i] = 1
vrati numpy.array(bag)
def chat():
print("Počni razgovarati s botom (utipkaj quit da prestaneš)!")
dok je Istina:
inp = input(“Vi: “)
if inp.lower() == “quit”:
razbiti
rezultati = model.predict([bag_of_words(inp, words)])
rezultati_indeksa = numpy.argmax(rezultati)
oznaka = oznake[rezultati_indeks]
za tg u podacima ["namjere"]:
if tg['tag'] == oznaka:
odgovori = tg['odgovori']
ispis(random.choice(responses))
razgovor()
////////////////////////////////////////////////// ///////////////
Hvala ti,
Sretno kodiranje!
Lu
Pozdrav,
Možete li mi dati ideju o procesu koji treba provesti u slučaju da želite napraviti chatbot u pythonu, ali informacije se dobivaju iz ankete u excelu. Hvala vam!