Բառը[Թաքցնել][Ցուցադրում]
Ձայնային զանգերը աստիճանաբար դադարեցվում են՝ հօգուտ հաղորդակցության ոլորտում տեքստի և վիզուալների: Facebook-ի հարցման համաձայն՝ գնորդների կեսից ավելին նախընտրում է գնել այն ընկերությունից, որի հետ կարող են խոսել: Զրուցելը դարձել է հասարակության համար ընդունելի հաղորդակցության նոր եղանակ:
Այն բիզնեսին հնարավորություն է տալիս շփվել իրենց հաճախորդների հետ ցանկացած պահի և ցանկացած վայրից: Չաթ-բոտերը գնալով ավելի մեծ ճանաչում են ձեռք բերում ընկերությունների և հաճախորդների շրջանում՝ շնորհիվ դրանց օգտագործման հեշտության և սպասման ժամանակի կրճատման:
Chatbots-ը կամ խոսակցական ավտոմատացված ծրագրերը հաճախորդներին տրամադրում են ավելի հարմարեցված մեթոդ՝ ծառայություններ մուտք գործելու համար տեքստային ինտերֆեյսի միջոցով: Նորագույն AI-ի վրա աշխատող չաթ-բոթերը կարող են ճանաչել անձի կողմից արված հարցումը (հարց, հրաման, պատվեր և այլն) կոնկրետ միջավայրում և համապատասխան կերպով պատասխանել (պատասխան, գործողություն և այլն):
Այս գրառման մեջ մենք կքննարկենք, թե ինչ են չաթ-բոտերը, դրանց առավելությունները, օգտագործման դեպքերը և ինչպես ստեղծել ձեր սեփականը: խորը ուսուցում chatbot Python-ում, ի թիվս այլ բաների:
Եկեք սկսենք.
Այսպիսով, ինչ են չաթ բոտերը:
Չաթ-բոտը հաճախ համարվում է մարդ-մեքենա փոխազդեցության ամենաառաջադեմ և խոստումնալից ձևերից մեկը: Այս թվային օգնականները բարելավում են հաճախորդների փորձը՝ պարզեցնելով մարդկանց և ծառայությունների միջև փոխգործակցությունը:
Միաժամանակ, նրանք բիզնեսին տրամադրում են նոր տարբերակներ՝ հաճախորդների հետ շփման գործընթացը արդյունավետության համար օպտիմալացնելու համար, ինչը կարող է կրճատել սովորական աջակցության ծախսերը:
Մի խոսքով, դա արհեստական ինտելեկտի վրա հիմնված ծրագրաշար է, որը նախատեսված է մարդկանց հետ հաղորդակցվելու իրենց բնական լեզուներով: Այս չաթ-բոտերը հաճախ փոխազդում են աուդիո կամ գրավոր տեխնիկայի միջոցով, և նրանք հեշտությամբ կարող են նմանակել մարդկային լեզուները՝ մարդկանց հետ կապվելու համար մարդկանց նման:
Չաթ-բոտերը սովորում են օգտատերերի հետ իրենց շփումներից՝ ժամանակի ընթացքում դառնալով ավելի իրատեսական և արդյունավետ: Նրանք կարող են զբաղվել բիզնեսի գործունեության լայն շրջանակով, ինչպիսիք են ծախսերի թույլտվությունը, սպառողների հետ առցանց շփումը և առաջատարների առաջացումը:
Ստեղծեք ձեր սեփական խորը ուսուցման չաթբոտը python-ով
Ոլորտում կան չաթ-բոտերի շատ տարբեր տեսակներ Machine Learning և ԱԻ. Որոշ չաթ-բոտներ վիրտուալ օգնականներ են, մինչդեռ մյուսները պարզապես այնտեղ են զրուցելու համար, մինչդեռ մյուսները հաճախորդների սպասարկման գործակալներ են:
Դուք հավանաբար տեսել եք նրանցից մի քանիսին, ովքեր աշխատում են բիզնեսի կողմից՝ հարցերին պատասխանելու համար: Այս ձեռնարկում մենք կստեղծենք փոքրիկ չաթբոտ՝ հաճախակի տրվող հարցումներին պատասխանելու համար:
1. Փաթեթների տեղադրում
Մեր առաջին քայլը հետևյալ փաթեթների տեղադրումն է.
2. Վերապատրաստման տվյալներ
Այժմ ժամանակն է պարզելու, թե ինչ տեսակի տեղեկատվություն է մեզ անհրաժեշտ՝ տրամադրելու մեր չաթբոտը: Մենք կարիք չունենք ներբեռնելու որևէ մեծ տվյալների հավաքածու, քանի որ սա պարզ չաթ-բոտ է:
Մենք կօգտագործենք միայն այն տեղեկատվությունը, որը մենք ինքներս ենք ստեղծել: Դասին արդյունավետ հետևելու համար դուք պետք է ստեղծեք .JSON ֆայլ նույն ձևաչափով, ինչ ստորև ներկայացվածը: Իմ ֆայլը կոչվում է «intents.json»:
JSON ֆայլն օգտագործվում է հաղորդագրությունների մի շարք ստեղծելու համար, որոնք օգտատերը, ամենայն հավանականությամբ, մուտքագրելու և քարտեզագրելու է համապատասխան պատասխանների մի շարք: Ֆայլի յուրաքանչյուր բառարան ունի պիտակ, որը ցույց է տալիս, թե որ խմբին է պատկանում յուրաքանչյուր հաղորդագրություն:
Մենք կօգտագործենք այս տեղեկատվությունը մարզելու համար a նյարդային ցանց բառերի արտահայտությունը դասակարգելու համար մեր ֆայլի պիտակներից մեկը:
Այնուհետև մենք կարող ենք պարզապես պատասխան վերցնել այդ խմբերից և տրամադրել այն օգտվողին: Չաթբոտը ավելի լավ և բարդ կլինի, եթե այն առաջարկեք լրացուցիչ պիտակներ, պատասխաններ և նախշեր:
3. JSON տվյալների բեռնում
Մենք կսկսենք բեռնել մեր .json տվյալները և ներմուծել որոշ մոդուլներ: Հավաքեք your.json ֆայլը նույն գրացուցակում, ինչ ձեր Python սցենար. Մեր .json տվյալները այժմ կպահվեն տվյալների փոփոխականում:
4. Տվյալների արդյունահանում
Այժմ ժամանակն է հանել մեզ անհրաժեշտ տեղեկատվությունը մեր JSON ֆայլից: Բոլոր օրինաչափությունները, ինչպես նաև դասը/պիտակը, որին դրանք պատկանում են, պարտադիր են:
Մեզ նաև անհրաժեշտ կլինի մեր օրինաչափությունների բոլոր եզակի տերմինների ցանկը (պատճառներով, որոնք մենք կբացատրենք ավելի ուշ), այնպես որ եկեք ստեղծենք մի քանի դատարկ ցուցակներ՝ հետևելու այդ արժեքներին:
Այժմ մենք կշրջենք մեր JSON-ի տվյալները և կվերցնենք մեզ անհրաժեշտ տեղեկատվությունը: Դրանք որպես տողեր ունենալու փոխարեն՝ մենք կօգտագործենք nltk.word tokenizer՝ յուրաքանչյուր օրինաչափություն բառերի ցանկի վերածելու համար:
Այնուհետև, մեր docs_x ցուցակում, մենք կավելացնենք յուրաքանչյուր օրինաչափություն, դրա հետ կապված պիտակի հետ միասին, docs_y ցուցակում:
5. Բառի բխում
Բառի արմատը գտնելը հայտնի է որպես բխող: Օրինակ, «դա» բառի հոլովը կարող է լինել «դա», մինչդեռ «պատահում» բառի բունը կարող է լինել «պատահել»:
Մենք կօգտագործենք այս արմատավորման տեխնիկան՝ կրճատելու մեր մոդելի բառապաշարը և կփորձենք պարզել, թե ընդհանուր առմամբ ինչ են ենթադրում նախադասությունները: Այս կոդը պարզապես կստեղծի բխող բառերի եզակի ցուցակ, որոնք կօգտագործվեն մեր տվյալների պատրաստման հաջորդ փուլում:
6. Բառերի տոպրակ
Ժամանակն է խոսել մի պարկ բառերի մասին հիմա, երբ մենք ներմուծել ենք մեր տվյալները և ստեղծել ենք բխող բառապաշար: Նյարդային ցանցեր իսկ մեքենայական ուսուցման ալգորիթմները, ինչպես բոլորս գիտենք, պահանջում են թվային մուտքագրում: Այսպիսով, մեր լարային ցանկը չի կտրի այն: Մեզ անհրաժեշտ է մեխանիզմ՝ թվերը մեր նախադասություններում ներկայացնելու համար, որտեղ բառերի պարկ է գալիս:
Յուրաքանչյուր արտահայտություն կներկայացվի մեր մոդելի բառապաշարի տերմինների քանակի երկարության ցանկով: Մեր բառապաշարի յուրաքանչյուր բառ կներկայացվի ցուցակում տեղով: Եթե ցուցակում դիրքը 1 է, ապա բառը հայտնվում է մեր հայտարարության մեջ. եթե դա 0 է, բառը մեր նախադասության մեջ չի հայտնվում:
Մենք այն անվանում ենք բառերի պարկ, քանի որ չգիտենք, թե ինչ հաջորդականությամբ են բառերը հայտնվում արտահայտության մեջ. մենք միայն գիտենք, որ դրանք կան մեր մոդելի բառապաշարում:
Բացի մեր մուտքի կառուցվածքը, մենք պետք է նաև ձևաչափենք մեր ելքը, որպեսզի նեյրոնային ցանցը հասկանա այն: Մենք կստեղծենք ելքային ցուցակներ, որոնք կկազմեն մեր տվյալների հավաքածուի պիտակների/պիտակների թվի երկարությունը, որը նման է բառերի պարկի: Ցանկի յուրաքանչյուր տեղ ներկայացնում է եզակի պիտակ/պիտակ, և այդ վայրերից որևէ մեկում 1-ը ցույց է տալիս, թե որ պիտակը/պիտակը է ներկայացված:
Վերջապես, մենք կօգտագործենք NumPy զանգվածները՝ մեր ուսուցման տվյալները և արդյունքները պահելու համար:
7. Մոդելի մշակում
Մենք պատրաստ ենք սկսել մոդելի կառուցումը և ուսուցումը հիմա, երբ նախապես մշակել ենք մեր բոլոր տվյալները: Մեր նպատակներին հասնելու համար մենք կօգտագործենք շատ հիմնական նեյրոնային ցանց՝ երկու թաքնված շերտերով:
Մեր ցանցի նպատակն է լինելու դիտարկել բառերի հավաքածուն և դրանք վերագրել դասին (JSON ֆայլից մեր պիտակներից մեկը): Մենք կսկսենք հաստատելով մեր մոդելի ճարտարապետությունը: Հիշեք, որ դուք կարող եք խաղալ որոշ թվերի հետ՝ ավելի լավ մոդել ստեղծելու համար: մեքենա ուսուցման հիմնականում հիմնված է փորձության և սխալի վրա:
8. Մոդելների ուսուցում և խնայողություն
Ժամանակն է սովորեցնել մեր մոդելը մեր տվյալների վրա հիմա, երբ մենք այն ստեղծեցինք: Մենք դրան կհասնենք՝ մեր տվյալները մոդելին համապատասխանեցնելով: Մեր տրամադրած դարաշրջանների քանակն այն է, թե քանի անգամ է մոդելը ենթարկվելու նույն տվյալներին վերապատրաստման ընթացքում:
Մենք կարող ենք մոդելը պահել ֆայլի մոդելում, երբ ավարտենք դրա ուսուցումը: tflearn-ը սկրիպտ է, որը կարող է օգտագործվել այլ սկրիպտներում:
9. Օգտագործելով չաթ բոտ
Այժմ դուք կարող եք սկսել զրուցել ձեր բոտի հետ:
Chatbot-ի առավելությունները
- Քանի որ ակնկալվում է, որ բոտերը կաշխատեն տարին 365 օր, օրը 24 ժամ, առանց վարձատրության, ավելացնում են հասանելիությունը և արձագանքման արագությունը:
- Այս բոտերը կատարյալ գործիքներ են մեծ տվյալների երեք հիմնական ընդդեմների դեմ պայքարելու համար՝ ծավալ, արագություն և բազմազանություն:
- Chatbots-ը ծրագրաշար է, որը կարող է օգտագործվել ընկերության սպառողների մասին իմանալու և հասկանալու համար:
- Այն ունի գերազանց հզորություն, որ ունի էժան սպասարկման ծախս՝ բարձր առավելություններից հետո:
- Chatbot հավելվածները ստեղծում են տվյալներ, որոնք կարող են պահպանվել և օգտագործվել վերլուծությունների և կանխատեսումների համար:
Օգտագործման դեպքը
- Հաճախորդների հարցումների լուծում
- Պատասխանելով հաճախ տրվող հարցերին
- Հաճախորդներին աջակցող թիմին նշանակելը
- Հաճախորդների կարծիքների հավաքագրում
- Առաջարկել նոր առաջարկներ
- Գնեք խոսակցական առևտրով
- IT Helpdesk
- Տեղավորումների ամրագրում
- Դրամական փոխանցում
Եզրափակում
Չաթ-բոտերը, ինչպես և այլ արհեստական ինտելեկտի տեխնոլոգիաները, կօգտագործվեն մարդկային հմտությունները բարձրացնելու և մարդկանց ավելի ստեղծագործ և երևակայություն հաղորդելու համար՝ թույլ տալով նրանց ավելի շատ ժամանակ հատկացնել ռազմավարական, այլ ոչ թե մարտավարական առաջադրանքների վրա:
Գործարարները, աշխատակիցները և սպառողները, հավանաբար, կշահեն չաթ-բոտի ընդլայնված գործառույթներից, ինչպիսիք են ավելի արագ առաջարկություններն ու կանխատեսումները, ինչպես նաև խոսակցության ներսում բարձր հստակությամբ տեսահամաժողովի հեշտ հասանելիությունը, մոտ ապագայում, երբ AI-ն զուգակցվի զարգացման հետ: 5G տեխնոլոգիա.
Այս և այլ հնարավորությունները դեռ ուսումնասիրվում են, բայց քանի որ ինտերնետ կապը, AI-ն, NLP-ն և մեքենայական ուսուցումը առաջընթաց են ապրում, դրանք ավելի տարածված կդառնան:
Չվու
Բարեւ,
Շնորհակալություն այս ծրագրի համար:
Ես հարց ունեմ.
«բառերի_պայուսակ»-ը սահմանված չէ: Ես չեմ կարող հասկանալ այս սխալը:
Կարո՞ղ եք ինձ ասել, թե ինչպես կարող եմ լուծել այս սխալը:
Շնորհակալություն այս ծրագրի համար!! Լավ օր եմ մաղթում
ճայ
Խնդրում ենք ավելացնել գործառույթ՝ նախքան չաթ բոտի բաժինը օգտագործելը.
/////////////////////////////////////////////////////////////////// ////////////////////////////
def bag_of_words(s, words):
պայուսակ = [0 համար _ տիրույթում (len(բառեր))]
s_words = nltk.word_tokenize(ներ)
s_words = [stemmer.stem(word.lower()) բառի համար s_words]
համար s_words:
համար i, w innumerate(բառեր):
եթե w == se:
պայուսակ[i] = 1
վերադարձ numpy.array(bag)
// Դա անպայման կլուծի ձեր հարցը: //
/////////////////////////////////////////////////////////////////// /////////////////////////
Ես ձեզ հետ կիսում եմ ամբողջական կոդը, այնպես որ դուք դրա մասին հստակ պատկերացում կունենաք:
/////////////////////////////////////////////////////////////////// /////////
ներմուծել nltk
nltk.stem.lancaster ներմուծման LancasterStemmer-ից
stemmer = LancasterStemmer ()
ներկրում է անհարթ
ներմուծել tflearn
ներմուծել tensorflow
ներմուծումը պատահական
ներմուծել json
ներմուծել թթու
open(“intents.json”) որպես ֆայլ՝
տվյալներ = json.load (ֆայլ)
փորձեք.
open(“data.pickle”, “rb”)-ով որպես f:
բառեր, պիտակներ, ուսուցում, արդյունք = pickle.load(f)
բացառությամբ `
բառեր = []
պիտակներ = []
փաստաթղթեր_x = []
docs_y = []
տվյալների մեջ մտադրության համար [«intents»]:
մտադրության օրինակի համար [«օրինաչափություններ»].
wrds = nltk.word_tokenize(օրինակ)
words.extend(wrds)
docs_x.append(wrds)
docs_y.append(intent[«tag»])
եթե մտադրությունը [«պիտակ»] պիտակների մեջ չէ.
labels.append(intent[“tag”])
բառեր = [stemmer.stem(w.lower()) w-ի համար բառերով, եթե w != «?»]
բառեր = տեսակավորված (ցուցակ (հավաքածու (բառեր)))
պիտակներ = տեսակավորված (պիտակներ)
վերապատրաստում = []
ելք = []
out_empty = [0-ի համար _ տիրույթում (len(պիտակներ))]
x-ի համար, doc innumerate (docs_x):
պայուսակ = []
wrds = [stemmer.stem(w.lower()) w-ի համար փաստաթղթում]
w-ի համար բառերով.
եթե w բառերով:
bag.append(1)
այլ:
bag.append(0)
ելքային_տող = դուրս_դատարկ[:]
output_row[labels.index(docs_y[x])] = 1
training.append(պայուսակ)
output.append(output_row)
ուսուցում = numpy.array (մարզում)
output = numpy.array (ելք)
open(“data.pickle”, “wb”)-ով որպես f:
pickle.dump((բառեր, պիտակներ, ուսուցում, արդյունք), f)
tensorflow.reset_default_graph()
net = tflearn.input_data(shape=[Ոչ մի, len(ուսուցում[0])])
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, len(ելք[0]), ակտիվացում=”softmax”)
net = tflearn.regression(net)
մոդել = tflearn.DNN(net)
փորձեք.
model.load («model.tflearn»)
բացառությամբ `
model.fit(training, output, n_epoch=1500, batch_size=8, show_metric=True)
model.save («model.tflearn»)
def bag_of_words(s, words):
պայուսակ = [0 համար _ տիրույթում (len(բառեր))]
s_words = nltk.word_tokenize(ներ)
s_words = [stemmer.stem(word.lower()) բառի համար s_words]
համար s_words:
համար i, w innumerate(բառեր):
եթե w == se:
պայուսակ[i] = 1
վերադարձ numpy.array(bag)
def chat ():
տպել («Սկսեք խոսել բոտի հետ (մուտքագրեք quit to stop)!»)
իսկ ճշմարիտ.
inp = մուտք («Դուք:»)
if inp.lower() == «դուրս գալ»:
կոտրել
արդյունքներ = model.predict([բառերի_պայուսակ(inp, բառեր)])
results_index = numpy.argmax (արդյունքներ)
պիտակ = պիտակներ[արդյունքների_ինդեքս]
tg տվյալների համար [«intents»]:
եթե tg['tag'] == պիտակ:
պատասխաններ = tg['պատասխաններ']
տպել (պատահական. ընտրություն (պատասխաններ))
զրույց ()
/////////////////////////////////////////////////////////////////// ///////////////
Thank you,
Ուրախ կոդավորում:
Lu
Բարեւ,
Կարո՞ղ եք ինձ պատկերացում կազմել այն գործընթացի մասին, որը պետք է իրականացվի python-ում չաթ-բոտ ստեղծելու ցանկության դեպքում, սակայն տեղեկատվությունը ստացվում է excel-ի հարցումից: Շնորհակալություն!