સામગ્રીનું કોષ્ટક[છુપાવો][બતાવો]
સંદેશાવ્યવહાર ક્ષેત્રમાં ટેક્સ્ટ અને વિઝ્યુઅલની તરફેણમાં વૉઇસ કૉલ્સ તબક્કાવાર બંધ કરવામાં આવી રહ્યા છે. ફેસબુક પોલ મુજબ, અડધાથી વધુ ખરીદદારો એવી કંપની પાસેથી ખરીદવાનું પસંદ કરે છે જેની સાથે તેઓ વાત કરી શકે. ચેટિંગ એ કોમ્યુનિકેશનનું નવું સામાજિક રીતે સ્વીકાર્ય મોડ બની ગયું છે.
તે વ્યવસાયોને કોઈપણ સમયે અને કોઈપણ સ્થાનથી તેમના ગ્રાહકો સાથે વાતચીત કરવા સક્ષમ બનાવે છે. ચેટબોટ્સ તેમના ઉપયોગમાં સરળતા અને ઓછા રાહ જોવાના સમયને કારણે કંપનીઓ અને ગ્રાહકોમાં વધુને વધુ લોકપ્રિયતા મેળવી રહ્યા છે.
ચેટબોટ્સ, અથવા સ્વયંસંચાલિત વાર્તાલાપ કાર્યક્રમો, ક્લાયન્ટને ટેક્સ્ટ-આધારિત ઇન્ટરફેસ દ્વારા સેવાઓને ઍક્સેસ કરવા માટે વધુ કસ્ટમાઇઝ પદ્ધતિ પ્રદાન કરે છે. નવા 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 અને મશીન લર્નિંગમાં પ્રગતિ થશે તેમ તેમ તે વધુ પ્રચલિત થશે.
ચ્વૂ
હેલો,
આ કાર્યક્રમ માટે આભાર.
મને એક સવાલ છે.
"બૅગ_ઓફ_વર્ડ્સ" વ્યાખ્યાયિત નથી. હું આ ભૂલ સમજી શકતો નથી.
શું તમે મને કહો કે હું આ ભૂલ કેવી રીતે ઉકેલી શકું??
આ કાર્યક્રમ માટે આભાર!! તમારો દિવસ શુભ રહે
જય
કૃપા કરીને ચેટબોટ વિભાગનો ઉપયોગ કરતા પહેલા એક કાર્ય ઉમેરો:
///////////////////////////////////////// ////////////////////////
def bag_of_words(s, words):
બેગ = [0 માટે _ શ્રેણીમાં (લેન(શબ્દો))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) s_words માં શબ્દ માટે]
s_words માં જોવા માટે:
i, w માટે ગણના(શબ્દો):
જો w == se:
બેગ[i] = 1
numpy.array(બેગ) પરત કરો
// તે ચોક્કસપણે તમારી સમસ્યા હલ કરશે. //
///////////////////////////////////////// //////////////////////
હું તમારી સાથે સંપૂર્ણ કોડ શેર કરી રહ્યો છું, જેથી તમને તેનો સ્પષ્ટ ચિત્ર મળશે.
///////////////////////////////////////// ////////
આયાત nltk
nltk.stem.lancaster આયાત LancasterStemmer માંથી
સ્ટેમર = લેન્કેસ્ટરસ્ટેમર()
નમ્પી આયાત કરો
tflearn આયાત કરો
ટેન્સરફ્લો આયાત કરો
રેન્ડમ આયાત
આયાત જેસન
અથાણું આયાત કરો
ફાઇલ તરીકે ઓપન("intents.json") સાથે:
ડેટા = json.load(ફાઇલ)
પ્રયાસ કરો:
f તરીકે open(“data.pickle”, “rb”) સાથે:
શબ્દો, લેબલ્સ, તાલીમ, આઉટપુટ = pickle.load(f)
સિવાય:
શબ્દો = []
લેબલ્સ = []
દસ્તાવેજ_x = []
દસ્તાવેજ_y = []
ડેટામાં ઉદ્દેશ્ય માટે["ઇન્ટેન્ટ્સ"]:
ઉદ્દેશ્યમાં પેટર્ન માટે["પેટર્ન"]:
wrds = nltk.word_tokenize(પેટર્ન)
words.extend(wrds)
docs_x.append(wrds)
docs_y.append(ઇન્ટેન્ટ[“ટેગ”])
જો હેતુ[“ટેગ”] લેબલમાં ન હોય તો:
labels.append(ઇન્ટેન્ટ[“ટેગ”])
શબ્દો = [stemmer.stem(w.lower()) શબ્દોમાં w માટે જો w != “?”]
શબ્દો = સોર્ટ કરેલ(સૂચિ(સેટ(શબ્દો)))
લેબલ્સ = સોર્ટ કરેલ (લેબલ્સ)
તાલીમ = []
આઉટપુટ = []
બહાર_ખાલી = [0 માટે _ શ્રેણીમાં (લેન(લેબલ્સ))]
x માટે, doc in enumerate(docs_x):
થેલી = []
wrds = [દસ્તાવેજમાં w માટે stemmer.stem(w.lower())]
શબ્દોમાં w માટે:
જો શબ્દોમાં w:
બેગ. એપેન્ડ(1)
બીજું:
બેગ. એપેન્ડ(0)
આઉટપુટ_પંક્તિ = બહાર_ખાલી[:]
આઉટપુટ_રો[labels.index(docs_y[x])] = 1
તાલીમ. એપેન્ડ(બેગ)
output.append(output_row)
તાલીમ = numpy.array(તાલીમ)
આઉટપુટ = numpy.array(આઉટપુટ)
f તરીકે open(“data.pickle”, “wb”) સાથે:
pickle.dump((શબ્દો, લેબલ્સ, તાલીમ, આઉટપુટ), f)
tensorflow.reset_default_graph()
net = tflearn.input_data(આકાર=[કોઈ નહીં, લેન(તાલીમ[0])])
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, len(આઉટપુટ[0]), સક્રિયકરણ="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 માટે _ શ્રેણીમાં (લેન(શબ્દો))]
s_words = nltk.word_tokenize(s)
s_words = [stemmer.stem(word.lower()) s_words માં શબ્દ માટે]
s_words માં જોવા માટે:
i, w માટે ગણના(શબ્દો):
જો w == se:
બેગ[i] = 1
numpy.array(બેગ) પરત કરો
def chat():
પ્રિન્ટ ("બોટ સાથે વાત કરવાનું શરૂ કરો (રોકવા માટે છોડો લખો)!")
જ્યારે સાચું:
inp = ઇનપુટ("તમે:")
જો inp.lower() == “છોડો”:
વિરામ
પરિણામો = model.predict([bag_of_words(inp, words)])
results_index = numpy.argmax(પરિણામો)
ટેગ = લેબલ્સ[પરિણામો_ઇન્ડેક્સ]
ડેટા[“ઇન્ટેન્ટ્સ”] માં tg માટે:
જો tg['tag'] == ટેગ:
પ્રતિભાવો = tg['જવાબ']
પ્રિન્ટ(random.choice(જવાબો))
ચેટ()
///////////////////////////////////////// /////////////
આભાર,
હેપી કોડિંગ!
Lu
હેલો,
શું તમે મને પાયથોનમાં ચેટબોટ બનાવવાની ઇચ્છાના કિસ્સામાં હાથ ધરવા માટેની પ્રક્રિયાનો ખ્યાલ આપી શકો છો, પરંતુ માહિતી એક્સેલના સર્વેક્ષણમાંથી મેળવવામાં આવી છે. આભાર!