Enhavtabelo[Kaŝi][Montri]
Voĉaj vokoj estas forigitaj en favoro de teksto kaj bildoj en la komunika sektoro. Laŭ enketo de Facebook, pli ol duono de aĉetantoj preferas aĉeti de kompanio kun kiu ili povas paroli. Babilado fariĝis la nova socie akceptebla maniero de komunikado.
Ĝi ebligas entreprenojn komuniki kun siaj klientoj iam ajn kaj de ajna loko. Babilrotoj ĉiam pli akiras popularecon inter kompanioj kaj klientoj pro sia facileco de uzo kaj reduktitaj atendtempoj.
Chatbots, aŭ aŭtomatigitaj konversaciaj programoj, provizas klientojn per pli personecigita metodo por aliri servojn per tekst-bazita interfaco. La plej novaj AI-funkciigitaj babilrotoj povas rekoni demandon (demando, komando, ordo, ktp.) farita de persono (aŭ alia roboto, komenco) en specifa medio kaj respondi taŭge (respondo, ago, ktp.).
En ĉi tiu afiŝo, ni trarigardos, kio estas babilrotoj, iliaj avantaĝoj, uzkazoj kaj kiel fari vian propran. profunda lernado babilejo en Python, interalie.
Ni ekiru.
Do, kio estas babilrotoj?
Babilrobo estas ofte nomata unu el la plej progresintaj kaj promesplenaj formoj de interago homa-maŝino. Ĉi tiuj ciferecaj asistantoj plibonigas klientan sperton simpligante interagojn inter homoj kaj servoj.
Samtempe, ili provizas entreprenojn novajn eblojn por optimumigi la klientkontaktan procezon por efikeco, kiu povas tranĉi konvenciajn subtenajn elspezojn.
En resumo, ĝi estas AI-bazita programaro kiu celas komuniki kun homoj en iliaj naturaj lingvoj. Ĉi tiuj babilrotoj ofte interagas per aŭdaj aŭ skribitaj teknikoj, kaj ili povas facile imiti homajn lingvojn por konekti kun homoj en homa maniero.
Babilrotoj lernas de siaj interagoj kun uzantoj, fariĝante pli realismaj kaj efikaj kun la tempo. Ili povas trakti ampleksan gamon de komercaj agadoj, kiel rajtigado de elspezoj, intertraktado kun konsumantoj interrete kaj generado de kondukoj.
Kreante vian propran profundlernan babilejon per python
Estas multaj apartaj specoj de babilrotoj en la kampo de maŝinlernado kaj AI. Iuj babilrotoj estas virtualaj asistantoj, dum aliaj estas nur tie por konversacii, dum aliaj estas klientservaj agentoj.
Vi verŝajne vidis kelkajn el la dungitoj de entreprenoj por respondi demandojn. Ni faros malgrandan babilejon en ĉi tiu lernilo por respondi ofte petitajn demandojn.
1. Instalante pakaĵojn
Nia unua paŝo estas instali la sekvajn pakaĵojn.
2. Trejnaj Datumoj
Nun estas tempo por eltrovi kian informon ni bezonos doni al nia babilboto. Ni ne bezonas elŝuti grandajn datumarojn ĉar ĉi tio estas simpla babilejo.
Ni nur uzos la informojn, kiujn ni mem kreis. Por efike sekvi la lecionon, vi devos generi .JSON-dosieron kun la sama formato kiel tiu ĉi sube. Mia dosiero nomiĝas "intents.json."
La JSON-dosiero estas uzata por krei aron da mesaĝoj, kiujn la uzanto verŝajne enigos kaj mapigos al aro da koncernaj respondoj. Ĉiu vortaro en la dosiero havas etikedon kiu identigas al kiu grupo apartenas ĉiu mesaĝo.
Ni uzos ĉi tiun informon por trejni a Neŭra reto kategoriigi frazon de vortoj kiel unu el la etikedoj en nia dosiero.
Ni povas tiam simple preni respondon de tiuj grupoj kaj provizi ĝin al la uzanto. La babilejo estos pli bona kaj pli komplika se vi proponas ĝin kun pliaj etikedoj, respondoj kaj ŝablonoj.
3. JSON-datumŝarĝo
Ni komencos ŝarĝante niajn datumojn .json kaj importante iujn modulojn. Kunvenu vian.json-dosieron en la sama dosierujo kiel via Python-skripto. Niaj datumoj .json nun estos konservitaj en la datuma variablo.
4. Eltiro de datumoj
Nun estas tempo ĉerpi la informojn, kiujn ni bezonas el nia JSON-dosiero. Ĉiuj ŝablonoj, same kiel la klaso/etikedo al kiu ili apartenas, estas postulataj.
Ni ankaŭ bezonos liston de ĉiuj unikaj terminoj en niaj ŝablonoj (pro kialoj, kiujn ni klarigos poste), do ni kreu kelkajn malplenajn listojn por konservi ĉi tiujn valorojn.
Nun ni trarigardos niajn JSON-datumojn kaj reakiros la informojn, kiujn ni bezonas. Prefere ol havi ilin kiel ŝnurojn, ni uzos nltk.word tokenizer por transformi ĉiun ŝablonon en liston de vortoj.
Poste, en nia listo docs_x, ni aldonos ĉiun ŝablonon, kune kun ĝia rilata etikedo, al la listo docs_y.
5. Vorto Deveno
Trovi la radikon de vorto estas konata kiel devenado. Ekzemple, la tigo de la vorto "tio" tigo povus esti "tio", dum la tigo de la vorto "okazanta" povus esti "okazis".
Ni uzos ĉi tiun devenan teknikon por malgrandigi la vortprovizon de nia modelo kaj klopodi eltrovi kion frazoj implicas ĝenerale. Ĉi tiu kodo simple generos unikan liston de radikaj vortoj, kiuj estos uzataj en la sekva fazo de nia datumpreparo.
6. Sako da Vortoj
Estas tempo paroli pri sako da vortoj nun, kiam ni importis niajn datumojn kaj generis detigan vortprovizon. Neŭronaj retoj kaj maŝinlernado-algoritmoj, kiel ni ĉiuj scias, postulas nombran enigon. Do nia kordlisto ne tuj tranĉos ĝin. Ni bezonas mekanismon por reprezenti nombrojn en niaj frazoj, kio estas kie envenas sako da vortoj.
Ĉiu frazo estos reprezentita per listo de la longo de la nombro da terminoj en la vortprovizo de nia modelo. Ĉiu vorto en nia vortprovizo estos reprezentita per loko en la listo. Se la pozicio en la listo estas 1, la vorto aperas en nia deklaro; se ĝi estas 0, la vorto ne aperas en nia frazo.
Ni nomas ĝin sako da vortoj ĉar ni ne konas la sinsekvon en kiu la vortoj aperas en la frazo; ni scias nur ke ili ekzistas en la vortprovizo de nia modelo.
Krom strukturi nian enigaĵon, ni ankaŭ devas formi nian eliron tiel ke la neŭrala reto komprenu ĝin. Ni konstruos produktaĵlistojn kiuj estas la longo de la nombro da etikedoj/etikedoj en nia datumaro, simile al sako da vortoj. Ĉiu loko en la listo reprezentas unikan etikedon/etikedon, kaj 1 en iu ajn el tiuj lokoj indikas kiu etikedo/etikedo estas reprezentita.
Fine, ni uzos NumPy-tabelojn por stoki niajn trejnajn datumojn kaj eligon.
7. Modelevoluo
Ni pretas komenci konstrui kaj trejni modelon nun, kiam ni antaŭprilaboris ĉiujn niajn datumojn. Ni uzos tre bazan antaŭan neŭralan reton kun du kaŝitaj tavoloj por niaj celoj.
La celo de nia reto estos rigardi kolekton de vortoj kaj asigni ilin al klaso (unu el niaj etikedoj el la JSON-dosiero). Ni komencos establante la arkitekturon de nia modelo. Memoru, ke vi povas ludi kun kelkaj el la nombroj por elpensi pli bonan modelon! Maŝinlernado estas plejparte bazita sur provo kaj eraro.
8. Modela Trejnado & Ŝparado
Estas tempo trejni nian modelon pri niaj datumoj nun kiam ni instalis ĝin! Ni atingos ĉi tion per adapto de niaj datumoj al la modelo. La nombro da epokoj, kiujn ni provizas, estas la nombro da fojoj, kiam la modelo estos elmontrita al la samaj datumoj dum trejnado.
Ni povas konservi la modelon al la dosiermodelo post kiam ni finis trejni ĝin. tflearn estas skripto uzebla en aliaj skriptoj.
9. Uzante babilejon
Nun vi povas komenci babili kun via bot.
Avantaĝoj de Chatbot
- Ĉar bots estas atenditaj funkcii 365 tagojn jare, 24 horojn tage, sen salajro, pliigu haveblecon kaj reagorapidecon.
- Ĉi tiuj robotoj estas perfektaj iloj por trakti la tri ŝlosilajn Vs de grandaj datumoj: volumo, rapideco kaj vario.
- Chatbots estas programaro, kiu povas esti uzata por lerni kaj kompreni la konsumantojn de kompanio.
- Ĝi havas superan potencon, ke ĝi havas malmultekostan bontenadon post havi ĉefajn avantaĝojn.
- Chatbot-aplikoj kreas datumojn, kiuj povas esti konservitaj kaj uzataj por analizoj kaj prognozoj.
Uzokazo
- Solvante klientajn demandojn
- Respondante oftajn demandojn
- Asignante klientojn al subtena teamo
- Kolektante klientajn sugestojn
- Rekomendante novajn ofertojn
- Aĉetu kun konversacia komerco
- IT Helpservo
- Rezervaj loĝejoj
- Mono-translokado
konkludo
Chatbots, kiel aliaj AI-teknologioj, estos uzataj por pliigi homajn kapablojn kaj liberigi homojn por esti pli kreivaj kaj imagivaj permesante al ili pasigi pli da tempo por strategiaj prefere ol taktikaj taskoj.
Entreprenoj, dungitoj kaj konsumantoj verŝajne profitos el plifortigitaj babilbotfunkcioj kiel pli rapidaj rekomendoj kaj antaŭdiroj, kaj ankaŭ facilan aliron al altdifinaj videokonferenco de ene de konversacio, en proksima estonteco, kiam AI estas kombinita kun la evoluo de 5G teknologio.
Ĉi tiuj kaj aliaj eblecoj ankoraŭ estas esploritaj, sed kiel interreta konektebleco, AI, NLP kaj maŝinlernado progresos, ili fariĝos pli ĝeneralaj.
Chwoo
saluton,
Dankon pro ĉi tiu programo.
Mi havas demandon.
“sako_de_vortoj” ne estas difinita. Mi ne povas kompreni ĉi tiun eraron.
Ĉu vi povus diri al mi kiel mi povas solvi ĉi tiun eraron??
Dankon pro ĉi tiu programo!! Havu bonan tagon
jay
Bonvolu aldoni funkcion antaŭ ol uzi la retbabilan sekcion:
//////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////
def sako_de_vortoj(j, vortoj):
sako = [0 por _ en intervalo(len(vortoj))]
s_words = nltk.word_tokenize(j)
s_vortoj = [stemmer.stem(word.lower()) por vorto en s_vortoj]
pro tio en s_vortoj:
por i, w en listigi(vortoj):
se w == se:
sako [i] = 1
reveni numpy.array (sako)
// Ĝi certe solvos vian problemon. //
////////////////////////////////////////////////////// ////////////////////////////
Mi dividas la kompletan kodon kun vi, do vi ricevos klaran bildon pri ĝi.
//////////////////////////////////////////////////////////////////////////////////////// /////////
importi nltk
el nltk.stem.lancaster import LancasterStemmer
Stemmer = LancasterStemmer ()
import numpy
importi tflearn
import tensorflow
importado hazarda
importi json
importi piklaĵon
kun malfermita ("intents.json") kiel dosiero:
datumoj = json.load (dosiero)
provu:
kun malfermita ("data.pickle", "rb") kiel f:
vortoj, etikedoj, trejnado, eligo = pickle.load(f)
krom:
vortoj = []
etikedoj = []
docs_x = []
dokumentoj_y = []
por intenco en datumoj["intencoj"]:
por ŝablono en intenco[“ŝablonoj”]:
wrds = nltk.word_tokenize (ŝablono)
vortoj.etendi(vortoj)
docs_x.append(wrds)
docs_y.append(intento[“etikedo”])
se intenco["etikedo"] ne en etikedoj:
labels.append(intento[“etikedo”])
vortoj = [stemmer.stem(w.lower()) por w en vortoj se w != “?”]
vortoj = ordigita (listo (aro (vortoj)))
etikedoj = ordigita (etikedoj)
trejnado = []
eligo = []
ekster_malplena = [0 por _ en intervalo(len(etikedoj))]
por x, doc en enumerate(docs_x):
sako = []
wrds = [stemmer.stem(w.lower()) por w en dok]
por w en vortoj:
se w en vortoj:
sako.almeti(1)
alie:
sako.almeti(0)
eligo_vico = el_malplena[:]
eligo_vico[labels.index(dokumentoj_y[x])] = 1
trejnado.almeti (sako)
eligo.apend(eligo_vico)
trejnado = numpy.array (trejnado)
eligo = numpy.array (eligo)
kun malfermita ("data.pickle", "wb") kiel f:
pickle.dump((vortoj, etikedoj, trejnado, eligo), f)
tensorflow.reset_default_graph ()
net = tflearn.input_data(formo=[Neniu, len(trejnado[0])])
reto = tflearn.plene_konektita (reto, 8)
reto = tflearn.plene_konektita (reto, 8)
reto = tflearn.plene_konektita (reto, len (eligo[0]), aktivigo="softmax")
net = tflearn.regression(net)
modelo = tflearn.DNN(net)
provu:
model.load ("modelo.tflearn")
krom:
model.fit(trejnado, eligo, n_epoko=1500, batch_size=8, show_metric=Vera)
model.save ("modelo.tflearn")
def sako_de_vortoj(j, vortoj):
sako = [0 por _ en intervalo(len(vortoj))]
s_words = nltk.word_tokenize(j)
s_vortoj = [stemmer.stem(word.lower()) por vorto en s_vortoj]
pro tio en s_vortoj:
por i, w en listigi(vortoj):
se w == se:
sako [i] = 1
reveni numpy.array (sako)
def babilejo():
print("Komencu paroli kun la roboto (tajpu ĉesi por ĉesi)!")
dum Vere:
inp = enigo ("Vi: ")
if inp.lower() == "ĉesi":
paŭzo
rezultoj = model.predict([sako_de_vortoj(inp, vortoj)])
results_index = numpy.argmax (rezultoj)
etikedo = etikedoj[results_index]
por tg en datumoj["intencoj"]:
if tg['etikedo'] == etikedo:
respondoj = tg['respondoj']
print(hazarda.elekto(respondoj))
babili ()
//////////////////////////////////////////////////////////////////////////////////////// ///////////////
Dankon,
Feliĉan kodigon!
Lu
saluton,
Ĉu vi povus doni al mi ideon pri la procezo por efektivigi en la kazo de voli krei babilejon en python, sed la informoj estas akiritaj de enketo en excel. Dankon!