class Syncmind::OperateChatBot
Public Class Methods
analyze_script()
click to toggle source
# File lib/syncmind.rb, line 1326 def self.analyze_script loop do require "naive_bayes" # Personality statistics and files. iteration = File.read("data/iteration.txt") # Controls the sleep time between personality details and input. script = File.readlines("data/script.txt") # The script file the mindfile reads from. personality_details = script.sample # Personality detail read from a script. bot_name = File.read("bot_identity/bot_name.txt").strip your_name = File.read("your_identity/your_name.txt").strip puts "#{bot_name}: #{personality_details}" a = NaiveBayes.new(:pets, :hobbies, :jobs, :skills, :weather) # Pets a.train(:pets, "dog", "word") a.train(:pets, "cat", "word") a.train(:pets, "rat", "word") a.train(:pets, "gerbil", "word") a.train(:pets, "hamster", "word") a.train(:pets, "snake", "word") a.train(:pets, "monkey", "word") a.train(:pets, "dog.", "word") a.train(:pets, "cat.", "word") a.train(:pets, "rat.", "word") a.train(:pets, "gerbil.", "word") a.train(:pets, "hamster.", "word") a.train(:pets, "snake.", "word") a.train(:pets, "monkey.", "word") a.train(:pets, "dog;", "word") a.train(:pets, "cat;", "word") a.train(:pets, "rat;", "word") a.train(:pets, "gerbil;", "word") a.train(:pets, "hamster;", "word") a.train(:pets, "snake;", "word") a.train(:pets, "monkey;", "word") a.train(:pets, "dog:", "word") a.train(:pets, "cat:", "word") a.train(:pets, "rat:", "word") a.train(:pets, "gerbil:", "word") a.train(:pets, "hamster:", "word") a.train(:pets, "snake:", "word") a.train(:pets, "monkey:", "word") a.train(:pets, "dog?", "word") a.train(:pets, "cat?", "word") a.train(:pets, "rat?", "word") a.train(:pets, "gerbil?", "word") a.train(:pets, "hamster?", "word") a.train(:pets, "snake?", "word") a.train(:pets, "monkey?", "word") # Hobbies a.train(:hobbies, "sing", "word") a.train(:hobbies, "illustrate", "word") a.train(:hobbies, "draw", "word") a.train(:hobbies, "write", "word") a.train(:hobbies, "widdle", "word") a.train(:hobbies, "dance", "word") a.train(:hobbies, "clog", "word") a.train(:hobbies, "weave", "word") a.train(:hobbies, "crochet", "word") a.train(:hobbies, "knit", "word") a.train(:hobbies, "swim", "word") a.train(:hobbies, "BDSM", "word") a.train(:hobbies, "game", "word") a.train(:hobbies, "JRPG", "word") a.train(:hobbies, "MMORPG", "word") a.train(:hobbies, "FPS", "word") a.train(:hobbies, "SIM", "word") a.train(:hobbies, "metroidvania", "word") a.train(:hobbies, "football", "word") a.train(:hobbies, "baseball", "word") a.train(:hobbies, "soccer", "word") a.train(:hobbies, "volleyball", "word") a.train(:hobbies, "skateboard", "word") a.train(:hobbies, "bike", "word") a.train(:hobbies, "skate", "word") a.train(:hobbies, "sing.", "word") a.train(:hobbies, "illustrate.", "word") a.train(:hobbies, "draw.", "word") a.train(:hobbies, "write.", "word") a.train(:hobbies, "widdle.", "word") a.train(:hobbies, "dance.", "word") a.train(:hobbies, "clog.", "word") a.train(:hobbies, "weave.", "word") a.train(:hobbies, "crochet.", "word") a.train(:hobbies, "knit.", "word") a.train(:hobbies, "swim.", "word") a.train(:hobbies, "BDSM.", "word") a.train(:hobbies, "game.", "word") a.train(:hobbies, "JRPG.", "word") a.train(:hobbies, "MMORPG.", "word") a.train(:hobbies, "FPS.", "word") a.train(:hobbies, "SIM.", "word") a.train(:hobbies, "metroidvania.", "word") a.train(:hobbies, "football.", "word") a.train(:hobbies, "baseball.", "word") a.train(:hobbies, "soccer.", "word") a.train(:hobbies, "volleyball.", "word") a.train(:hobbies, "skateboard.", "word") a.train(:hobbies, "bike.", "word") a.train(:hobbies, "skate.", "word") a.train(:hobbies, "sing;", "word") a.train(:hobbies, "illustrate;", "word") a.train(:hobbies, "draw;", "word") a.train(:hobbies, "write;", "word") a.train(:hobbies, "widdle;", "word") a.train(:hobbies, "dance;", "word") a.train(:hobbies, "clog;", "word") a.train(:hobbies, "weave;", "word") a.train(:hobbies, "crochet;", "word") a.train(:hobbies, "knit;", "word") a.train(:hobbies, "swim;", "word") a.train(:hobbies, "BDSM;", "word") a.train(:hobbies, "game;", "word") a.train(:hobbies, "JRPG;", "word") a.train(:hobbies, "MMORPG;", "word") a.train(:hobbies, "FPS;", "word") a.train(:hobbies, "SIM;", "word") a.train(:hobbies, "metroidvania;", "word") a.train(:hobbies, "football;", "word") a.train(:hobbies, "baseball;", "word") a.train(:hobbies, "soccer;", "word") a.train(:hobbies, "volleyball;", "word") a.train(:hobbies, "skateboard;", "word") a.train(:hobbies, "bike;", "word") a.train(:hobbies, "skate;", "word") a.train(:hobbies, "sing:", "word") a.train(:hobbies, "illustrate:", "word") a.train(:hobbies, "draw:", "word") a.train(:hobbies, "write:", "word") a.train(:hobbies, "widdle:", "word") a.train(:hobbies, "dance:", "word") a.train(:hobbies, "clog:", "word") a.train(:hobbies, "weave:", "word") a.train(:hobbies, "crochet:", "word") a.train(:hobbies, "knit:", "word") a.train(:hobbies, "swim:", "word") a.train(:hobbies, "BDSM:", "word") a.train(:hobbies, "game:", "word") a.train(:hobbies, "JRPG:", "word") a.train(:hobbies, "MMORPG:", "word") a.train(:hobbies, "FPS:", "word") a.train(:hobbies, "SIM:", "word") a.train(:hobbies, "metroidvania:", "word") a.train(:hobbies, "football:", "word") a.train(:hobbies, "baseball:", "word") a.train(:hobbies, "soccer:", "word") a.train(:hobbies, "volleyball:", "word") a.train(:hobbies, "skateboard:", "word") a.train(:hobbies, "bike:", "word") a.train(:hobbies, "skate:", "word") a.train(:hobbies, "sing?", "word") a.train(:hobbies, "illustrate?", "word") a.train(:hobbies, "draw?", "word") a.train(:hobbies, "write?", "word") a.train(:hobbies, "widdle?", "word") a.train(:hobbies, "dance?", "word") a.train(:hobbies, "clog?", "word") a.train(:hobbies, "weave?", "word") a.train(:hobbies, "crochet?", "word") a.train(:hobbies, "knit?", "word") a.train(:hobbies, "swim?", "word") a.train(:hobbies, "BDSM?", "word") a.train(:hobbies, "game?", "word") a.train(:hobbies, "JRPG?", "word") a.train(:hobbies, "MMORPG?", "word") a.train(:hobbies, "FPS?", "word") a.train(:hobbies, "SIM?", "word") a.train(:hobbies, "metroidvania?", "word") a.train(:hobbies, "football?", "word") a.train(:hobbies, "baseball?", "word") a.train(:hobbies, "soccer?", "word") a.train(:hobbies, "volleyball?", "word") a.train(:hobbies, "skateboard?", "word") a.train(:hobbies, "bike?", "word") a.train(:hobbies, "skate?", "word") # Jobs a.train(:jobs, "nurse", "word") a.train(:jobs, "officer", "word") a.train(:jobs, "fireman", "word") a.train(:jobs, "cashier", "word") a.train(:jobs, "stocker", "word") a.train(:jobs, "barber", "word") a.train(:jobs, "stylist", "word") a.train(:jobs, "clerk", "word") a.train(:jobs, "butcher", "word") a.train(:jobs, "reporter", "word") a.train(:jobs, "manager", "word") a.train(:jobs, "crane", "word") a.train(:jobs, "lawyer", "word") a.train(:jobs, "cameraman", "word") a.train(:jobs, "engineer", "word") a.train(:jobs, "pilot", "word") a.train(:jobs, "nurse.", "word") a.train(:jobs, "officer.", "word") a.train(:jobs, "fireman.", "word") a.train(:jobs, "cashier.", "word") a.train(:jobs, "stocker.", "word") a.train(:jobs, "barber.", "word") a.train(:jobs, "stylist.", "word") a.train(:jobs, "clerk.", "word") a.train(:jobs, "butcher.", "word") a.train(:jobs, "reporter.", "word") a.train(:jobs, "manager.", "word") a.train(:jobs, "crane.", "word") a.train(:jobs, "lawyer.", "word") a.train(:jobs, "cameraman.", "word") a.train(:jobs, "engineer.", "word") a.train(:jobs, "pilot.", "word") a.train(:jobs, "nurse;", "word") a.train(:jobs, "officer;", "word") a.train(:jobs, "fireman;", "word") a.train(:jobs, "cashier;", "word") a.train(:jobs, "stocker;", "word") a.train(:jobs, "barber;", "word") a.train(:jobs, "stylist;", "word") a.train(:jobs, "clerk;", "word") a.train(:jobs, "butcher;", "word") a.train(:jobs, "reporter;", "word") a.train(:jobs, "manager;", "word") a.train(:jobs, "crane;", "word") a.train(:jobs, "lawyer;", "word") a.train(:jobs, "cameraman;", "word") a.train(:jobs, "engineer;", "word") a.train(:jobs, "pilot;", "word") a.train(:jobs, "nurse:", "word") a.train(:jobs, "officer:", "word") a.train(:jobs, "fireman:", "word") a.train(:jobs, "cashier:", "word") a.train(:jobs, "stocker:", "word") a.train(:jobs, "barber:", "word") a.train(:jobs, "stylist:", "word") a.train(:jobs, "clerk:", "word") a.train(:jobs, "butcher:", "word") a.train(:jobs, "reporter:", "word") a.train(:jobs, "manager:", "word") a.train(:jobs, "crane:", "word") a.train(:jobs, "lawyer:", "word") a.train(:jobs, "cameraman:", "word") a.train(:jobs, "engineer:", "word") a.train(:jobs, "pilot:", "word") # Skills a.train(:skills, "codebreak", "word") a.train(:skills, "cook", "word") a.train(:skills, "climb", "word") a.train(:skills, "yoddle", "word") a.train(:skills, "blacksmith", "word") a.train(:skills, "codebreak.", "word") a.train(:skills, "cook.", "word") a.train(:skills, "climb.", "word") a.train(:skills, "yoddle.", "word") a.train(:skills, "blacksmith.", "word") a.train(:skills, "codebreak;", "word") a.train(:skills, "cook;", "word") a.train(:skills, "climb;", "word") a.train(:skills, "yoddle;", "word") a.train(:skills, "blacksmith;", "word") a.train(:skills, "codebreak:", "word") a.train(:skills, "cook:", "word") a.train(:skills, "climb:", "word") a.train(:skills, "yoddle:", "word") a.train(:skills, "blacksmith:", "word") a.train(:skills, "codebreak?", "word") a.train(:skills, "cook?", "word") a.train(:skills, "climb?", "word") a.train(:skills, "yoddle?", "word") a.train(:skills, "blacksmith?", "word") # Weather a.train(:weather, "sunny", "word") a.train(:weather, "rainy", "word") a.train(:weather, "cloudy", "word") a.train(:weather, "foggy", "word") a.train(:weather, "humid", "word") a.train(:weather, "sunny.", "word") a.train(:weather, "rainy.", "word") a.train(:weather, "cloudy.", "word") a.train(:weather, "foggy.", "word") a.train(:weather, "humid.", "word") a.train(:weather, "sunny;", "word") a.train(:weather, "rainy;", "word") a.train(:weather, "cloudy;", "word") a.train(:weather, "foggy;", "word") a.train(:weather, "humid;", "word") a.train(:weather, "sunny:", "word") a.train(:weather, "rainy:", "word") a.train(:weather, "cloudy:", "word") a.train(:weather, "foggy:", "word") a.train(:weather, "humid:", "word") a.train(:weather, "sunny?", "word") a.train(:weather, "rainy?", "word") a.train(:weather, "cloudy?", "word") a.train(:weather, "foggy?", "word") a.train(:weather, "humid?", "word") # Chatbot process for asking about pets. print "#{bot_name}: How do you do?\n#{your_name}: " b = gets.chomp if b == "Goodbye" abort end # Classify b and convert to string. a_class = a.classify(*b) result = a_class[0] probability = a_class[1].to_f decision = result.to_s # Responce with a pet, hobby, job, skill, or weather rejoinder based on probability. if decision == "pets" if probability >= 1.7741802839285145e-10 puts "#{bot_name}: Is that a nice pet?" else puts "#{bot_name}: Sorry but that's not a pet." end elsif decision == "hobbies" if probability >= 1.7741802839285145e-10 puts "#{bot_name}: Can you guide me in that hobby?" else puts "#{bot_name}: I don't think that's a hobby." end elsif decision == "jobs" if probability >= 1.7741802839285145e-10 puts "#{bot_name}: Do you like that job?" else puts "#{bot_name}: That doesn't seem like a real job." end elsif decision == "skills" if probability >= 1.7741802839285145e-10 puts "#{bot_name}: That sounds like an interesting skill." else puts "#{bot_name}: Have you ever considered switching skills?" end elsif decision == "weather" if probability >= 1.7741802839285145e-10 puts "#{bot_name}: The weather is #{decision}?" else puts "#{bot_name}: That weather doesn't seem likely." end else puts "#{bot_name}: I'm not sure what you mean." end end end