Chatbot তৈরী

Chatbot আজকাল অনলাইনে প্রায়ই দেখা যায়। বিভিন্ন অনলাইন শপ, সোশ্যাল মিডিয়া পেইজে গ্রাহকদের প্রশ্নের উত্তর দেবার ক্ষেত্রে চ্যাটবট বেশ সহায়ক।

বট ব্যবহার করলে একজন কাস্টমার কেয়ার প্রতিনিধিকে সারাক্ষন অনলাইনে বসিয়ে রাখার প্রয়োজনীয়তা অনেকটাই কমে যায়। শুধু কাস্টমার কেয়ারের ক্ষেত্রেই নয়, চ্যাটবট দেখা যায় বিভিন্ন চ্যাটিং এবং ডেটিং সাইটগুলোতেও। কখনও তারা নিঃসঙ্গ মানুষদের সাথে নিজেরাই গল্প করে, কখনও কথা বলার জন্য খুঁজে দেয় অনলাইনে থাকা অন্যকোনো মানুষকে।

চ্যাটবট তৈরীর ক্ষেত্রে পাইথন খুবই জনপ্রিয় একটি ল্যাঙ্গুয়েজ। Raspberry pi এর টিউটোরিয়াল সিরিজে ইতোমধ্যে আমরা পাইথন প্রোগ্রামিং এর সাথে পরিচিত হয়েছি। এই টিউটোরিয়ালে আমরা পাইথন ব্যবহার করে একটি চ্যাটবট তৈরী করব। প্রোগ্রাম লিখতে ব্যবহার করা হয়েছে Python 2.7.6 কম্পাইলার। প্রোগ্রামটি raspberry pi তে run করা যাবে আবার উইন্ডোজেও run করা যাবে। রাসবেরি পাইতে রান করার একটি সুবিধা হল শুধু টাইপ করা লেখা দেখতে দেখতে বোর হয়ে ভবিষ্যতে কখনও বটটিকে একটি শারীরিক কাঠামো দেবার ইচ্ছে হলে কোডে আরও কিছু লাইন লিখে, রাসবেরি পাইয়ের সাথে কিছু হার্ডওয়্যার যুক্ত করেই কাজটি করে ফেলা সম্ভব।


কোডঃ আমাদের লেখা চ্যাটবটের কোডটি নিচে দেওয়া হল।

import random
goodbyelist=["Bye","bye","ok,bye"]
thankslist=["Thanks", "thank you", "Thank"]
negative=["ill", "i am ill", "sick",  "fever", "headache", "cold","pain","i'm ill","i'm sick"]
nouns = ("You", "You", "We", "This", "Here")
verbs = ("are", "are", "should", "is", "is") 
adv = ("very", "so", "be", "so much", "really")
adj = ("Sweet", "good", "friends", "fun", "hot")
qs1=("Do","Are", "Can","Do", "Do" )
qs2=("you","you","you","you", "you")
qs3=("chat","a","cook","know", "excercise" )
qs4=("everyday?","student?","foods?","Arabic?","regularly?" )

qs5=("Tell","Give", "Tell","Please", "Please" )
qs6=("me","me","me","be", "stay")
qs7=("something","a","your","my", "always" )
qs8=("sweet","smile","dreams","friend","positive" )

assertive=("OK","I see", "Fine", "Good")
print "Hello I am a chatbot.What is your name?"
name=raw_input ()
print "OK, let's talk. Are you a man or woman?"
Gender=raw_input()
gender=Gender.lower()

if  gender.find('woman')>=0:
    print"How are you, sister?"

elif gender.find('man')>=0:
    print"How are you, brother?"
elif gender in goodbyelist:
    print "OK, bye"
    quit()
else:
    print "Sorry. Can't understand. Man or woman?"
State=raw_input ()
state=State.lower()

if  state.find('fine')>=0:
    print "Great. I am fine too."
elif  state.find('not bad')>=0:
    print "I wish to make you feel fine."    
elif  state.find('bad')>=0:
    print "Hope everything will be alright soon."
  
elif state.find('not')>=0:
    print "Why?what happened? You can share if you wish."
    Reason1=raw_input()
    reason1=Reason1.lower()
    if reason1 in negative:
        print "Please visit a good doctor."
    elif reason1 in goodbyelist:
        print "OK, bye.Take care."
        quit()    
    else:    
        print "That is really sad. Hope everything will be OK soon."    
elif state.find('good')>=0:
    print "Good to know that. I am always fine."
elif  state.find('well')>=0:
    print "Great!"          
elif state in goodbyelist:
    print "OK, bye.Take care."
    quit()

elif state.find('sad')>=0:
    print "Why?what happened? You can share if you wish."
    reason2=raw_input()
    print "That is really sad hope you will be OK soon."
  
elif state.find('good')>=0:
    print "Good to know that."
elif state in negative:
    print "Please visit a good doctor."
print "Alright. Tell me, what was the last movie that you watched?"
Movie=raw_input()
movie=Movie.lower()
if movie.find("t watch")>=0:
    print ("Then what do you like? Music? Books?")
    Moviereason=raw_input()
    moviereason=Moviereason.lower()
    if moviereason.find('busy')>=0:
        print ("I see. Let me know when you see a good movie next time.")
    
    elif moviereason.find('book')>=0:
         print ("I see. What is your favourite book?")
         book=raw_input()
         print ("There are many good books at www. rokomari.com. You can visit the site.")
    elif moviereason.find('music')>=0:
         print ("I see. Who is your favourite singer?")
         music=raw_input() 
         print ("I see. My favourite is Michael Jackson. You can listen to his music at http://bit.ly/2tHAAN4")
    else:
         print ("Hmm. Sounds interesting.")
         
        
       
        
        
