अनुक्रमणिका[लपवा][दाखवा]
संप्रेषण क्षेत्रातील मजकूर आणि व्हिज्युअलच्या बाजूने व्हॉइस कॉल्स टप्प्याटप्प्याने बंद केले जात आहेत. फेसबुक पोलनुसार, अर्ध्याहून अधिक खरेदीदार अशा कंपनीकडून खरेदी करण्यास प्राधान्य देतात ज्याशी ते बोलू शकतात. चॅटिंग हे संवादाचे नवीन समाजमान्य माध्यम बनले आहे.
हे व्यवसायांना त्यांच्या ग्राहकांशी कधीही आणि कोणत्याही स्थानावरून संवाद साधण्यास सक्षम करते. चॅटबॉट्स त्यांच्या वापरातील सुलभतेमुळे आणि कमी प्रतीक्षा कालावधीमुळे कंपन्या आणि ग्राहकांमध्ये वाढत्या प्रमाणात लोकप्रिय होत आहेत.
चॅटबॉट्स, किंवा स्वयंचलित संभाषण कार्यक्रम, क्लायंटला मजकूर-आधारित इंटरफेसद्वारे सेवांमध्ये प्रवेश करण्यासाठी अधिक सानुकूलित पद्धती प्रदान करतात. नवीन AI-शक्तीवर चालणारे चॅटबॉट्स विशिष्ट वातावरणात एखाद्या व्यक्तीने (किंवा दुसरा बॉट, इनसेप्शन) केलेली क्वेरी (प्रश्न, आदेश, ऑर्डर इ.) ओळखू शकतात आणि योग्य प्रतिसाद देऊ शकतात (उत्तर, कृती इ.).
या पोस्टमध्ये, आम्ही चॅटबॉट्स काय आहेत, त्यांचे फायदे, वापर प्रकरणे आणि तुमचे स्वतःचे कसे बनवायचे ते पाहू. खोल शिकणे पायथनमधील चॅटबॉट, इतर गोष्टींबरोबरच.
चला सुरू करुया.
तर, चॅटबॉट्स म्हणजे काय?
चॅटबॉट हा मानवी-मशीन परस्परसंवादाच्या सर्वात प्रगत आणि आशादायक प्रकारांपैकी एक म्हणून ओळखला जातो. हे डिजिटल सहाय्यक लोक आणि सेवा यांच्यातील परस्परसंवाद सुव्यवस्थित करून ग्राहक अनुभव सुधारतात.
त्याच बरोबर, ते व्यवसायांना ग्राहक संपर्क प्रक्रियेला कार्यक्षमतेसाठी अनुकूल करण्यासाठी नवीन पर्याय प्रदान करतात, जे पारंपारिक समर्थन खर्च कमी करू शकतात.
थोडक्यात, हे AI-आधारित सॉफ्टवेअर आहे जे मानवांशी त्यांच्या नैसर्गिक भाषांमध्ये संवाद साधण्यासाठी आहे. हे चॅटबॉट्स अनेकदा ऑडिओ किंवा लिखित तंत्रांद्वारे संवाद साधतात आणि ते मानवी भाषेची नक्कल करू शकतात जेणेकरून ते माणसांशी माणसांसारखे संपर्क साधू शकतील.
चॅटबॉट्स वापरकर्त्यांसोबतच्या त्यांच्या परस्परसंवादातून शिकतात, कालांतराने अधिक वास्तववादी आणि कार्यक्षम बनतात. ते खर्च अधिकृत करणे, ग्राहकांशी ऑनलाइन गुंतणे आणि लीड निर्माण करणे यासारख्या विस्तृत व्यावसायिक क्रियाकलाप हाताळू शकतात.
पायथनसह तुमचा स्वतःचा डीप लर्निंग चॅटबॉट तयार करणे
च्या क्षेत्रात चॅटबॉट्सचे अनेक वेगळे प्रकार आहेत मशीन शिक्षण आणि AI. काही चॅटबॉट्स व्हर्च्युअल असिस्टंट असतात, तर काही फक्त संवाद साधण्यासाठी असतात, तर काही ग्राहक सेवा एजंट असतात.
प्रश्नांची उत्तरे देण्यासाठी व्यवसायांद्वारे नियुक्त केलेले काही तुम्ही पाहिले असतील. वारंवार विनंती केलेल्या प्रश्नांची उत्तरे देण्यासाठी आम्ही या ट्यूटोरियलमध्ये एक छोटासा चॅटबॉट बनवू.
1. पॅकेजेस स्थापित करणे
आमची पहिली पायरी म्हणजे खालील पॅकेजेस स्थापित करणे.
2. प्रशिक्षण डेटा
आता आम्हाला आमच्या चॅटबॉटला कोणत्या प्रकारची माहिती द्यावी लागेल हे शोधण्याची वेळ आली आहे. आम्हाला कोणताही मोठा डेटासेट डाउनलोड करण्याची गरज नाही कारण हा एक साधा चॅटबॉट आहे.
आम्ही फक्त आम्ही स्वतः तयार केलेल्या माहितीचा वापर करू. धड्याचे प्रभावीपणे अनुसरण करण्यासाठी, तुम्हाला खाली दिसल्याप्रमाणेच .JSON फाइल तयार करणे आवश्यक आहे. माझी फाईल "intents.json" असे नाव आहे.
JSON फाईलचा वापर संदेशांचा संच तयार करण्यासाठी केला जातो जो वापरकर्ता इनपुट करेल आणि संबंधित उत्तरांच्या संचामध्ये मॅप करेल. फाइलमधील प्रत्येक शब्दकोशामध्ये एक टॅग असतो जो प्रत्येक संदेश कोणत्या गटाशी संबंधित आहे हे ओळखतो.
आम्ही ही माहिती प्रशिक्षण देण्यासाठी वापरू मज्जासंस्थेसंबंधीचा नेटवर्क आमच्या फाइलमधील टॅगपैकी एक म्हणून शब्दांच्या वाक्यांशाचे वर्गीकरण करण्यासाठी.
त्यानंतर आम्ही फक्त त्या गटांकडून प्रतिसाद घेऊ शकतो आणि वापरकर्त्याला देऊ शकतो. तुम्ही अतिरिक्त टॅग, प्रत्युत्तरे आणि नमुन्यांसह चॅटबॉट ऑफर केल्यास तो अधिक चांगला आणि क्लिष्ट होईल.
3. JSON डेटा लोड होत आहे
आम्ही आमच्या .json डेटामध्ये लोड करून आणि काही मॉड्यूल्स आयात करून प्रारंभ करू. तुमच्या सारख्या डिरेक्टरीमध्ये your.json फाइल एकत्र करा पायथन स्क्रिप्ट. आमचा .json डेटा आता डेटा व्हेरिएबलमध्ये सेव्ह केला जाईल.
4. डेटा एक्सट्रॅक्शन
आता आमच्या JSON फाईलमधून आम्हाला आवश्यक असलेली माहिती काढण्याची वेळ आली आहे. सर्व नमुने, तसेच ते ज्या वर्गाचे/टॅगचे आहेत ते आवश्यक आहेत.
आम्हाला आमच्या पॅटर्नमधील सर्व अनन्य संज्ञांची सूची देखील आवश्यक असेल (कारणांसाठी आम्ही नंतर स्पष्ट करू), तर या मूल्यांचा मागोवा ठेवण्यासाठी काही रिक्त सूची तयार करूया.
आता आम्ही आमचा JSON डेटा लूप करू आणि आम्हाला आवश्यक असलेली माहिती पुनर्प्राप्त करू. त्यांना स्ट्रिंग म्हणून ठेवण्याऐवजी, आम्ही प्रत्येक पॅटर्नला शब्दांच्या सूचीमध्ये रूपांतरित करण्यासाठी nltk.word tokenizer वापरू.
त्यानंतर, आमच्या docs_x सूचीमध्ये, आम्ही प्रत्येक पॅटर्न, त्याच्या संबंधित टॅगसह, docs_y सूचीमध्ये जोडू.
5. शब्द स्टेमिंग
एखाद्या शब्दाचे मूळ शोधणे हे स्टेमिंग म्हणून ओळखले जाते. उदाहरणार्थ, “ते” या शब्दाचे स्टेम “ते” असू शकते तर “घडत आहे” या शब्दाचे स्टेम “हॅपन” असू शकते.
आम्ही आमच्या मॉडेलचा शब्दसंग्रह कमी करण्यासाठी या स्टेमिंग तंत्राचा वापर करू आणि सर्वसाधारणपणे कोणती वाक्ये सूचित करतात हे शोधण्याचा प्रयत्न करू. हा कोड फक्त स्टेम्ड शब्दांची एक अद्वितीय सूची तयार करेल जी आमच्या डेटा तयार करण्याच्या पुढील टप्प्यात वापरली जाईल.
6. शब्दांची पिशवी
आम्ही आमचा डेटा आयात केला आहे आणि स्टेम्ड शब्दसंग्रह तयार केला आहे अशा शब्दांबद्दल बोलण्याची वेळ आली आहे. न्युरल नेटवर्क आणि मशीन लर्निंग अल्गोरिदम, जसे आपण सर्व जाणतो, संख्यात्मक इनपुट आवश्यक आहे. त्यामुळे आमची स्ट्रिंग लिस्ट ती कापणार नाही. आपल्या वाक्यांमध्ये संख्या दर्शवण्यासाठी आपल्याला एक यंत्रणा आवश्यक आहे, जिथे शब्दांची पिशवी येते.
प्रत्येक वाक्यांश आमच्या मॉडेलच्या शब्दसंग्रहातील पदांच्या संख्येच्या लांबीच्या सूचीद्वारे दर्शविला जाईल. आमच्या शब्दसंग्रहातील प्रत्येक शब्द सूचीमधील स्थानाद्वारे दर्शविला जाईल. जर यादीतील स्थान 1 असेल, तर हा शब्द आमच्या विधानात दिसतो; जर ते 0 असेल, तर हा शब्द आपल्या वाक्यात दिसत नाही.
आपण याला शब्दांची पिशवी म्हणतो कारण आपल्याला वाक्यांशामध्ये शब्द कोणत्या क्रमाने दिसतात हे माहित नाही; आम्हाला एवढेच माहित आहे की ते आमच्या मॉडेलच्या शब्दसंग्रहात अस्तित्वात आहेत.
आमच्या इनपुटची रचना करण्याव्यतिरिक्त, आम्ही आमचे आउटपुट देखील स्वरूपित केले पाहिजे जेणेकरून न्यूरल नेटवर्कला ते समजेल. आम्ही आउटपुट याद्या तयार करू ज्या आमच्या डेटासेटमधील लेबल्स/टॅगच्या संख्येच्या लांबीच्या आहेत, शब्दांच्या पिशवीप्रमाणे. सूचीतील प्रत्येक ठिकाण एक अद्वितीय लेबल/टॅग दर्शवते आणि त्यापैकी कोणत्याही स्थानावरील 1 हे कोणत्या लेबल/टॅगचे प्रतिनिधित्व केले जात आहे हे सूचित करते.
शेवटी, आम्ही आमचा प्रशिक्षण डेटा आणि आउटपुट संचयित करण्यासाठी NumPy अॅरे वापरू.
7. मॉडेल विकास
आम्ही आमच्या सर्व डेटाची प्रीप्रोसेस केल्याने आम्ही आता मॉडेल तयार करणे आणि प्रशिक्षित करण्यास तयार आहोत. आम्ही आमच्या उद्दिष्टांसाठी दोन लपलेले स्तर असलेले अतिशय मूलभूत फीड-फॉरवर्ड न्यूरल नेटवर्क वापरू.
आमच्या नेटवर्कचा उद्देश शब्दांचा संग्रह पाहणे आणि त्यांना एका वर्गाला नियुक्त करणे (JSON फाइलमधील आमच्या टॅगपैकी एक) असेल. आम्ही आमच्या मॉडेलच्या आर्किटेक्चरची स्थापना करून सुरुवात करू. लक्षात ठेवा की आपण एक चांगले मॉडेल आणण्यासाठी काही संख्यांसह खेळू शकता! मशीन लर्निंग मुख्यतः चाचणी आणि त्रुटीवर आधारित आहे.
8. मॉडेल प्रशिक्षण आणि बचत
आमच्या डेटावर आमचे मॉडेल प्रशिक्षित करण्याची वेळ आली आहे की आम्ही ते सेट केले आहे! आमचा डेटा मॉडेलमध्ये बसवून आम्ही हे साध्य करू. प्रशिक्षणादरम्यान मॉडेलला समान डेटा किती वेळा उघड केला जाईल याची संख्या आम्ही प्रदान करतो.
एकदा आम्ही प्रशिक्षण पूर्ण केल्यानंतर आम्ही मॉडेलला फाइल मॉडेलमध्ये सेव्ह करू शकतो. tflearn ही एक स्क्रिप्ट आहे जी इतर स्क्रिप्टमध्ये वापरली जाऊ शकते.
9. चॅटबॉट वापरणे
आता तुम्ही तुमच्या बॉटसोबत चॅटिंग सुरू करू शकता.
चॅटबॉटचे फायदे
- बॉट्सने वर्षातील 365 दिवस, दिवसाचे 24 तास, विना वेतन, उपलब्धता आणि प्रतिक्रिया गती वाढवणे अपेक्षित आहे.
- हे बॉट्स बिग डेटाच्या तीन प्रमुख वि: व्हॉल्यूम, वेग आणि विविधता हाताळण्यासाठी योग्य साधने आहेत.
- चॅटबॉट्स हे सॉफ्टवेअर आहेत जे कंपनीच्या ग्राहकांबद्दल जाणून घेण्यासाठी आणि समजून घेण्यासाठी वापरले जाऊ शकतात.
- यात उत्कृष्ट शक्ती आहे की शीर्ष फायदे मिळाल्यानंतर त्याची देखभाल खर्च स्वस्त आहे.
- चॅटबॉट ऍप्लिकेशन्स डेटा तयार करतात जो जतन केला जाऊ शकतो आणि विश्लेषण आणि अंदाजांसाठी वापरला जाऊ शकतो.
युजकेस
- ग्राहकांच्या प्रश्नांचे निराकरण करणे
- वारंवार विचारल्या जाणार्या प्रश्नांची उत्तरे देणे
- ग्राहकांना समर्थन कार्यसंघासाठी नियुक्त करणे
- ग्राहकांचा अभिप्राय गोळा करणे
- नवीन ऑफरची शिफारस करत आहे
- संभाषणात्मक व्यापारासह खरेदी करा
- आयटी हेल्पडेस्क
- राहण्याची व्यवस्था
- पैसे हस्तांतरण
निष्कर्ष
चॅटबॉट्स, इतर AI तंत्रज्ञानाप्रमाणे, मानवी कौशल्ये वाढवण्यासाठी आणि लोकांना अधिक सर्जनशील आणि कल्पनारम्य बनवण्यासाठी वापरण्यात येईल आणि त्यांना रणनीतिकखेळ कामांऐवजी धोरणात्मक कामांवर अधिक वेळ घालवता येईल.
व्यवसाय, कर्मचारी आणि ग्राहकांना सुधारित चॅटबॉट वैशिष्ट्यांचा लाभ होण्याची शक्यता आहे जसे की जलद शिफारसी आणि अंदाज, तसेच संभाषणातून हाय-डेफिनिशन व्हिडिओ कॉन्फरन्सिंगमध्ये सहज प्रवेश, नजीकच्या भविष्यात, जेव्हा AI च्या विकासासह एकत्रित केले जाईल. 5G तंत्रज्ञान.
या आणि इतर शक्यता अजूनही तपासल्या जात आहेत, परंतु इंटरनेट कनेक्टिव्हिटी, AI, NLP आणि मशीन लर्निंगमध्ये प्रगती होत असल्याने ते अधिक प्रचलित होतील.
चवू
हॅलो,
या कार्यक्रमासाठी धन्यवाद.
माझा एक प्रश्न आहे.
"bag_of_words" परिभाषित केलेले नाही. मी ही त्रुटी समजू शकत नाही.
ही त्रुटी मी कशी सोडवू शकतो हे तुम्ही मला सांगाल का??
या कार्यक्रमासाठी धन्यवाद!! तुमचा दिवस चांगला जावो
जय
कृपया चॅटबॉट विभाग वापरण्यापूर्वी फंक्शन जोडा:
//////////////////////////////////////// ////////////////////////
def bag_of_words(s, words):
बॅग = [0 साठी _ श्रेणीतील (len(शब्द))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) s_words मधील शब्दासाठी]
s_words मध्ये se for:
i साठी, w enumerate(शब्दांमध्ये):
जर w == se:
बॅग[i] = 1
numpy.array(बॅग) परत करा
// हे तुमच्या समस्येचे नक्कीच निराकरण करेल. //
//////////////////////////////////////// //////////////////////
मी संपूर्ण कोड तुमच्यासोबत शेअर करत आहे, त्यामुळे तुम्हाला त्याचे स्पष्ट चित्र मिळेल.
//////////////////////////////////////// ////////
आयात एनएलटीके
nltk.stem.lancaster वरून LancasterStemmer आयात करा
स्टेमर = लँकेस्टरस्टेमर()
numpy आयात करा
tflearn आयात करा
टेन्सरफ्लो आयात करा
यादृच्छिक आयात करा
आयात json
लोणची आयात करा
फाइल म्हणून open(“intents.json”) सह:
डेटा = json.load(फाइल)
प्रयत्न:
f म्हणून open(“data.pickle”, “rb”) सह:
शब्द, लेबल, प्रशिक्षण, आउटपुट = pickle.load(f)
वगळताः
शब्द = []
लेबले = []
डॉक्स_x = []
docs_y = []
डेटामधील हेतूसाठी[“इंटेंट्स”]:
हेतूमधील पॅटर्नसाठी[“नमुने”]:
wrds = nltk.word_tokenize(पॅटर्न)
words.extend(wrds)
docs_x.append(wrds)
docs_y.append(इंटेंट[“टॅग”])
जर हेतू [“टॅग”] लेबलमध्ये नसेल तर:
labels.append(इंटेंट[“टॅग”])
शब्द = [stemmer.stem(w.lower()) शब्दात w साठी w जर w != “?”]
शब्द = क्रमवारी लावलेली(सूची(संच(शब्द)))
लेबल्स = क्रमबद्ध (लेबल)
प्रशिक्षण = []
आउटपुट = []
out_empty = [0 साठी _ मधील श्रेणी(len(लेबल्स))]
x साठी, doc in enumerate(docs_x):
पिशवी = []
wrds = [doc मध्ये w साठी stemmer.stem(w.lower())]
शब्दात w साठी:
शब्दांमध्ये w असल्यास:
bag.append(1)
अन्यथा:
bag.append(0)
आउटपुट_रो = बाहेर_रिक्त[:]
output_row[labels.index(docs_y[x])] = 1
training.append(बॅग)
output.append(output_row)
प्रशिक्षण = numpy.array(प्रशिक्षण)
आउटपुट = numpy.array(आउटपुट)
f म्हणून open(“data.pickle”, “wb”) सह:
pickle.dump((शब्द, लेबले, प्रशिक्षण, आउटपुट), f)
tensorflow.reset_default_graph()
नेट = tflearn.input_data(आकार=[कोणतेही नाही, लेन(प्रशिक्षण[0])])
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, len(output[0]), activation="softmax")
नेट = tflearn.regression(net)
मॉडेल = tflearn.DNN(नेट)
प्रयत्न:
model.load(“model.tflearn”)
वगळताः
model.fit(प्रशिक्षण, आउटपुट, 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 मध्ये se for:
i साठी, w enumerate(शब्दांमध्ये):
जर w == se:
बॅग[i] = 1
numpy.array(बॅग) परत करा
def चॅट():
मुद्रित करा("बॉटशी बोलणे सुरू करा (थांबण्यासाठी क्विट टाइप करा)!")
सत्य असताना:
inp = इनपुट ("तुम्ही: ")
जर inp.lower() == "बाहेर पडा":
ब्रेक
परिणाम = model.predict([bag_of_words(inp, words)])
results_index = numpy.argmax(परिणाम)
टॅग = लेबले[परिणाम_सूचकांक]
डेटामधील tg साठी[“इंटेंट्स”]:
जर tg['tag'] == टॅग:
प्रतिसाद = tg['प्रतिसाद']
प्रिंट(random.choice(प्रतिसाद))
गप्पा ()
//////////////////////////////////////// /////////////
धन्यवाद,
आनंदी कोडिंग!
Lu
हॅलो,
पायथनमध्ये चॅटबॉट तयार करायचा असेल तर तुम्ही मला या प्रक्रियेची कल्पना देऊ शकता, परंतु माहिती एक्सेलमधील सर्वेक्षणातून प्राप्त झाली आहे. धन्यवाद!