Kazalo[Skrij][Pokaži]
Glasovni klici se postopoma opuščajo v korist besedila in vizualnih vsebin v komunikacijskem sektorju. Glede na anketo na Facebooku več kot polovica kupcev raje kupuje od podjetja, s katerim se lahko pogovarjajo. Klepetanje je postalo nov družbeno sprejemljiv način komunikacije.
Podjetjem omogoča komunikacijo s svojimi strankami kadarkoli in s katere koli lokacije. Chatboti postajajo vse bolj priljubljeni med podjetji in strankami zaradi enostavne uporabe in skrajšanih čakalnih dob.
Klepetalni roboti ali avtomatizirani pogovorni programi strankam nudijo bolj prilagojeno metodo za dostop do storitev prek besedilnega vmesnika. Najnovejši klepetalni roboti, ki jih poganja umetna inteligenca, lahko prepoznajo poizvedbo (vprašanje, ukaz, ukaz itd.), ki jo je postavila oseba (ali drug bot, začetnik) v določenem okolju in se ustrezno odzovejo (odgovor, dejanje itd.).
V tej objavi bomo preučili, kaj so klepetalni roboti, njihove prednosti, primere uporabe in kako narediti svoje globoko učenje med drugim chatbot v Pythonu.
Začnimo.
Torej, kaj so chatboti?
Klepetalnica se pogosto imenuje ena najbolj naprednih in obetavnih oblik interakcije človek-stroj. Ti digitalni pomočniki izboljšujejo uporabniško izkušnjo z racionalizacijo interakcije med ljudmi in storitvami.
Hkrati podjetjem ponujajo nove možnosti za optimizacijo procesa stika s strankami za učinkovitost, kar lahko zmanjša običajne stroške podpore.
Na kratko, programska oprema, ki temelji na umetni inteligenci, naj bi komunicirala z ljudmi v njihovih naravnih jezikih. Ti chatboti pogosto komunicirajo prek zvočnih ali pisnih tehnik in zlahka posnemajo človeške jezike, da se povežejo z ljudmi na človeku podoben način.
Klepetalni roboti se učijo iz svojih interakcij z uporabniki in sčasoma postajajo bolj realistični in učinkoviti. Lahko se ukvarjajo s širokim naborom poslovnih dejavnosti, kot so odobritev porabe, sodelovanje s potrošniki na spletu in ustvarjanje potencialnih strank.
Ustvarjanje lastnega klepetalnega bota za globoko učenje s pythonom
Obstaja veliko različnih vrst chatbotov na področju strojno učenje in AI. Nekateri klepetalni roboti so virtualni pomočniki, drugi so tam samo za pogovor, drugi pa so agenti za pomoč strankam.
Verjetno ste že videli nekaj tistih, ki jih podjetja zaposlujejo, da odgovarjajo na vprašanja. V tej vadnici bomo naredili majhen klepetalnik, ki bo odgovoril na pogosto zahtevana vprašanja.
1. Namestitev paketov
Naš prvi korak je namestitev naslednjih paketov.
2. Podatki o usposabljanju
Zdaj je čas, da ugotovimo, katere vrste informacij bomo potrebovali za klepetalnico. Ni nam treba prenašati velikih naborov podatkov, ker je to preprost klepetalni robot.
Uporabili bomo samo informacije, ki smo jih ustvarili sami. Če želite učinkovito slediti lekciji, boste morali ustvariti datoteko .JSON z enako obliko, kot je prikazana spodaj. Moja datoteka se imenuje »intents.json«.
Datoteka JSON se uporablja za ustvarjanje niza sporočil, ki jih bo uporabnik verjetno vnesel in preslikal v nabor ustreznih odgovorov. Vsak slovar v datoteki ima oznako, ki označuje, kateri skupini pripada posamezno sporočilo.
Te podatke bomo uporabili za usposabljanje a nevronska mreža kategorizirati besedno zvezo kot eno od oznak v naši datoteki.
Nato lahko vzamemo odgovor teh skupin in ga posredujemo uporabniku. Klepetalni robot bo boljši in bolj zapleten, če ga ponudite z dodatnimi oznakami, odgovori in vzorci.
3. Nalaganje podatkov JSON
Začeli bomo z nalaganjem naših podatkov .json in uvozom nekaterih modulov. Datoteko .json sestavite v isti imenik kot vaš Python skript. Naši podatki .json bodo zdaj shranjeni v spremenljivki data.
4. Ekstrakcija podatkov
Zdaj je čas, da iz naše datoteke JSON izvlečemo informacije, ki jih potrebujemo. Vsi vzorci, kot tudi razred/oznaka, ki mu pripadajo, so obvezni.
Potrebovali bomo tudi seznam vseh edinstvenih izrazov v naših vzorcih (zaradi razlogov, ki jih bomo razložili pozneje), zato ustvarimo nekaj praznih seznamov, da bomo spremljali te vrednosti.
Zdaj bomo pregledali naše podatke JSON in pridobili informacije, ki jih potrebujemo. Namesto da bi jih imeli kot nize, bomo uporabili tokenizer nltk.word za preoblikovanje vsakega vzorca v seznam besed.
Nato bomo na našem seznamu docs_x dodali vsak vzorec skupaj s pripadajočo oznako na seznam docs_y.
5. Beseda izvira
Iskanje korena besede je znano kot izviranje. Na primer, deblo besede »to« je lahko »to«, medtem ko je deblo besede »dogajanje« lahko »zgoditi«.
To tehniko oblikovanja korenin bomo uporabili za zmanjšanje besedišča našega modela in poskušali ugotoviti, kaj povedi na splošno pomenijo. Ta koda bo preprosto ustvarila edinstven seznam osnovnih besed, ki jih bomo uporabili v naslednji fazi naše priprave podatkov.
6. Vreča besed
Čas je, da spregovorimo o vreči besed, zdaj, ko smo uvozili svoje podatke in ustvarili ohlapen besednjak. Nevronske mreže in algoritmi strojnega učenja, kot vsi vemo, zahtevajo številčni vnos. Torej ga naš seznam nizov ne bo zmanjšal. Potrebujemo mehanizem za predstavitev številk v naših stavkih, kjer pride na vrsto vreča besed.
Vsaka besedna zveza bo predstavljena s seznamom dolžine števila izrazov v besednjaku našega modela. Vsaka beseda v našem besednjaku bo predstavljena z mestom na seznamu. Če je položaj na seznamu 1, se beseda pojavi v naši izjavi; če je 0, se beseda v našem stavku ne pojavi.
Imenujemo jo vreča besed, ker ne poznamo zaporedja, v katerem se besede pojavljajo v besedni zvezi; vse kar vemo je, da obstajajo v besednjaku našega modela.
Poleg strukturiranja našega vhoda moramo tudi oblikovati svoj izhod, tako da ga nevronska mreža razume. Zgradili bomo izhodne sezname, ki so dolžine števila oznak/oznak v našem naboru podatkov, podobno kot vreča besed. Vsako mesto na seznamu predstavlja edinstveno oznako/oznako, 1 na kateri koli od teh lokacij pa označuje, katera oznaka/oznaka je predstavljena.
Končno bomo uporabili matrike NumPy za shranjevanje naših podatkov o vadbi in izhodnih rezultatov.
7. Razvoj modela
Zdaj, ko smo predhodno obdelali vse svoje podatke, smo pripravljeni začeti graditi in usposabljati model. Za naše cilje bomo uporabili zelo osnovno nevronsko mrežo za naprej z dvema skritima slojema.
Namen našega omrežja bo pogledati zbirko besed in jih dodeliti razredu (ena od naših oznak iz datoteke JSON). Začeli bomo z vzpostavitvijo arhitekture našega modela. Ne pozabite, da se lahko poigrate z nekaterimi številkami, da dobite boljši model! Strojno učenje večinoma temelji na poskusih in napakah.
8. Model Training & Saving
Zdaj je čas, da naš model usposobimo na naših podatkih, ko smo ga nastavili! To bomo dosegli tako, da svoje podatke prilagodimo modelu. Število epoh, ki jih zagotovimo, je, kolikokrat bo model med usposabljanjem izpostavljen istim podatkom.
Model lahko shranimo v datotečni model, ko ga končamo z usposabljanjem. tflearn je skript, ki se lahko uporablja v drugih skriptih.
9. Uporaba klepetalnika
Zdaj lahko začnete klepetati s svojim botom.
Prednosti Chatbota
- Ker naj bi boti delovali 365 dni v letu, 24 ur na dan, brez plačila, povečajo razpoložljivost in hitrost reakcije.
- Ti roboti so popolna orodja za reševanje treh ključnih nasprotij velikih podatkov: obseg, hitrost in raznolikost.
- Chatboti so programska oprema, ki se lahko uporablja za spoznavanje in razumevanje potrošnikov podjetja.
- Ima vrhunsko moč, da ima poceni stroške vzdrževanja po vrhunskih prednostih.
- Aplikacije za klepetalnice ustvarjajo podatke, ki jih je mogoče ohraniti in uporabiti za analitiko in napovedi.
Primer uporabe
- Reševanje povpraševanj strank
- Odgovarjanje na pogosto zastavljena vprašanja
- Dodeljevanje strank skupini za podporo
- Zbiranje povratnih informacij strank
- Priporočamo nove ponudbe
- Nakupujte s pogovorno trgovino
- Služba za pomoč uporabnikom
- Rezervacija prenočišč
- Denarna transakcija
zaključek
Klepetalni roboti se bodo, tako kot druge tehnologije umetne inteligence, uporabljali za povečanje človeških veščin in osvoboditev ljudi, da bodo bolj ustvarjalni in domiselni, tako da jim bodo omogočili, da porabijo več časa za strateške in ne taktične naloge.
Podjetja, zaposleni in potrošniki bodo verjetno v bližnji prihodnosti imeli koristi od izboljšanih funkcij klepetalnega robota, kot so hitrejša priporočila in napovedi ter enostaven dostop do videokonferenc visoke ločljivosti iz pogovora, ko bo umetna inteligenca združena z razvojem 5G tehnologija.
Te in druge možnosti se še preiskujejo, a ko bodo internetna povezljivost, umetna inteligenca, NLP in strojno učenje napredovali, bodo postale vse bolj razširjene.
Chwoo
Zdravo,
Hvala za ta program.
Imam vprašanje.
“bag_of_words” ni definiran. Ne razumem te napake.
Mi lahko poveste, kako lahko rešim to napako??
Hvala za ta program!! Imej lep dan
Jay
Prosimo, dodajte funkcijo pred uporabo razdelka chatbot:
////////////////////////////////////////////////// //////////////////////////////
def bag_of_words(s, words):
vrečka = [0 za _ v obsegu (len(besede))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) za besedo v s_words]
za se v s_words:
za i, w v enumerate(besedah):
če je w == se:
torba [i] = 1
vrni numpy.array(bag)
// Vsekakor bo rešilo vašo težavo. //
//////////////////////////////////////////////////////// // ////////////////////////////
Z vami delim celotno kodo, da boste dobili jasno sliko o njej.
////////////////////////////////////////////////// /////////
uvozi nltk
iz nltk.stem.lancaster uvoz LancasterStemmer
stemmer = LancasterStemmer()
uvozi numpy
uvoz tflearn
uvoz tensorflow
uvoz naključno
uvoz json
uvozna kumarica
z odprto (“intents.json”) kot datoteko:
podatki = json.load(datoteka)
poskusi:
z open(“data.pickle”, “rb”) kot f:
besede, oznake, usposabljanje, rezultat = pickle.load(f)
razen:
besede = []
oznake = []
dokumenti_x = []
dokumenti_y = []
za namen v podatkih [»namene«]:
za vzorec v nameri [»vzorci«]:
wrds = nltk.word_tokenize(vzorec)
words.extend(wrds)
docs_x.append(wrds)
docs_y.append(namen[“oznaka”])
če namena ["oznaka"] ni v oznakah:
labels.append(namen[“oznaka”])
besede = [stemmer.stem(w.lower()) za w v besedah, če w != “?”]
besede = razvrščeno(seznam(niz(besed)))
oznake = razvrščeno(oznake)
usposabljanje = []
izhod = []
out_empty = [0 za _ v območju (len(oznake))]
za x, dokument v enumerate(docs_x):
torba = []
wrds = [stemmer.stem(w.lower()) za w v dokumentu]
za w z besedami:
če je w v besedah:
bag.priloži(1)
drugo:
bag.priloži(0)
izhodna_vrstica = iz_prazna[:]
izhodna_vrstica[labels.index(docs_y[x])] = 1
training.append(bag)
izhod.priloži(izhodna_vrstica)
usposabljanje = numpy.array(usposabljanje)
izhod = numpy.array(izhod)
z open(“data.pickle”, “wb”) kot f:
pickle.dump((besede, oznake, usposabljanje, izhod), 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)
poskusi:
model.load("model.tflearn")
razen:
model.fit(usposabljanje, rezultat, n_epoch=1500, batch_size=8, show_metric=True)
model.save("model.tflearn")
def bag_of_words(s, words):
vrečka = [0 za _ v obsegu (len(besede))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) za besedo v s_words]
za se v s_words:
za i, w v enumerate(besedah):
če je w == se:
torba [i] = 1
vrni numpy.array(bag)
def chat():
print("Začnite govoriti z botom (vnesite quit za ustavitev)!")
medtem ko je resnično:
inp = input("Vi: ")
if inp.lower() == “zapusti”:
odmor
rezultati = model.predict([vrečka_besed(inp, besede)])
rezultati_indeksa = numpy.argmax(rezultati)
oznaka = oznake [indeks_rezultatov]
za tg v podatkih ["nameri"]:
if tg['tag'] == oznaka:
odgovori = tg['odzivi']
print(random.choice(responses))
klepet()
////////////////////////////////////////////////// ///////////////
Hvala,
Srečno kodiranje!
Lu
Zdravo,
Ali mi lahko predstavite postopek, ki ga je treba izvesti v primeru, da želite ustvariti chatbota v pythonu, vendar so informacije pridobljene iz ankete v excelu. Hvala vam!