Table of Contents[Veşartin][Rêdan]
Di sektora ragihandinê de ji bo nivîs û dîmenan bangên dengî têne qut kirin. Li gorî anketek Facebookê, zêdetirî nîvê kiryaran tercîh dikin ku ji pargîdaniyek ku dikarin pê re biaxivin bikirin. Sohbet bûye awayê ragihandinê yê nû yê pejirandî.
Ew karsaziyan dihêle ku di her dem û ji her deverê de bi xerîdarên xwe re têkilî daynin. Chatbots her ku diçe di nav pargîdan û xerîdaran de ji ber hêsaniya karanîna wan û kêmbûna demên bendewariyê her ku diçe populerbûna xwe bi dest dixe.
Chatbots, an bernameyên danûstendinê yên otomatîkî, ji xerîdaran re rêbazek xwerûtir peyda dikin da ku bi navgînek-based nivîsê bigihîjin karûbaran. Chatbotên herî nû yên bi AI-ê hêzdar dikarin pirsek (pirs, ferman, ferman, hwd.) ku ji hêla kesek (an botek din, destpêk) ve li hawîrdorek taybetî hatî çêkirin nas bikin û bi guncan bersiv bidin (bersiv, kiryar, hwd.).
Di vê postê de, em ê biçin ser çi ne chatbots, feydeyên wan, dozên karanîna, û meriv çawa xweya xwe çêbike hînbûna kûr chatbot li Python, di nav tiştên din de.
Ka em dest bidin hev.
Ji ber vê yekê, chatbots çi ne?
Chatbotek bi gelemperî wekî yek ji awayên herî pêşkeftî û sozdar ên danûstendina mirov-makîne tê binav kirin. Van arîkarên dîjîtal bi hêsankirina danûstendinên di navbera mirov û karûbaran de ezmûna xerîdar çêtir dikin.
Di heman demê de, ew vebijarkên nû pêşkêşî karsaziyan dikin da ku pêvajoya pêwendiya xerîdar ji bo karîgeriyê xweştir bikin, ku dikare lêçûnên piştevaniya kevneşopî qut bike.
Bi kurtasî, ew nermalava AI-ê ye ku tê mebesta ku bi mirovan re bi zimanên xwe yên xwezayî ragihîne. Van chatbots bi gelemperî bi teknîkên dengî an nivîskî ve têkilî didin, û ew dikarin bi hêsanî zimanên mirovan bişopînin da ku bi rengek mirovî bi mirovan re têkildar bin.
Chatbots ji danûstendinên xwe yên bi bikarhêneran re fêr dibin, bi demê re realîst û bikêrtir dibin. Ew dikarin cûrbecûr çalakiyên karsaziyê, wekî destûrdana lêçûn, tevlêbûna bi xerîdarên serhêl, û hilberîna rêberan re mijûl bibin.
Bi python re chatbota xweya fêrbûna kûr biafirînin
Di warê chatbotê de gelek celebên cihêreng hene fêrbûna makîneyê û AI. Hin chatbots arîkarên virtual in, hinên din tenê li wir in ku bi wan re biaxifin, hinên din ajanên karûbarê xerîdar in.
We belkî hin ji yên ku ji hêla karsaziyan ve têne xebitandin dîtine ku bersiva lêpirsînan bidin. Em ê di vê tutoriyê de chatbotek piçûk çêbikin ku bersivê bide pirsên ku pir caran têne xwestin.
1. Sazkirina pakêtan
Yekem gava me ev e ku em pakêtên jêrîn saz bikin.
2. Daneyên Perwerdehiyê
Naha dema wê ye ku em fêr bibin ka em ê hewceyê çi celeb agahdariya ku bidin chatbota xwe. Em ne hewce ne ku tu daneyên mezin dakêşin ji ber ku ev chatbotek hêsan e.
Em ê tenê agahdariya ku me xwe afirandine bikar bînin. Ji bo ku hûn dersê bi bandor bişopînin, hûn hewce ne ku pelek .JSON bi heman formata ku li jêr tê dîtin çêbikin. Navê pelê min "intents.json" ye.
Pelê JSON ji bo afirandina komek peyamên ku bikarhêner îhtîmal e ku ji komek bersivên têkildar re têkevin û nexşeyê tê bikar anîn. Di pelê de her ferhengek etîketek heye ku diyar dike ku her peyam ji kîjan komê ye.
Em ê vê agahiyê ji bo perwerdekirina a torê neural da ku hevokek peyvan wekî yek ji tagên pelê me kategorîze bikin.
Dûv re em dikarin tenê bersivek ji wan koman bistînin û ji bikarhêner re peyda bikin. Ger hûn wê bi etîket, bersiv û qalibên zêde pêşkêşî bikin dê chatbot çêtir û tevlihevtir be.
3. Barkirina daneyên JSON
Em ê bi barkirina daneya .json û hindek modulan dest pê bikin. Pelê your.json di heman pelrêça we de kom bikin Nivîsara Python. Daneyên me yên .json niha dê di guhêrbara daneyê de bêne tomar kirin.
4. Derxistina Daneyên
Naha dema wê ye ku em agahdariya ku em hewce ne ji pelê xweya JSON derxînin. Hemî qalibên, û hem jî çîna/taga ku ew tê de ne, hewce ne.
Di heman demê de em ê hewceyê navnîşek hemî şertên bêhempa yên di qalibên xwe de jî bin (ji ber sedemên ku em ê paşê rave bikin), ji ber vê yekê werin em hin navnîşên vala biafirînin da ku van nirxan bişopînin.
Naha em ê daneyên xwe yên JSON bigerin û agahdariya ku em hewce ne bistînin. Li şûna ku em wan wekî rêzan bin, em ê tokenizatorê nltk.word bikar bînin da ku her nimûneyê veguherînin navnîşek peyvan.
Dûv re, di navnîşa xweya docs_x de, em ê her nimûneyê, ligel etîketa wê ya têkildar, li navnîşa docs_y zêde bikin.
5. Çêkirina Peyv
Dîtina koka peyvekê wekî stemming tê zanîn. Mînakî, koka peyva "ew" dibe ku "ew" be, lê koka peyva "diqewime" dibe "biqewime".
Em ê vê teknîka stûnê bikar bînin da ku peyva modela xwe bişkînin û hewl bidin ku fêm bikin ka hevokan bi gelemperî tê çi wateyê. Ev kod dê bi tenê navnîşek yekta ya peyvên stemkirî çêbike ku dê di qonaxa paşîn a amadekirina daneya me de were bikar anîn.
6. Bag of Words
Wext e ku em li ser çenteyek peyvan biaxivin naha ku me daneyên xwe îthal kiriye û ferhengek bingehîn çêkiriye. Torên neural û algorîtmayên fêrbûna makîneyê, wekî ku em hemî pê dizanin, pêdivî bi têketina jimarî heye. Ji ber vê yekê navnîşa rêzika me wê qut neke. Pêdiviya me bi mekanîzmayek heye ku di hevokên me de jimareyan temsîl bike, li cihê ku çenteyek peyvan tê de ye.
Her hevok dê bi navnîşek dirêjahiya hejmara peyvan di ferhenga modela me de were destnîşan kirin. Her peyvek di ferhenga me de dê bi cîhek di navnîşê de were temsîl kirin. Heke di navnîşê de pozîsyona 1-ê ye, di daxuyaniya me de peyva xuya dike; heke 0 be, peyv di hevoka me de dernakeve.
Em jê re dibêjin torbeya peyvan, ji ber ku em nizanin rêza peyvan di hevokê de çawa xuya dibin; Tişta ku em dizanin ev e ku ew di ferhenga modela me de hene.
Ji bilî avakirina têketina xwe, divê em hilberîna xwe jî format bikin da ku tora neuralî jê fam bike. Em ê lîsteyên encamnameyê yên ku bi dirêjahiya hejmara etîket/etîketên di databasa xwe de ne, dişibihe kîsikek peyvan ava bikin. Di navnîşê de her cîhek etîketek/tagek yekta nîşan dide, û 1-yek li her yek ji wan deveran destnîşan dike ka kîjan etîket/tag tê temsîl kirin.
Di dawiyê de, em ê rêzikên NumPy bikar bînin da ku daneya perwerdehiyê û hilberîna xwe hilînin.
7. Pêşveçûna Modelê
Em amade ne ku em niha dest bi avakirina modelek û perwerdehiyê bikin ku me hemî daneyên xwe pêşdibistanê kir. Em ê ji bo armancên xwe torgilokek neuralî ya pir bingehîn a bi du qatên veşartî bikar bînin.
Armanca tora me dê ev be ku em li berhevokek peyvan binihêrin û wan li polê (yek ji tagên me ji pelê JSON) veqetînin. Em ê bi avakirina mîmariya modela xwe dest pê bikin. Bînin bîra xwe ku hûn dikarin bi hin hejmaran re bilîzin da ku modelek çêtir derxînin! Fêrbûna makirîn bi piranî li ser ceribandin û xeletiyê ye.
8. Model Training & Saving
Wext e ku em modela xwe li ser daneyên xwe perwerde bikin naha ku me ew saz kiriye! Em ê vê yekê bi berhevkirina daneyên xwe li modelê bi dest bixin. Hejmara serdemên ku em pêşkêşî dikin ew çend car e ku model dê di dema perwerdehiyê de bi heman daneyan re were xuyang kirin.
Gava ku me perwerdehiya wê qedand, em dikarin modelê li modela pelê hilînin. tflearn skrîptek e ku dikare di nivîsarên din de were bikar anîn.
9. Bikaranîna chatbotê
Naha hûn dikarin bi bota xwe re dest bi sohbetê bikin.
Feydeyên Chatbot
- Ji ber ku tê payîn ku bot 365 rojên salê, rojê 24 demjimêran, bêyî mûçe bixebitin, hebûna û leza reaksiyonê zêde bikin.
- Van botan amûrên bêkêmasî ne ji bo çareserkirina sê V-yên sereke yên daneya mezin: hejmûn, lez û cûrbecûr.
- Chatbots nermalava ku dikare were bikar anîn da ku li ser xerîdarên pargîdaniyek fêr bibe û têbigihîje.
- Ew xwedan hêzek bilind e ku ew lêçûnek lêçûnek erzan heye piştî ku feydeyên herî bilind hene.
- Serlêdanên Chatbot daneyan diafirînin ku dikarin ji bo analîtîk û pêşbînan werin parastin û bikar anîn.
Usecase
- Çareserkirina pirsên xerîdar
- Bersiva pirsên pir caran têne pirsîn
- Tayînkirina xerîdar ji bo tîmê piştgiriyê
- Bersivên xerîdar berhev dikin
- Pêşniyarên nû pêşniyar dikin
- Bi bazirganiya danûstendinê bikirin
- Alîkariya IT
- Booking razan
- Veguhestina drav
Xelasî
Chatbots, mîna teknolojiyên din ên AI-ê, dê werin bikar anîn da ku jêhatîyên mirovî zêde bikin û mirovan azad bikin da ku bêtir afirîner û xeyalî bin û bihêlin ku ew bêtir wext li ser karên stratejî û ne yên taktîkî derbas bikin.
Karsaz, karmend û xerîdar îhtîmal e ku di pêşerojek nêzîk de, dema ku AI bi pêşkeftina AI-ê re were berhev kirin, ji taybetmendiyên pêşkeftî yên chatbot-ê yên wekî pêşniyar û pêşbîniyên bileztir, û her weha gihîştina hêsan a konferansa vîdyoyê ya pênase bilind ji hundurê danûstendinê sûd werdigirin. Teknolojiya 5G.
Van û îmkanên din hîn jî têne lêkolîn kirin, lê her ku pêwendiya înternetê, AI, NLP, û fêrbûna makîneyê pêşve diçin, ew ê berbelavtir bibin.
Chwoo
Slav,
Spas ji bo vê bernameyê.
Pirsek min heye.
"bag_of_words" nayê diyarkirin. Ez nikarim vê xeletiyê fam bikim.
Hûn dikarin ji min re bibêjin ez çawa dikarim vê xeletiyê çareser bikim??
Spas ji bo vê bernameyê!! Roja te baş be
Jay
Ji kerema xwe berî ku beşa chatbot bikar bînin fonksiyonek zêde bikin:
////////////////////////////////////////////////// /////////////////////////////
def bag_of_words(s, words):
çente = [0 ji bo _ di rêzê de(len(peyv))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) ji bo peyva di s_words de]
ji bo xwe di s_words de:
ji bo i, w di hejmartin (peyvên):
heke w == se:
çente[i] = 1
return numpy.array(bag)
// Ew ê bê guman pirsgirêka we çareser bike. //
////////////////////////////////////////////////////////////////////////// // ///////////////////////////
Ez koda bêkêmasî bi we re parve dikim, ji ber vê yekê hûn ê wêneyek zelal jê bistînin.
////////////////////////////////////////////////// /////////
nltk îthal bikin
ji nltk.stem.lancaster import LancasterStemmer
stemmer = LancasterStemmer()
import numpy
import tflearn
import tensorflow
import random
json îthal bikin
tirşikê îthal bikin
bi open("intents.json") wekî pelê:
data = json.load(pel)
cerribanî:
bi vekirî("data.pickle", "rb") wek f:
peyv, etîket, perwerde, encam = pickle.load(f)
bê:
peyv = []
etîket = []
docs_x = []
docs_y = []
ji bo niyeta di daneyê de ["niyeta"]:
ji bo nimûne di mebestê de ["pattern"]:
wrds = nltk.word_tokenize(pattern)
words.extend(wrds)
docs_x.append(wrds)
docs_y.append(niyeta["etîket"])
heke mebest ["tag"] ne di etîketan de ye:
labels.append(niyeta["tag"])
peyv = [stemmer.stem(w.lower()) ji bo w di peyvan de eger w != “?”]
peyv = rêzkirin(lîste(set(peyv)))
etîket = rêzkirin(etîket)
perwerde = []
encam = []
out_empty = [0 ji bo _ di nav rêzê de (len(etîket))]
ji bo x, di enumerate de belge bikin(docs_x):
çente = []
wrds = [stemmer.stem(w.lower()) ji bo w di belgeyê de]
ji bo w di peyvan de:
heke w di wrds de:
bag.append(1)
wekîdi:
bag.append(0)
rêzika_derketinê = der_vala[:]
output_row[labels.index(docs_y[x])] = 1
training.append(bag)
output.append(output_row)
perwerde = numpy.array(perwerdekirin)
derketin = numpy.array(derketin)
bi vekirî("data.pickle", "wb") wek f:
pickle.dump((peyv, etîket, perwerde, encam), f)
tensorflow.reset_default_graph()
net = tflearn.input_data(shape=[Tune, len(perwerde[0])])
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, len(derketin[0]), çalakkirin=”softmax”)
net = tflearn.regression(net)
model = tflearn.DNN(net)
cerribanî:
model.load ("model.tflearn")
bê:
model.fit (perwerdekirin, encam, n_epoch=1500, batch_size=8, show_metric=Rast)
model.save ("model.tflearn")
def bag_of_words(s, words):
çente = [0 ji bo _ di rêzê de(len(peyv))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) ji bo peyva di s_words de]
ji bo xwe di s_words de:
ji bo i, w di hejmartin (peyvên):
heke w == se:
çente[i] = 1
return numpy.array(bag)
def chat():
çap bike ("Destpêk bi botê re biaxive (ji bo sekinandinê binivîse)!")
dema Rast e:
inp = ketin ("Tu:")
eger inp.lower() == "derketin":
şikesta
encam = model.predict([bag_ji_words(inp, words)])
results_index = numpy.argmax (encam)
tag = etîket[encamên_index]
ji bo tg di daneyan de ["niyeta"]:
eger tg['tag'] == nîşan:
bersiv = tg['bersiv']
çapkirin(random.hilbijartin(bersiv))
galgalî()
////////////////////////////////////////////////// ///////////////
Spas dikim,
Kodkirina xweş!
Lu
Slav,
Ma hûn dikarin di doza ku dixwazin di python-ê de chatbotek biafirînin ramanek pêvajoyê bidin min, lê agahdarî ji anketek li excelê tê wergirtin. Sipas ji were!