INHOUDSOPGAWE[Versteek][Wys]
Stemoproepe word uitgefaseer ten gunste van teks en beeldmateriaal in die kommunikasiesektor. Volgens 'n Facebook-peiling verkies meer as die helfte van kopers om by 'n maatskappy te koop waarmee hulle kan praat. Gesels het die nuwe sosiaal aanvaarbare wyse van kommunikasie geword.
Dit stel besighede in staat om te eniger tyd en vanaf enige plek met hul kliënte te kommunikeer. Chatbots word toenemend gewild onder maatskappye en kliënte as gevolg van hul gemak van gebruik en verminderde wagtye.
Chatbots, of outomatiese gespreksprogramme, bied aan kliënte 'n meer pasgemaakte metode om toegang tot dienste te verkry deur middel van 'n teksgebaseerde koppelvlak. Die nuutste KI-aangedrewe kletsbotte kan 'n navraag (vraag, opdrag, bevel, ens.) wat deur 'n persoon (of 'n ander bot, begin) in 'n spesifieke omgewing gemaak is, herken en gepas reageer (antwoord, aksie, ens.).
In hierdie pos gaan ons oor wat kletsbotte is, hul voordele, gebruiksgevalle en hoe om jou eie te maak diep leer chatbot in Python, onder andere.
Laat ons begin.
So, wat is chatbots?
Daar word gereeld na 'n kletsbot verwys as een van die mees gevorderde en belowende vorme van mens-masjien-interaksie. Hierdie digitale assistente verbeter klante-ervaring deur interaksies tussen mense en dienste te stroomlyn.
Terselfdertyd bied hulle besighede nuwe opsies om die kliëntkontakproses vir doeltreffendheid te optimaliseer, wat konvensionele ondersteuningsuitgawes kan besnoei.
In 'n neutedop, dit is KI-gebaseerde sagteware wat bedoel is om met mense in hul natuurlike tale te kommunikeer. Hierdie kletsbotte het dikwels interaksie via oudio- of geskrewe tegnieke, en hulle kan maklik menslike tale naboots om op 'n mensagtige manier met mense te skakel.
Chatbots leer uit hul interaksies met gebruikers en word mettertyd meer realisties en doeltreffend. Hulle kan 'n wye reeks besigheidsaktiwiteite hanteer, soos die magtiging van besteding, kontak met verbruikers aanlyn en die generering van leidrade.
Skep jou eie diep leer chatbot met python
Daar is baie verskillende soorte chatbots op die gebied van machine learning en AI. Sommige kletsbotte is virtuele assistente, terwyl ander net daar is om mee te gesels, terwyl ander kliëntediensagente is.
Jy het seker al gesien dat sommige van die mense in diens van besighede is om navrae te beantwoord. Ons sal 'n klein kletsbot in hierdie tutoriaal maak om gereelde navrae te beantwoord.
1. Installering van pakkette
Ons eerste stap is om die volgende pakkette te installeer.
2. Opleidingsdata
Nou is dit tyd om uit te vind watter tipe inligting ons nodig het om ons chatbot te gee. Ons hoef nie enige groot datastelle af te laai nie, want dit is 'n eenvoudige kletsbot.
Ons sal slegs die inligting gebruik wat ons self geskep het. Om die les effektief te volg, sal jy 'n .JSON-lêer met dieselfde formaat as die een hieronder moet genereer. My lêer is genaamd "intents.json."
Die JSON-lêer word gebruik om 'n stel boodskappe te skep wat die gebruiker waarskynlik sal invoer en na 'n stel relevante antwoorde toewys. Elke woordeboek in die lêer het 'n merker wat identifiseer aan watter groep elke boodskap behoort.
Ons sal hierdie inligting gebruik om a neurale netwerk om 'n frase woorde as een van die merkers in ons lêer te kategoriseer.
Ons kan dan net 'n antwoord van daardie groepe neem en dit aan die gebruiker verskaf. Die kletsbot sal beter en meer ingewikkeld wees as jy dit met bykomende etikette, antwoorde en patrone aanbied.
3. JSON-data laai
Ons sal begin deur ons .json-data in te laai en sommige modules in te voer. Stel jou.json-lêer saam in dieselfde gids as jou Python skrif. Ons .json-data sal nou in die dataveranderlike gestoor word.
4. Data-onttrekking
Nou is dit tyd om die inligting wat ons benodig uit ons JSON-lêer te onttrek. Al die patrone, sowel as die klas/merker waaraan dit behoort, word vereis.
Ons sal ook 'n lys van al die unieke terme in ons patrone benodig (vir redes wat ons later sal verduidelik), so kom ons skep 'n paar leë lyste om tred te hou met hierdie waardes.
Nou sal ons deur ons JSON-data loop en die inligting wat ons benodig, ophaal. Eerder as om hulle as stringe te hê, sal ons nltk.word tokenizer gebruik om elke patroon in 'n lys woorde te transformeer.
Dan, in ons docs_x lys, sal ons elke patroon, saam met sy gepaardgaande merker, by die docs_y lys voeg.
5. Woordstam
Om die wortel van 'n woord te vind, staan bekend as stam. Byvoorbeeld, die stam van die woord "dit"-stam kan "dit" wees, terwyl die stam van die woord "gebeur" "gebeur" kan wees.
Ons sal hierdie stamtegniek gebruik om ons model se woordeskat af te sny en probeer uitvind wat sinne in die algemeen impliseer. Hierdie kode sal bloot 'n unieke lys van stamwoorde genereer wat in die volgende fase van ons datavoorbereiding gebruik sal word.
6. Sak Woorde
Dit is tyd om oor 'n sak woorde te praat noudat ons ons data ingevoer het en 'n stamwoordeskat gegenereer het. Neurale netwerke en masjienleeralgoritmes, soos ons almal weet, vereis numeriese invoer. So ons string lys gaan dit nie sny nie. Ons het 'n meganisme nodig om getalle in ons sinne voor te stel, dit is waar 'n sak woorde inkom.
Elke frase sal verteenwoordig word deur 'n lys van die lengte van die aantal terme in ons model se woordeskat. Elke woord in ons woordeskat sal deur 'n plek in die lys verteenwoordig word. As die posisie in die lys 'n 1 is, verskyn die woord in ons stelling; as dit 'n 0 is, kom die woord nie in ons sin voor nie.
Ons noem dit 'n sak woorde omdat ons nie die volgorde waarin die woorde in die frase voorkom, ken nie; al wat ons weet is dat hulle in ons model se woordeskat bestaan.
Benewens die strukturering van ons insette, moet ons ook ons uitset formateer sodat die neurale netwerk dit verstaan. Ons sal uitvoerlyste bou wat die lengte is van die aantal etikette/etikette in ons datastel, soortgelyk aan 'n sak woorde. Elke plek in die lys verteenwoordig 'n unieke etiket/merker, en 'n 1 in enige van daardie liggings dui aan watter etiket/merker verteenwoordig word.
Laastens sal ons NumPy-skikkings gebruik om ons opleidingsdata en -uitvoer te stoor.
7. Modelontwikkeling
Ons is gereed om 'n model te begin bou en op te lei noudat ons al ons data vooraf verwerk het. Ons sal 'n baie basiese neurale netwerk met twee versteekte lae vir ons doelwitte gebruik.
Ons netwerk se doel sal wees om na 'n versameling woorde te kyk en dit aan 'n klas toe te wys (een van ons merkers van die JSON-lêer). Ons sal begin deur ons model se argitektuur vas te stel. Hou in gedagte dat jy met sommige van die nommers kan speel om met 'n beter model vorendag te kom! Masjienleer is meestal gebaseer op trial and error.
8. Modelopleiding en -besparing
Dit is tyd om ons model op ons data op te lei noudat ons dit opgestel het! Ons sal dit bereik deur ons data by die model aan te pas. Die aantal tydperke wat ons verskaf, is die aantal kere wat die model tydens opleiding aan dieselfde data blootgestel sal word.
Ons kan die model na die lêermodel stoor sodra ons dit klaar opgelei het. tflearn is 'n skrif wat in ander skrifte gebruik kan word.
9. Gebruik 'n kletsbot
Nou kan jy met jou bot begin gesels.
Voordele van Chatbot
- Aangesien bots na verwagting 365 dae per jaar, 24 uur per dag, sonder betaling sal werk, verhoog beskikbaarheid en reaksiespoed.
- Hierdie bots is perfekte gereedskap om groot data se drie sleutel-Vs aan te pak: volume, snelheid en verskeidenheid.
- Chatbots is sagteware wat gebruik kan word om meer oor 'n maatskappy se verbruikers te leer en te verstaan.
- Dit het voortreflike krag dat dit 'n goedkoop onderhoudskoste het nadat dit die beste voordele het.
- Chatbot-toepassings skep data wat bewaar en gebruik kan word vir ontledings en voorspellings.
Gebruiksgeval
- Oplossing van klante navrae
- Beantwoord gereelde vrae
- Toewysing van kliënte aan ondersteuningspan
- Versamel klantterugvoer
- Beveel nuwe aanbiedinge aan
- Winkel met gesprekshandel
- IT-hulptoonbank
- Bespreking van verblyf
- Geld oordrag
Gevolgtrekking
Chatbots, soos ander KI-tegnologie, sal gebruik word om menslike vaardighede aan te vul en mense te bevry om meer kreatief en verbeeldingryk te wees deur hulle toe te laat om meer tyd aan strategiese eerder as taktiese take te spandeer.
Besighede, werknemers en verbruikers sal waarskynlik voordeel trek uit verbeterde kletsbot-kenmerke soos vinniger aanbevelings en voorspellings, sowel as maklike toegang tot hoë-definisie videokonferensies vanuit 'n gesprek, in die nabye toekoms, wanneer KI gekombineer word met die ontwikkeling van 5G tegnologie.
Hierdie en ander moontlikhede word nog ondersoek, maar namate internetverbinding, KI, NLP en masjienleer vorder, sal dit meer algemeen voorkom.
Chwoo
Hallo,
Dankie vir hierdie program.
Ek het 'n vraag.
"sak_woorde" is nie gedefinieer nie. Ek kan nie hierdie fout verstaan nie.
Kan jy vir my sê hoe kan ek hierdie fout oplos??
Dankie vir hierdie program!! Lekker dag
Jay
Voeg asseblief 'n funksie by voordat u die chatbot-afdeling gebruik:
///////////////////////////////////////////// ////////////////////////////
def sak_van_woorde(s, woorde):
sak = [0 vir _ in reeks(len(woorde))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) vir woord in s_words]
vir se in s_words:
vir i, w in enumerate(woorde):
as w == se:
sak[i] = 1
gee terug numpy.array(bag)
// Dit sal beslis jou probleem oplos. //
////////////////////////////////////////////////// //////////////////////////
Ek deel die volledige kode met jou, sodat jy 'n duidelike prentjie daarvan sal kry.
///////////////////////////////////////////// /////////
invoer nltk
vanaf nltk.stem.lancaster invoer LancasterStemmer
stemmer = LancasterStemmer()
invoer numpy
voer tleer in
invoer tensorvloei
invoer ewekansig
invoer json
invoer piekel
met open(“intents.json”) as lêer:
data = json.load(lêer)
probeer:
met oop(“data.pickle”, “rb”) as f:
woorde, etikette, opleiding, uitvoer = pickle.load(f)
behalwe:
woorde = []
etikette = []
dokumente_x = []
docs_y = []
vir voorneme in data[“intents”]:
vir patroon in voorneme[“patrone”]:
wrds = nltk.word_tokenize(patroon)
words.extend(wrds)
docs_x.append(wrds)
docs_y.append(intent[“tag”])
indien voorneme[“tag”] nie in etikette nie:
labels.append(intent[“tag”])
woorde = [stemmer.stem(w.lower()) vir w in woorde as w != “?”]
woorde = sorted(lys(stel(woorde)))
etikette = gesorteer(etikette)
opleiding = []
uitset = []
out_empty = [0 vir _ in reeks(len(etikette))]
vir x, doc in enumerate(docs_x):
sak = []
wrds = [stemmer.stem(w.lower()) vir w in doc]
vir w in woorde:
as w in wrds:
bag.append(1)
anders:
bag.append(0)
uitvoer_ry = uit_leeg[:]
uitvoer_ry[labels.index(docs_y[x])] = 1
training.append(sak)
output.append(uitvoer_ry)
opleiding = numpy.array(opleiding)
uitvoer = numpy.array(uitvoer)
met oop(“data.pickle”, “wb”) as f:
pickle.dump((woorde, etikette, opleiding, uitvoer), f)
tensorflow.reset_default_graph()
net = tflearn.input_data(shape=[Geen, len(opleiding[0])])
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, len(afvoer[0]), aktivering=”softmax”)
net = tflearn.regression(net)
model = tflearn.DNN(net)
probeer:
model.load(“model.tflearn”)
behalwe:
model.fit(opleiding, uitset, n_epoch=1500, batch_size=8, show_metric=True)
model.save(“model.tflearn”)
def sak_van_woorde(s, woorde):
sak = [0 vir _ in reeks(len(woorde))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) vir woord in s_words]
vir se in s_words:
vir i, w in enumerate(woorde):
as w == se:
sak[i] = 1
gee terug numpy.array(bag)
def chat():
print(“Begin praat met die bot (tik quit to stop)!”)
terwyl dit waar is:
inp = input(“Jy:”)
if inp.lower() == “stop”:
breek
resultate = model.predict([sak_van_woorde(inp, woorde)])
resultate_indeks = numpy.argmax(resultate)
merker = etikette[resultate_indeks]
vir tg in data[“intents”]:
if tg['tag'] == tag:
antwoorde = tg['antwoorde']
print(random.choice(response))
gesels ()
///////////////////////////////////////////// ///////////////
Dankie,
Gelukkige kodering!
Lu
Hallo,
Kan jy vir my 'n idee gee van die proses om uit te voer in die geval van 'n chatbot in python wil skep, maar die inligting word verkry uit 'n opname in Excel. Dankie!