სარჩევი[დამალვა][ჩვენება]
ხმოვანი ზარები ეტაპობრივად იხსნება კომუნიკაციის სექტორში ტექსტისა და ვიზუალის სასარგებლოდ. Facebook-ის გამოკითხვის თანახმად, მყიდველების ნახევარზე მეტს ურჩევნია იყიდოს კომპანია, რომელთანაც საუბარი შეეძლება. ჩატი გახდა კომუნიკაციის ახალი სოციალურად მისაღები საშუალება.
ეს საშუალებას აძლევს ბიზნესს დაუკავშირდეს თავის კლიენტებს ნებისმიერ დროს და ნებისმიერ ადგილას. ჩატბოტები სულ უფრო მეტ პოპულარობას იძენს კომპანიებსა და მომხმარებლებს შორის მათი გამოყენების სიმარტივის და შემცირებული ლოდინის დროის გამო.
ჩეთბოტები, ან ავტომატიზირებული სასაუბრო პროგრამები, კლიენტებს უზრუნველჰყოფენ სერვისებზე წვდომის უფრო მორგებულ მეთოდს ტექსტზე დაფუძნებული ინტერფეისის საშუალებით. AI-ზე მომუშავე უახლეს ჩატბოტებს შეუძლიათ ამოიცნონ შეკითხვა (კითხვა, ბრძანება, შეკვეთა და ა.შ.) კონკრეტულ გარემოში პიროვნების (ან სხვა ბოტის, საწყისი) მიერ გაკეთებული და სათანადო რეაგირება (პასუხი, მოქმედება და ა.შ.).
ამ პოსტში ჩვენ განვიხილავთ რა არის ჩეთბოტები, მათი უპირატესობები, გამოყენების შემთხვევები და როგორ გააკეთოთ საკუთარი ღრმა სწავლება ჩატბოტი პითონში, სხვა საკითხებთან ერთად.
დავიწყოთ.
მაშ, რა არის ჩატბოტები?
ჩატბოტს ხშირად მოიხსენიებენ, როგორც ადამიანსა და მანქანას ურთიერთქმედების ერთ-ერთ ყველაზე მოწინავე და პერსპექტიულ ფორმას. ეს ციფრული ასისტენტები აუმჯობესებენ მომხმარებლის გამოცდილებას ადამიანებსა და სერვისებს შორის ურთიერთქმედების გამარტივებით.
ამავდროულად, ისინი აწვდიან ბიზნესს ახალ ვარიანტებს მომხმარებელთან კონტაქტის პროცესის ოპტიმიზაციისთვის ეფექტურობისთვის, რამაც შეიძლება შეამციროს ჩვეულებრივი მხარდაჭერის ხარჯები.
მოკლედ, ეს არის AI-ზე დაფუძნებული პროგრამული უზრუნველყოფა, რომელიც მიზნად ისახავს ადამიანებთან კომუნიკაციას მათ ბუნებრივ ენებზე. ეს ჩატბოტები ხშირად ურთიერთობენ აუდიო ან წერილობითი ტექნიკის საშუალებით და მათ შეუძლიათ ადვილად მიბაძონ ადამიანის ენებს, რათა დაუკავშირდნენ ადამიანებთან ადამიანის მსგავსი გზით.
ჩატბოტები სწავლობენ მომხმარებლებთან ურთიერთქმედებიდან, რაც დროთა განმავლობაში უფრო რეალისტური და ეფექტური ხდება. მათ შეუძლიათ გაუმკლავდნენ საქმიანი აქტივობების ფართო სპექტრს, როგორიცაა ხარჯების ავტორიზაცია, მომხმარებლებთან ურთიერთობა ონლაინ და რეკვიზიტების გენერირება.
შექმენით თქვენი საკუთარი ღრმა სწავლის ჩატბოტი პითონით
არსებობს მრავალი განსხვავებული ტიპის ჩატბოტები სფეროში მანქანა სწავლის და AI. ზოგიერთი ჩატბოტი ვირტუალური ასისტენტია, ზოგი კი მხოლოდ სასაუბროდ არის, ზოგი კი მომხმარებელთა მომსახურების აგენტია.
თქვენ ალბათ გინახავთ ზოგიერთი, ვინც დასაქმებულია ბიზნესის მიერ შეკითხვებზე პასუხის გასაცემად. ჩვენ შევქმნით პატარა ჩეთბოტს ამ სახელმძღვანელოში ხშირად მოთხოვნილ შეკითხვებზე პასუხის გასაცემად.
1. პაკეტების დაყენება
ჩვენი პირველი ნაბიჯი არის შემდეგი პაკეტების დაყენება.
2. ტრენინგის მონაცემები
ახლა დროა გავარკვიოთ, რა ტიპის ინფორმაცია დაგვჭირდება ჩვენი ჩატბოტის მიწოდებისთვის. ჩვენ არ გვჭირდება რაიმე დიდი მონაცემთა ნაკრების ჩამოტვირთვა, რადგან ეს არის მარტივი ჩეთბოტი.
ჩვენ გამოვიყენებთ მხოლოდ იმ ინფორმაციას, რომელიც ჩვენ თვითონ შევქმენით. იმისათვის, რომ ეფექტურად გაგრძელდეს გაკვეთილი, თქვენ უნდა შექმნათ .JSON ფაილი იმავე ფორმატით, როგორც ქვემოთ ნაჩვენები. ჩემს ფაილს ჰქვია "intents.json".
JSON ფაილი გამოიყენება შეტყობინებების ნაკრების შესაქმნელად, რომელსაც მომხმარებელი სავარაუდოდ შეაქვს და დააფიქსირებს შესაბამის პასუხებს. ფაილში თითოეულ ლექსიკონს აქვს ტეგი, რომელიც განსაზღვრავს რომელ ჯგუფს ეკუთვნის თითოეული შეტყობინება.
ჩვენ გამოვიყენებთ ამ ინფორმაციას ა ნერვული ქსელის სიტყვების ფრაზის კატეგორიზაცია ჩვენს ფაილში ერთ-ერთ ტეგად.
ჩვენ შეგვიძლია უბრალოდ მივიღოთ პასუხი ამ ჯგუფებიდან და მივაწოდოთ ის მომხმარებელს. ჩატბოტი უკეთესი და რთული იქნება, თუ მას შესთავაზებთ დამატებით ტეგებს, პასუხებს და შაბლონებს.
3. JSON მონაცემთა ჩატვირთვა
ჩვენ დავიწყებთ ჩვენს .json მონაცემების ჩატვირთვით და ზოგიერთი მოდულის იმპორტით. შეაგროვეთ your.json ფაილი იმავე დირექტორიაში, სადაც თქვენი პითონის სკრიპტი. ჩვენი .json მონაცემები ახლა შეინახება მონაცემთა ცვლადში.
4. მონაცემთა ამოღება
ახლა დროა გამოვიტანოთ საჭირო ინფორმაცია ჩვენი JSON ფაილიდან. საჭიროა ყველა ნიმუში, ისევე როგორც კლასი/ტეგი, რომელსაც ისინი მიეკუთვნებიან.
ჩვენ ასევე დაგვჭირდება ჩვენს შაბლონებში არსებული ყველა უნიკალური ტერმინის სია (მიზეზების გამო, რომლებსაც მოგვიანებით ავხსნით), ასე რომ, მოდით შევქმნათ რამდენიმე ცარიელი სია, რომ თვალყური ადევნოთ ამ მნიშვნელობებს.
ახლა ჩვენ გადავხედავთ ჩვენს JSON მონაცემებს და მოვიპოვებთ საჭირო ინფორმაციას. იმის ნაცვლად, რომ ისინი სტრიქონებს გვქონდეს, ჩვენ გამოვიყენებთ nltk.word ტოკენიზერს თითოეული ნიმუშის სიტყვების სიაში გადასაყვანად.
შემდეგ, ჩვენს docs_x სიაში, ჩვენ დავამატებთ თითოეულ შაბლონს, მასთან დაკავშირებულ ტეგთან ერთად, docs_y სიაში.
5. სიტყვის ფუძე
სიტყვის ფესვის პოვნა ცნობილია როგორც ფუძე. მაგალითად, სიტყვა "ეს" ფუძის ფუძე შეიძლება იყოს "ეს", ხოლო სიტყვის "ხდება" შეიძლება იყოს "ხდება".
ჩვენ გამოვიყენებთ ამ ფუძემდებლობის ტექნიკას, რათა შევამციროთ ჩვენი მოდელის ლექსიკა და შევეცადოთ გაერკვნენ, თუ რას გულისხმობს წინადადებები ზოგადად. ეს კოდი უბრალოდ გამოიმუშავებს ფუძემდებლური სიტყვების უნიკალურ სიას, რომლებიც გამოყენებული იქნება ჩვენი მონაცემების მომზადების შემდეგ ეტაპზე.
6. სიტყვების ტომარა
დროა ვისაუბროთ უამრავ სიტყვაზე ახლა, როდესაც ჩვენ შემოვიტანეთ ჩვენი მონაცემები და შევქმენით ფუძემდებლური ლექსიკა. Ნეირონული ქსელები და მანქანათმცოდნეობის ალგორითმები, როგორც ყველამ ვიცით, მოითხოვს რიცხვით შეყვანას. ასე რომ, ჩვენი სიმებიანი სია არ აპირებს მის შემცირებას. ჩვენ გვჭირდება მექანიზმი, რომელიც ასახავს რიცხვებს ჩვენს წინადადებებში, სადაც სიტყვების ტომარა მოდის.
თითოეული ფრაზა წარმოდგენილი იქნება ჩვენი მოდელის ლექსიკონში ტერმინების სიგრძის სიგრძით. თითოეული სიტყვა ჩვენს ლექსიკონში წარმოდგენილი იქნება სიაში ადგილით. თუ პოზიცია სიაში არის 1, სიტყვა გამოჩნდება ჩვენს განცხადებაში; თუ ეს არის 0, სიტყვა არ ჩანს ჩვენს წინადადებაში.
ჩვენ მას სიტყვების ტომარას ვუწოდებთ, რადგან არ ვიცით, რა თანმიმდევრობით ჩნდება სიტყვები ფრაზაში; მხოლოდ ის ვიცით, რომ ისინი არსებობენ ჩვენი მოდელის ლექსიკაში.
ჩვენი შეყვანის სტრუქტურირების გარდა, ჩვენ ასევე უნდა დავაფორმოთ ჩვენი გამომავალი ისე, რომ ნერვულმა ქსელმა გაიგოს იგი. ჩვენ შევქმნით გამომავალ სიებს, რომლებიც შეესაბამება ჩვენს მონაცემთა ბაზაში ეტიკეტების/ტეგების რაოდენობის სიგრძეს, სიტყვების ტომრის მსგავსი. სიაში თითოეული ადგილი წარმოადგენს უნიკალურ ლეიბლს/ტეგს, ხოლო 1 რომელიმე ამ ადგილას მიუთითებს, რომელი ლეიბლი/ტეგია წარმოდგენილი.
და ბოლოს, ჩვენ გამოვიყენებთ NumPy მასივებს ჩვენი ტრენინგის მონაცემებისა და გამოსავლის შესანახად.
7. მოდელის შემუშავება
ჩვენ მზად ვართ დავიწყოთ მოდელის შექმნა და ტრენინგი ახლა, როდესაც წინასწარ დავამუშავეთ ყველა ჩვენი მონაცემები. ჩვენ გამოვიყენებთ ძალიან საბაზისო მიწოდების ნერვულ ქსელს ორი ფარული ფენით ჩვენი მიზნებისთვის.
ჩვენი ქსელის მიზანი იქნება შევხედოთ სიტყვების კრებულს და მივაკუთვნოთ ისინი კლასს (ერთ-ერთი ჩვენი ტეგი JSON ფაილიდან). ჩვენ დავიწყებთ ჩვენი მოდელის არქიტექტურის ჩამოყალიბებით. გაითვალისწინეთ, რომ თქვენ შეგიძლიათ ითამაშოთ ზოგიერთი ნომრით უკეთესი მოდელის შესაქმნელად! მანქანა სწავლის ძირითადად დაფუძნებულია ცდასა და შეცდომებზე.
8. მოდელის სწავლება და დაზოგვა
დროა მოვამზადოთ ჩვენი მოდელი ჩვენს მონაცემებზე ახლა, როცა დავაყენეთ იგი! ჩვენ ამას მივაღწევთ ჩვენი მონაცემების მოდელზე მორგებით. ჩვენ მიერ მოწოდებული ეპოქების რაოდენობა არის იმის რაოდენობა, თუ რამდენჯერ იქნება მოდელი ერთსა და იმავე მონაცემებზე სწავლის დროს.
ჩვენ შეგვიძლია შევინახოთ მოდელი ფაილის მოდელში, როდესაც დავასრულებთ მას ტრენინგს. tflearn არის სკრიპტი, რომელიც შეიძლება გამოყენებულ იქნას სხვა სკრიპტებში.
9. ჩატბოტის გამოყენება
ახლა თქვენ შეგიძლიათ დაიწყოთ საუბარი თქვენს ბოტთან.
Chatbot-ის უპირატესობები
- როგორც მოსალოდნელია, ბოტები იმუშავებენ წელიწადში 365 დღე, დღეში 24 საათის განმავლობაში, ანაზღაურების გარეშე, გაზრდის ხელმისაწვდომობას და რეაქციის სიჩქარეს.
- ეს ბოტები შესანიშნავი ინსტრუმენტებია დიდი მონაცემების სამი ძირითადი წინააღმდეგ: მოცულობა, სიჩქარე და მრავალფეროვნება.
- Chatbots არის პროგრამული უზრუნველყოფა, რომელიც შეიძლება გამოყენებულ იქნას კომპანიის მომხმარებლების გასაგებად და გასაგებად.
- მას აქვს უმაღლესი სიმძლავრე, რომ მას აქვს იაფი შენარჩუნების ღირებულება უმაღლესი სარგებლის მიღების შემდეგ.
- Chatbot Applications ქმნიან მონაცემებს, რომლებიც შეიძლება იყოს შენახული და გამოყენებული ანალიტიკისთვის და პროგნოზებისთვის.
Გამოყენების შემთხვევაში
- მომხმარებელთა შეკითხვების გადაჭრა
- ხშირად დასმულ კითხვებზე პასუხის გაცემა
- კლიენტების დანიშვნა მხარდაჭერის გუნდისთვის
- მომხმარებელთა გამოხმაურების შეგროვება
- გთავაზობთ ახალ შეთავაზებებს
- იყიდეთ სასაუბრო კომერციით
- IT დახმარება
- საცხოვრებლის დაჯავშნა
- ფულის გადარიცხვა
დასკვნა
ჩატბოტები, ისევე როგორც სხვა ხელოვნური ინტელექტის ტექნოლოგიები, გამოყენებული იქნება ადამიანის უნარების გასაძლიერებლად და ადამიანების გასათავისუფლებლად, რათა იყვნენ უფრო კრეატიულები და წარმოსახვითი, რაც საშუალებას მისცემს მათ მეტი დრო დაუთმონ სტრატეგიულ და არა ტაქტიკურ ამოცანებს.
ბიზნესები, თანამშრომლები და მომხმარებლები, სავარაუდოდ, ისარგებლებენ ჩეტბოტის გაუმჯობესებული ფუნქციებით, როგორიცაა უფრო სწრაფი რეკომენდაციები და პროგნოზები, ისევე როგორც მარტივი წვდომა მაღალი გარჩევადობის ვიდეო კონფერენციაზე საუბრის შიგნით, უახლოეს მომავალში, როდესაც AI შერწყმულია 5G ტექნოლოგია.
ეს და სხვა შესაძლებლობები ჯერ კიდევ გამოძიების პროცესშია, მაგრამ ინტერნეტთან დაკავშირება, AI, NLP და მანქანათმცოდნეობის პროგრესი, ისინი უფრო გავრცელებული გახდება.
ჩვუ
Hello,
მადლობა ამ პროგრამისთვის.
Მე მაქვს შეკითხვა.
„სიტყვების_ტომარა“ არ არის განსაზღვრული. მე ვერ გავიგე ეს შეცდომა.
შეგიძლიათ მითხრათ როგორ მოვაგვარო ეს შეცდომა??
მადლობა ამ პროგრამისთვის!! Კარგ დღეს გისურვებ
Jay
გთხოვთ, დაამატოთ ფუნქცია ჩატბოტის განყოფილების გამოყენებამდე:
/////////////////////////////////////////////////////////////////// ////////////////////////////
def bag_of_words(s, words):
ჩანთა = [0 _ დიაპაზონში (len(სიტყვები))]
s_words = nltk.word_tokenize(s)
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()
იმპორტი numpy
იმპორტი tflearn
იმპორტი tensorflow
შემოტანა შემთხვევითი
იმპორტი json
იმპორტი მწნილის
open(“intents.json”) ფაილად:
მონაცემები = json.load(ფაილი)
სცადეთ:
open("data.pickle", "rb") როგორც f:
სიტყვები, ეტიკეტები, ტრენინგი, გამომავალი = pickle.load(f)
გარდა:
სიტყვები = []
ეტიკეტები = []
docs_x = []
docs_y = []
მონაცემების განზრახვისთვის [„განზრახვები“]:
განზრახვის ნიმუშისთვის [„ნიმუშები“]:
wrds = nltk.word_tokenize(ნიმუში)
words.extend(wrds)
docs_x.append(wrds)
docs_y.append(intent[“tag”])
თუ განზრახვა [“ტეგი”] არ არის ეტიკეტებში:
labels.append(intent[“tag”])
words = [stemmer.stem(w.lower()) for w სიტყვებით თუ w != “?”]
სიტყვები = დალაგებული(სიტი(სიმრავლე(სიტყვები)))
ეტიკეტები = დალაგებულია (ეტიკეტები)
ტრენინგი = []
გამომავალი = []
out_empty = [0 for _ დიაპაზონში(len(labels))]
x-სთვის, doc innumerate(docs_x):
ჩანთა = []
wrds = [stemmer.stem(w.lower()) w-ისთვის დოკუმენტში]
ვისთვის სიტყვებით:
თუ w რსებში:
bag.append(1)
სხვაგან:
bag.append(0)
output_row = out_empty[:]
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((სიტყვები, ეტიკეტები, ტრენინგი, გამომავალი), ვ)
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 (გამომავალი[0]), activation=”softmax”)
net = tflearn.regression(net)
model = 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)
s_words = [stemmer.stem(word.lower()) სიტყვა s_words-ში]
ამისთვის s_words-ში:
i, w innumerate(სიტყვებში):
თუ w == se:
ჩანთა[i] = 1
დაბრუნება numpy.array(bag)
def ჩატი ():
print („დაიწყე საუბარი ბოტთან (აკრიფეთ quit to stop)!“)
მართალია:
inp = შეყვანა („თქვენ:“)
if inp.lower() == "გამოსვლა":
შესვენება
შედეგები = model.predict([სიტყვების_ჩანთა(inp, სიტყვები)])
results_index = numpy.argmax(შედეგები)
ტეგი = ეტიკეტები[ შედეგების_ინდექსი]
tg-სთვის მონაცემებში [„განზრახვები“]:
თუ tg['tag'] == ტეგი:
პასუხები = tg['პასუხები']
print(random.choice(responses))
სასაუბრო()
//////////////////////////////////////////////////////////////////////// ///////////////
დიდი მადლობა,
ბედნიერი კოდირება!
Lu
Hello,
შეგიძლიათ წარმოიდგინოთ პროცესი, რომელიც უნდა განხორციელდეს პითონში ჩატბოტის შექმნის სურვილის შემთხვევაში, მაგრამ ინფორმაცია მიღებულია excel-ის გამოკითხვის შედეგად. Გმადლობთ!