elif movie.find("t like")>=0:
    print ("Then what do you like? Music? Books?")
    Moviereason=raw_input()
    moviereason=Moviereason.lower()
    if moviereason.find('busy')>=0:
        print ("I see. Let me know when you see a good movie next time.")
    
    elif moviereason.find('book')>=0:
         print ("I see. What is your favourite book?")
         book=raw_input()
         print ("There are many good books at www. rokomari.com. You can visit the site.")
    elif moviereason.find('music')>=0:
         print ("I see. Who is your favourite singer?")
         music=raw_input() 
         print ("I see. My favourite is Michael Jackson. You can listen to him here: ")
    else:
         print ("Hmm. Sounds good.")
         
             
else:
    print "How was it?"
    Mreview=raw_input()
    mreview=Mreview.lower()
    if mreview.find('not')>=0:
        print "Seems like you did not enjoyed the movie that much."
        
    elif mreview.find('excellent')>=0:
        print "Good to know that you enjoyed the movie."
    elif mreview.find('fine')>=0:
        print "Good to know that you enjoyed the movie."
    elif mreview.find('interesting')>=0:
        print "Good to know that you enjoyed the movie."
    elif mreview.find('boring')>=0:
        print "Seems like you did not enjoyed the movie that much."
    elif mreview.find('good')>=0:
        print "Good to know that you enjoyed the movie."
        
    elif mreview.find('bye')>=0:
        print "OK, bye"
        quit()
      
num = random.randrange(0,4)
print qs1[num] + ' ' + qs2[num] + ' ' + qs3[num] + ' ' + qs4[num]
    
 
 

while 1:
    A=raw_input()
    a=A.lower()
    if a.find("how old are you?")>=0:
        print "Forever young."
               
    elif a.find("do you")>=0:
        print ("I do.")        
    elif a.find("hello")>=0:
        print "Hello. I am here."
    elif a.find(":)")>=0:
        print ":)"
    elif a.find(":(")>=0:
        print "Don't be sad."     
    elif a.find("yes")>=0:
        num = random.randrange(0,4)
        print assertive[num]
        num = random.randrange(0,5)
        print qs5[num] + ' ' + qs6[num] + ' ' + qs7[num] + ' ' + qs8[num]+'.'

               
    elif a.find("no")>=0:
        print "Oh!OK."
        num = random.randrange(0,5)
        print qs5[num] + ' ' + qs6[num] + ' ' + qs7[num] + ' ' + qs8[num]+'.'
    elif a.find("hi")>=0:
        print "Hi. I am here."
    elif a.find("can you")>=0:
        print "I think I can."
    elif a.find("are you from ")>=0:
        print "I'm from a beautiful planet named earth."    
        print "25th Feb."       
    elif a.find("how are you?")>=0:
        print "I am always fine."
    elif a.find("birthday?")>=0:
        print "25th Feb."    
    elif a.find("what is your age?")>=0:
        print "Old enough."
    elif a.find("male or female?")>=0:
        print "Friends have no gender."
    elif a.find("man or woman")>=0:
        print "Friends have no gender."    
    elif a.find("thank")>=0:
        print ("You're welcome.")
    elif a.find("hobby")>=0:
        print ("I like to make new friends.")
    elif a.find("hobbies")>=0:
        print ("I like to make new friends.")
    elif a.find("like")>=0:
        print ("I like to make new friends.")
    elif a.find("what do")>=0:
        print ("I like to make new friends.")      
    elif a.find("how do you do?")>=0:
        print ("I'm always fine.")        
    
    elif a.find('bye')>=0:
        print "Ok.Bye. Take care.It was nice chatting with you."
        exit()
    
    else:
        num = random.randrange(0,5)
        print nouns[num] + ' ' + verbs[num] + ' ' + adv[num] + ' ' + adj[num]+'.'
    


    


এটি খুবই সাধারন একটি চ্যাটবটের উদাহরণ। এখানে কোনো মেশিন লার্নিং ব্যবহার করা হয়নি। সাধারন, পাইথন কোড দিয়ে লেখা। শুধুমাত্র পাঠকদের বোঝানোর উদ্দেশ্যেই লেখা, কোনো বানিজ্যিক উদ্দেশ্যে না। চ্যাটবটের কোডটিতে চাইলে আরও অনেক কন্ডিশন যোগ করা সম্ভব, চ্যাটবটের কাছ থেকে আরও নির্ভুল উত্তর পাওয়া সম্ভব। মেশিন লার্নিং প্রয়োগ করে আরও অনেক উন্নত চ্যাটবট তৈরী করা সম্ভব। মেশিন লার্নিং শিখতে হলে পাইথন জানা প্রয়োজন। তাই পূর্বপ্রস্তুতি হিসেবে এইধরনের চ্যাটবট তৈরীও মন্দ নয়। চ্যাটবটের সাথে আলাপের যেকোনো সময়ে আপনি ‘Bye’ লিখলেই চ্যাটবটটি আলাপ থামিয়ে দেবে। নিচে রাসবেরি পাইয়ের কমান্ড টার্মিনালে চ্যাটবটটির সাথে চলমান একটি কথোপকথনের ছবি দেওয়া হল।

python 2.7.6 কম্পাইলার থেকে চ্যাটবটের প্রোগামটি রান করাও বেশ মজার। এখানে নীল রঙয়ের বাক্যগুলো চ্যাটবটের আর কালোগুলো ইউজারের কথা। ‘Kill’ উইন্ডোটি দেখে ভয় পাবার কারন নেই। এটা শুধুমাত্র ইউজার ‘Bye’ বলার পর চ্যাটিং শেষ হলেই দেখা যায়।

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.