Table of Contents[Ferstopje][Toanje]
Stimoproppen wurde útfased yn it foardiel fan tekst en bylden yn 'e kommunikaasjesektor. Neffens in Facebook-enkête keapje mear as de helte fan de keapers leaver fan in bedriuw dat se mei prate kinne. Chatting is de nije sosjaal akseptabele modus fan kommunikaasje wurden.
It stelt bedriuwen yn steat om op elk momint en fan elke lokaasje te kommunisearjen mei har kliïnten. Chatbots winne hieltyd mear populariteit ûnder bedriuwen en klanten troch har gemak fan gebrûk en fermindere wachttiden.
Chatbots, of automatisearre konversaasjeprogramma's, jouwe kliïnten in mear oanpaste metoade om tagong te krijen ta tsjinsten fia in tekst-basearre ynterface. De nijste AI-oandreaune chatbots kinne in fraach werkenne (fraach, kommando, oarder, ensfh.) makke troch in persoan (as in oare bot, begjin) yn in spesifike omjouwing en reagearje passend (antwurd, aksje, ensfh.).
Yn dit berjocht sille wy gean oer wat chatbots binne, har foardielen, gebrûksgefallen, en hoe jo jo eigen meitsje kinne djip learen chatbot yn Python, ûnder oare.
Litte wy begjinne.
Dat, wat binne chatbots?
In chatbot wurdt faak oantsjutten as ien fan 'e meast avansearre en kânsrike foarmen fan minske-masine ynteraksje. Dizze digitale assistinten ferbetterje klantûnderfining troch streamlining fan ynteraksjes tusken minsken en tsjinsten.
Tagelyk jouwe se bedriuwen nije opsjes om it klantkontaktproses te optimalisearjen foar effisjinsje, wat konvinsjonele stipekosten kin besunigje.
Yn in notedop is it AI-basearre software dy't bedoeld is om te kommunisearjen mei minsken yn har natuerlike talen. Dizze chatbots ynteraksje faak fia audio of skreaune techniken, en se kinne maklik minsklike talen mimike om te ferbinen mei minsken op in minsklike manier.
Chatbots leare fan har ynteraksjes mei brûkers, en wurde oer de tiid realistysk en effisjinter. Se kinne in breed skala oan saaklike aktiviteiten omgean, lykas it autorisearjen fan útjeften, ynteraksje mei konsuminten online, en it generearjen fan leads.
Meitsje jo eigen djippe learende chatbot mei python
D'r binne in protte ûnderskate soarten chatbots op it mêd fan masine learen en AI. Guon chatbots binne firtuele assistinten, wylst oaren gewoan d'r binne om mei te petearjen, wylst oaren aginten foar klanttsjinst binne.
Jo hawwe wierskynlik guon fan 'e minsken sjoen dy't troch bedriuwen brûkt wurde om fragen te beantwurdzjen. Wy sille in lytse chatbot meitsje yn dizze tutorial om faak frege fragen te beantwurdzjen.
1. Ynstallearje pakketten
Us earste stap is om de folgjende pakketten te ynstallearjen.
2. Training Data
No is it tiid om út te finen hokker type ynformaasje wy ús chatbot moatte jaan. Wy hoege gjin grutte datasets te downloaden, om't dit in ienfâldige chatbot is.
Wy sille allinich de ynformaasje brûke dy't wy sels hawwe makke. Om effektyf mei de les te folgjen, moatte jo in .JSON-bestân generearje mei itselde formaat as de hjirûnder te sjen. Myn bestân hjit "intents.json."
It JSON-bestân wurdt brûkt om in set fan berjochten te meitsjen dy't de brûker wierskynlik ynfiere en yn kaart bringt nei in set relevante antwurden. Elk wurdboek yn it bestân hat in tag dy't identifisearret by hokker groep elk berjocht heart.
Wy sille dizze ynformaasje brûke om a neuronale netwurk om in sin mei wurden te kategorisearjen as ien fan 'e tags yn ús bestân.
Wy kinne dan gewoan in reaksje fan dy groepen nimme en it oan de brûker leverje. De chatbot sil better en yngewikkelder wêze as jo it oanbiede mei ekstra tags, antwurden en patroanen.
3. JSON gegevens laden
Wy sille begjinne mei it laden yn ús .json-gegevens en it ymportearjen fan guon modules. Meitsje jo.json-bestân yn deselde map as jo Python skript. Us .json-gegevens wurde no bewarre yn 'e gegevensfariabele.
4. Data Extraction
No is it tiid om de ynformaasje te ekstrahearje dy't wy nedich binne út ús JSON-bestân. Alle patroanen, lykas de klasse / tag dêr't se ta hearre, binne ferplicht.
Wy sille ek in list nedich hawwe fan alle unike termen yn ús patroanen (om redenen dy't wy letter sille útlizze), dus litte wy wat lege listen meitsje om dizze wearden by te hâlden.
No sille wy troch ús JSON-gegevens gean en de ynformaasje ophelje dy't wy nedich binne. Ynstee fan se as snaren te hawwen, sille wy nltk.word tokenizer brûke om elk patroan te transformearjen yn in list mei wurden.
Dan, yn ús docs_x list, sille wy elk patroan tafoegje, tegearre mei syn assosjearre tag, oan 'e docs_y list.
5. Wurd Stemming
It finen fan de woartel fan in wurd wurdt bekend as stemming. Bygelyks, de stam fan it wurd "dat"-stam kin "dat" wêze, wylst de stam fan it wurd "happening" "happen" kin wêze.
Wy sille dizze stemmingstechnyk brûke om de wurdskat fan ús model te trimmen en besykje út te finen wat sinnen yn 't algemien betsjutte. Dizze koade sil gewoan in unike list generearje mei stammende wurden dy't sille wurde brûkt yn 'e folgjende faze fan ús gegevenstarieding.
6. Bag of Words
It is tiid om te praten oer in tas mei wurden no't wy ús gegevens hawwe ymporteare en in stamde wurdskat generearre. neurale netwurken en masine learen algoritmen, lykas wy allegearre witte, easkje numerike ynfier. Dat ús stringlist sil it net snije. Wy hawwe in meganisme nedich om nûmers yn ús sinnen foar te stellen, dat is wêr't in tas mei wurden yn komt.
Elke frase sil wurde fertsjintwurdige troch in list fan 'e lingte fan it oantal termen yn' e wurdskat fan ús model. Elk wurd yn ús wurdskat wurdt fertsjintwurdige troch in plak yn 'e list. As de posysje yn 'e list in 1 is, komt it wurd foar yn ús ferklearring; as it in 0 is, komt it wurd net yn ús sin foar.
Wy neame it in bûse wurden, om't wy de folchoarder net witte wêryn't de wurden yn 'e sin steane; alles wat wy witte is dat se bestean yn 'e wurdskat fan ús model.
Neist it strukturearjen fan ús ynput, moatte wy ek ús útfier formatearje sadat it neurale netwurk it begrypt. Wy sille útfierlisten bouwe dy't de lingte binne fan it oantal labels/tags yn ús dataset, fergelykber mei in tas mei wurden. Elk plak yn 'e list stiet foar in unyk label / tag, en in 1 op ien fan dy lokaasjes jout oan hokker label / tag wurdt fertsjintwurdige.
Uteinlik sille wy NumPy-arrays brûke om ús trainingsgegevens en útfier op te slaan.
7. Model Untjouwing
Wy binne ree om te begjinnen mei it bouwen en trainen fan in model no't wy al ús gegevens foarbewurke hawwe. Wy sille in heul basisfeed-foarút neuraal netwurk brûke mei twa ferburgen lagen foar ús doelen.
It doel fan ús netwurk sil wêze om nei in samling wurden te sjen en se ta te jaan oan in klasse (ien fan ús tags út it JSON-bestân). Wy sille begjinne mei it fêststellen fan de arsjitektuer fan ús model. Hâld der rekken mei dat jo kinne boartsje mei guon fan 'e nûmers foar in komme mei in better model! Masine learen is meast basearre op trial and error.
8. Model Training & Saving
It is tiid om ús model te trainen op ús gegevens no't wy it ynsteld hawwe! Wy sille dit berikke troch ús gegevens oan te passen oan it model. It oantal epoken dat wy leverje is it oantal kearen dat it model sil wurde bleatsteld oan deselde gegevens tidens training.
Wy kinne it model opslaan yn it bestânsmodel as wy it klear binne mei training. tflearn is in skript dat brûkt wurde kin yn oare skripts.
9. Mei help fan in chatbot
No kinne jo begjinne te petearjen mei jo bot.
Foardielen fan Chatbot
- As bots wurde ferwachte te operearjen 365 dagen yn 't jier, 24 oeren deis, sûnder beteljen, fergrutsje beskikberens en reaksje snelheid.
- Dizze bots binne perfekte ark foar it oanpakken fan 'e trije wichtige Vs fan grutte gegevens: folume, snelheid en ferskaat.
- Chatbots binne software dy't kin wurde brûkt om te learen oer en begripe de konsuminten fan in bedriuw.
- It hat superieure krêft dat it hat in goedkeape ûnderhâld kosten neidat hawwen top foardielen.
- Chatbot-applikaasjes meitsje gegevens dy't kinne wurde bewarre en brûkt foar analytiken en prognosen.
Usecase
- Oplossen fan klantfragen
- Beäntwurdzje faak stelde fragen
- Klanten oanwize om team te stypjen
- Sammelje klant feedback
- Oanbefellende nije oanbiedingen
- Winkelje mei konversaasjehannel
- IT Helpdesk
- Booking akkommodaasjes
- Jild oerdracht
Konklúzje
Chatbots, lykas oare AI-technologyen, sille wurde brûkt om minsklike feardigens te fergrutsjen en minsken te befrijen om kreativer en ferbylding te wêzen troch se mear tiid te jaan oan strategyske ynstee fan taktyske taken.
Bedriuwen, meiwurkers en konsuminten sille wierskynlik profitearje fan ferbettere chatbot-funksjes lykas rappere oanbefellings en foarsizzings, lykas ek maklike tagong ta hege-definysje fideokonferinsjes fanút in petear, yn 'e heine takomst, as AI wurdt kombineare mei de ûntwikkeling fan 5G technology.
Dizze en oare mooglikheden wurde noch ûndersocht, mar as ynternetferbining, AI, NLP, en masine learen foarútgong, sille se mear foarkommen wurde.
Chwoo
Hoi,
Tankewol foar dit programma.
Ik haw in fraach.
"bag_of_words" is net definiearre. Ik kin net begripe dizze flater.
Kinne jo my fertelle hoe kin ik dizze flater oplosse ??
Tankewol foar dit programma!! Noch in moaie dei
Jay
Foegje asjebleaft in funksje ta foardat jo de seksje chatbot brûke:
////////////////////////////////////////////// ///////////////////////////
def bag_of_words(s, words):
tas = [0 foar _ yn berik(len(wurden))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) for word in s_words]
foar se yn s_wurden:
foar i, w yn enumerate(wurden):
as w == se:
tas[i] = 1
return numpy.array(bag)
// It sil jo probleem perfoarst oplosse. //
//////////////////////////////////////////////////// // ////////////////////////////
Ik diel de folsleine koade mei jo, sadat jo der in dúdlik byld fan krije.
////////////////////////////////////////////// /////////
ymportearje nltk
fan nltk.stem.lancaster ymportearje LancasterStemmer
stemmer = LancasterStemmer()
ymportearje numpy
ymportearje tflearn
ymportearje tensorflow
ymportearje willekeurich
ymportearje json
ymport Pickle
mei iepen ("intents.json") as triem:
data = json.load(file)
Besykje:
mei iepen(“data.pickle”, “rb”) as f:
words, labels, training, output = pickle.load(f)
útsein:
wurden = []
labels = []
docs_x = []
docs_y = []
foar yntinsje yn gegevens["bedoelingen"]:
foar patroan yn yntinsje["patroanen"]:
wrds = nltk.word_tokenize(pattern)
words.extend(wrds)
docs_x.append(wrds)
docs_y.append(intent["tag"])
as yntinsje["tag"] net yn labels:
labels.append(intent["tag"])
wurden = [stemmer.stem(w.lower()) foar w yn wurden as w != “?”]
words = sorted(list(set(wurden)))
labels = sortearre(labels)
training = []
útfier = []
out_empty = [0 foar _ yn berik(len(labels))]
foar x, doc yn enumerate (docs_x):
tas = []
wrds = [stemmer.stem(w.lower()) for w in doc]
foar w yn wurden:
as w yn wrds:
bag.append(1)
oars:
bag.append(0)
output_row = út_leech[:]
output_row[labels.index(docs_y[x])] = 1
training.append(bag)
output.append(output_row)
training = numpy.array(training)
output = numpy.array(útfier)
mei iepen(“data.pickle”, “wb”) as f:
pickle.dump((wurden, labels, training, útfier), 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)
Besykje:
model.load(“model.tflearn”)
útsein:
model.fit(training, output, n_epoch=1500, batch_size=8, show_metric=True)
model.save(“model.tflearn”)
def bag_of_words(s, words):
tas = [0 foar _ yn berik(len(wurden))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) for word in s_words]
foar se yn s_wurden:
foar i, w yn enumerate(wurden):
as w == se:
tas[i] = 1
return numpy.array(bag)
def chat():
print ("Begjin te praten mei de bot (type quit to stop)!")
wylst Wier:
inp = input(“Jo:”)
if inp.lower() == "ôfslute":
brekke
results = model.predict([bag_of_words(inp, wurden)])
results_index = numpy.argmax(results)
tag = labels[results_index]
foar tg yn gegevens["bedoelingen"]:
if tg['tag'] == tag:
antwurden = tg['antwurden']
print(random.choice(responses))
chat ()
////////////////////////////////////////////// //////////////
Dankewol,
Lokkich kodearje!
Lu
Hoi,
Kinne jo my in idee jaan oer it proses om út te fieren as jo in chatbot wolle meitsje yn python, mar de ynformaasje wurdt krigen fan in enkête yn excel. Dankewol!