class Aibrain::Knowledge_Areas

Public Class Methods

create_solution() click to toggle source
# File lib/aibrain.rb, line 144
def self.create_solution
  require "naive_bayes"
  require "tts"
  
  a = NaiveBayes.new(:solution, :notsolution)
  
  # Solution non lethal
  a.train(:solution,    "check", "word"); a.train(:solution,     "cash", "word")
  a.train(:solution,      "fix", "word"); a.train(:solution,    "solve", "word")
  a.train(:solution,  "program", "word"); a.train(:solution,     "code", "word")
  a.train(:solution,   "check.", "word"); a.train(:solution,    "cash.", "word")
  a.train(:solution,     "fix.", "word"); a.train(:solution,   "solve.", "word")
  a.train(:solution, "program.", "word"); a.train(:solution,    "code.", "word")
  a.train(:solution,   "check;", "word"); a.train(:solution,    "cash;", "word")
  a.train(:solution,     "fix;", "word"); a.train(:solution,   "solve;", "word")
  a.train(:solution, "program;", "word"); a.train(:solution,    "code;", "word")
  a.train(:solution,   "check:", "word"); a.train(:solution,    "cash:", "word")
  a.train(:solution,     "fix:", "word"); a.train(:solution,   "solve:", "word")
  a.train(:solution, "program:", "word"); a.train(:solution,    "code:", "word")
  a.train(:solution,   "check?", "word"); a.train(:solution,    "cash?", "word")
  a.train(:solution,     "fix?", "word"); a.train(:solution,   "solve?", "word")
  a.train(:solution, "program?", "word"); a.train(:solution,    "code?", "word")
  
  # Solution lethal
  a.train(:notsolution,  "guillotine", "word"); a.train(:notsolution,     "gallows", "word")
  a.train(:notsolution,       "choke", "word"); a.train(:notsolution,   "asfyxiate", "word")
  a.train(:notsolution,    "strangle", "word"); a.train(:notsolution,        "neck", "word")
  a.train(:notsolution,   "beheading", "word"); a.train(:notsolution,    "headsman", "word")
  a.train(:notsolution,       "sword", "word"); a.train(:notsolution,         "axe", "word")
  a.train(:notsolution,     "cleaver", "word"); a.train(:notsolution,        "chop", "word")
  a.train(:notsolution,        "hack", "word"); a.train(:notsolution,        "chop", "word")
  a.train(:notsolution,       "slash", "word"); a.train(:notsolution,        "chop", "word")
  a.train(:notsolution,         "cut", "word"); a.train(:notsolution,     "suicide", "word")
  a.train(:notsolution,        "slit", "word"); a.train(:notsolution,       "noose", "word")
  a.train(:notsolution,         "car", "word"); a.train(:notsolution,       "drown", "word")
  a.train(:notsolution,      "murder", "word"); a.train(:notsolution,   "disappear", "word")
  a.train(:notsolution,      "vanish", "word"); a.train(:notsolution,       "death", "word")
  a.train(:notsolution,         "die", "word"); a.train(:notsolution,     "firearm", "word")
  a.train(:notsolution,       "heart", "word"); a.train(:notsolution,        "head", "word")
  a.train(:notsolution, "guillotine.", "word"); a.train(:notsolution,    "gallows.", "word")
  a.train(:notsolution,      "choke.", "word"); a.train(:notsolution,  "asfyxiate.", "word")
  a.train(:notsolution,   "strangle.", "word"); a.train(:notsolution,       "neck.", "word")
  a.train(:notsolution,  "beheading.", "word"); a.train(:notsolution,   "headsman.", "word")
  a.train(:notsolution,      "sword.", "word"); a.train(:notsolution,        "axe.", "word")
  a.train(:notsolution,    "cleaver.", "word"); a.train(:notsolution,       "chop.", "word")
  a.train(:notsolution,       "hack.", "word"); a.train(:notsolution,       "chop.", "word")
  a.train(:notsolution,      "slash.", "word"); a.train(:notsolution,       "chop.", "word")
  a.train(:notsolution,        "cut.", "word"); a.train(:notsolution,    "suicide.", "word")
  a.train(:notsolution,       "slit.", "word"); a.train(:notsolution,      "noose.", "word")
  a.train(:notsolution,        "car.", "word"); a.train(:notsolution,      "drown.", "word")
  a.train(:notsolution,     "murder.", "word"); a.train(:notsolution,  "disappear.", "word")
  a.train(:notsolution,     "vanish.", "word"); a.train(:notsolution,      "death.", "word")
  a.train(:notsolution,        "die.", "word"); a.train(:notsolution,    "firearm.", "word")
  a.train(:notsolution,      "heart.", "word"); a.train(:notsolution,       "head.", "word")
  a.train(:notsolution, "guillotine;", "word"); a.train(:notsolution,    "gallows;", "word")
  a.train(:notsolution,      "choke;", "word"); a.train(:notsolution,  "asfyxiate;", "word")
  a.train(:notsolution,   "strangle;", "word"); a.train(:notsolution,       "neck;", "word")
  a.train(:notsolution,  "beheading;", "word"); a.train(:notsolution,   "headsman;", "word")
  a.train(:notsolution,      "sword;", "word"); a.train(:notsolution,        "axe;", "word")
  a.train(:notsolution,    "cleaver;", "word"); a.train(:notsolution,       "chop;", "word")
  a.train(:notsolution,       "hack;", "word"); a.train(:notsolution,       "chop;", "word")
  a.train(:notsolution,      "slash;", "word"); a.train(:notsolution,       "chop;", "word")
  a.train(:notsolution,        "cut;", "word"); a.train(:notsolution,    "suicide;", "word")
  a.train(:notsolution,       "slit;", "word"); a.train(:notsolution,      "noose;", "word")
  a.train(:notsolution,        "car;", "word"); a.train(:notsolution,      "drown;", "word")
  a.train(:notsolution,     "murder;", "word"); a.train(:notsolution,  "disappear;", "word")
  a.train(:notsolution,     "vanish;", "word"); a.train(:notsolution,      "death;", "word")
  a.train(:notsolution,        "die;", "word"); a.train(:notsolution,    "firearm;", "word")
  a.train(:notsolution,      "heart;", "word"); a.train(:notsolution,       "head;", "word")
  a.train(:notsolution, "guillotine:", "word"); a.train(:notsolution,    "gallows:", "word")
  a.train(:notsolution,      "choke:", "word"); a.train(:notsolution,  "asfyxiate:", "word")
  a.train(:notsolution,   "strangle:", "word"); a.train(:notsolution,       "neck:", "word")
  a.train(:notsolution,  "beheading:", "word"); a.train(:notsolution,   "headsman:", "word")
  a.train(:notsolution,      "sword:", "word"); a.train(:notsolution,        "axe:", "word")
  a.train(:notsolution,    "cleaver:", "word"); a.train(:notsolution,       "chop:", "word")
  a.train(:notsolution,       "hack:", "word"); a.train(:notsolution,       "chop:", "word")
  a.train(:notsolution,      "slash:", "word"); a.train(:notsolution,       "chop:", "word")
  a.train(:notsolution,        "cut:", "word"); a.train(:notsolution,    "suicide:", "word")
  a.train(:notsolution,       "slit:", "word"); a.train(:notsolution,      "noose:", "word")
  a.train(:notsolution,        "car:", "word"); a.train(:notsolution,      "drown:", "word")
  a.train(:notsolution,     "murder:", "word"); a.train(:notsolution,  "disappear:", "word")
  a.train(:notsolution,     "vanish:", "word"); a.train(:notsolution,      "death:", "word")
  a.train(:notsolution,        "die:", "word"); a.train(:notsolution,    "firearm:", "word")
  a.train(:notsolution,      "heart:", "word"); a.train(:notsolution,       "head:", "word")
  a.train(:notsolution, "guillotine?", "word"); a.train(:notsolution,    "gallows?", "word")
  a.train(:notsolution,      "choke?", "word"); a.train(:notsolution,  "asfyxiate?", "word")
  a.train(:notsolution,   "strangle?", "word"); a.train(:notsolution,       "neck?", "word")
  a.train(:notsolution,  "beheading?", "word"); a.train(:notsolution,   "headsman?", "word")
  a.train(:notsolution,      "sword?", "word"); a.train(:notsolution,        "axe?", "word")
  a.train(:notsolution,    "cleaver?", "word"); a.train(:notsolution,       "chop?", "word")
  a.train(:notsolution,       "hack?", "word"); a.train(:notsolution,       "chop?", "word")
  a.train(:notsolution,      "slash?", "word"); a.train(:notsolution,       "chop?", "word")
  a.train(:notsolution,        "cut?", "word"); a.train(:notsolution,    "suicide?", "word")
  a.train(:notsolution,       "slit?", "word"); a.train(:notsolution,      "noose?", "word")
  a.train(:notsolution,        "car?", "word"); a.train(:notsolution,      "drown?", "word")
  a.train(:notsolution,     "murder?", "word"); a.train(:notsolution,  "disappear?", "word")
  a.train(:notsolution,     "vanish?", "word"); a.train(:notsolution,      "death?", "word")
  a.train(:notsolution,        "die?", "word"); a.train(:notsolution,    "firearm?", "word")
  a.train(:notsolution,      "heart?", "word"); a.train(:notsolution,       "head?", "word")
  
  b = File.read("data/output/third_set/problem_definition.txt").strip

  a_class     = a.classify(*b)
  result      = a_class[0]
  decision    = result.to_s
  
  if decision == "notsolution"
    "I can't think of anything, sorry.".play "en"
  else
    first_action  = File.read("data/output/first_set/chosen_action.txt")
    second_action = File.read("data/output/second_set/chosen_action.txt")
    
    ddg = DuckDuckGo.new
    zci = ddg.zeroclickinfo("#{first_action}#{second_action}") # ZeroClickInfo object
    
    problem            = zci.heading # Stephen Fry
    defintion          = zci.abstract_text # Stephen John Fry is an English actor, screenwriter, author, playwright, ...
    possible_solutions = zci.related_topics["_"][0].text
    
    puts "Your problem is #{problem}: #{definition}"
    
    puts "Therefore: #{possible_solutions}"
  end
end
first_set() click to toggle source

Generate symbolic relationship from first dataset.

# File lib/aibrain.rb, line 10
def self.first_set
  require "duck_duck_go"
  require "tts"

  noun   = File.readlines("data/input/first_set/nouns.txt")
  verb   = File.readlines("data/input/first_set/verbs.txt")
  action = File.readlines("data/input/first_set/actions.txt")
  
  chosen_noun   = noun.sample
  chosen_verb   = verb.sample
  chosen_action = action.sample

  ddg = DuckDuckGo.new
  zci = ddg.zeroclickinfo("#{verb}") # ZeroClickInfo object

  heading        = zci.heading
  abstract_text  = zci.abstract_text
  related_topics = zci.related_topics["_"][0].text
  
  "#{heading}#{abstract_text}#{related_topics}".play "en"
  
  open("data/output/first_set/problem_defintion.txt", "w") { |f|
    f.puts "#{abstract_text}"
  }
  
  # Write symbolic articles for first set in output.
  open("data/output/first_set/chosen_noun.txt", "w") { |f|
    f.puts chosen_noun
  }

  open("data/output/first_set/chosen_verb.txt", "w") { |f|
    f.puts chosen_noun
  }

  open("data/output/first_set/chosen_action.txt", "w") { |f|
    f.puts chosen_noun
  }
end
generate_knowledge_set() click to toggle source
# File lib/aibrain.rb, line 7
def self.generate_knowledge_set

  # Generate symbolic relationship from first dataset.
  def self.first_set
    require "duck_duck_go"
    require "tts"
  
    noun   = File.readlines("data/input/first_set/nouns.txt")
    verb   = File.readlines("data/input/first_set/verbs.txt")
    action = File.readlines("data/input/first_set/actions.txt")
    
    chosen_noun   = noun.sample
    chosen_verb   = verb.sample
    chosen_action = action.sample

    ddg = DuckDuckGo.new
    zci = ddg.zeroclickinfo("#{verb}") # ZeroClickInfo object

    heading        = zci.heading
    abstract_text  = zci.abstract_text
    related_topics = zci.related_topics["_"][0].text
    
    "#{heading}#{abstract_text}#{related_topics}".play "en"
    
    open("data/output/first_set/problem_defintion.txt", "w") { |f|
      f.puts "#{abstract_text}"
    }
    
    # Write symbolic articles for first set in output.
    open("data/output/first_set/chosen_noun.txt", "w") { |f|
      f.puts chosen_noun
    }

    open("data/output/first_set/chosen_verb.txt", "w") { |f|
      f.puts chosen_noun
    }

    open("data/output/first_set/chosen_action.txt", "w") { |f|
      f.puts chosen_noun
    }
  end
  
  # Generate symbolic relationship from second dataset.
  def self.second_set
    require "duck_duck_go"
    require "tts"
    
    noun   = File.readlines("data/input/second_set/nouns.txt")
    verb   = File.readlines("data/input/second_set/verbs.txt")
    action = File.readlines("data/input/second_set/actions.txt")

    chosen_noun   = noun.sample
    chosen_verb   = verb.sample
    chosen_action = action.sample

    ddg = DuckDuckGo.new
    zci = ddg.zeroclickinfo("#{verb}") # ZeroClickInfo object

    heading        = zci.heading
    abstract_text  = zci.abstract_text
    related_topics = zci.related_topics["_"][0].text
    
    "#{heading}#{abstract_text}#{related_topics}".play "en"
    
    open("data/output/second_set/problem_defintion.txt", "w") { |f|
      f.puts "#{abstract_text}"
    }

    # Write symbolic articles for second set in output.
    open("data/output/second_set/chosen_noun.txt", "w") { |f|
      f.puts chosen_noun
    }

    open("data/output/second_set/chosen_verb.txt", "w") { |f|
      f.puts chosen_noun
    }

    open("data/output/second_set/chosen_action.txt", "w") { |f|
      f.puts chosen_noun
    }
  end
  
  # Generate solutin based on both data sets.
  def self.solution_brainstorm
    require "duck_duck_go"
    require "naive_bayes"
    require "tts"
  
    # Chosen nouns from first and second dataset.
    first_noun    = File.read("data/output/first_set/chosen_noun.txt")
    second_noun   = File.read("data/output/second_set/chosen_noun.txt")
    
    # Chosen verbs from first and second dataset.
    first_verb    = File.read("data/output/first_set/chosen_verb.txt")
    second_verb   = File.read("data/output/second_set/chosen_verb.txt")
    
    # Chosen actions from first and second dataset.
    first_action  = File.read("data/output/first_set/chosen_action.txt")
    second_action = File.read("data/output/second_set/chosen_action.txt")
    
    ddg = DuckDuckGo.new
    zci = ddg.zeroclickinfo("#{first_verb}#{second_verb}") # ZeroClickInfo object

    heading        = zci.heading
    abstract_text  = zci.abstract_text
    related_topics = zci.related_topics["_"][0].text
    
    "#{heading}#{abstract_text}#{related_topics}".play "en"
    
    open("data/output/third_set/problem_defintion.txt", "w") { |f|
      f.puts "#{abstract_text}"
    }
  end
end
second_set() click to toggle source

Generate symbolic relationship from second dataset.

# File lib/aibrain.rb, line 50
def self.second_set
  require "duck_duck_go"
  require "tts"
  
  noun   = File.readlines("data/input/second_set/nouns.txt")
  verb   = File.readlines("data/input/second_set/verbs.txt")
  action = File.readlines("data/input/second_set/actions.txt")

  chosen_noun   = noun.sample
  chosen_verb   = verb.sample
  chosen_action = action.sample

  ddg = DuckDuckGo.new
  zci = ddg.zeroclickinfo("#{verb}") # ZeroClickInfo object

  heading        = zci.heading
  abstract_text  = zci.abstract_text
  related_topics = zci.related_topics["_"][0].text
  
  "#{heading}#{abstract_text}#{related_topics}".play "en"
  
  open("data/output/second_set/problem_defintion.txt", "w") { |f|
    f.puts "#{abstract_text}"
  }

  # Write symbolic articles for second set in output.
  open("data/output/second_set/chosen_noun.txt", "w") { |f|
    f.puts chosen_noun
  }

  open("data/output/second_set/chosen_verb.txt", "w") { |f|
    f.puts chosen_noun
  }

  open("data/output/second_set/chosen_action.txt", "w") { |f|
    f.puts chosen_noun
  }
end
solution_brainstorm() click to toggle source

Generate solutin based on both data sets.

# File lib/aibrain.rb, line 90
def self.solution_brainstorm
  require "duck_duck_go"
  require "naive_bayes"
  require "tts"

  # Chosen nouns from first and second dataset.
  first_noun    = File.read("data/output/first_set/chosen_noun.txt")
  second_noun   = File.read("data/output/second_set/chosen_noun.txt")
  
  # Chosen verbs from first and second dataset.
  first_verb    = File.read("data/output/first_set/chosen_verb.txt")
  second_verb   = File.read("data/output/second_set/chosen_verb.txt")
  
  # Chosen actions from first and second dataset.
  first_action  = File.read("data/output/first_set/chosen_action.txt")
  second_action = File.read("data/output/second_set/chosen_action.txt")
  
  ddg = DuckDuckGo.new
  zci = ddg.zeroclickinfo("#{first_verb}#{second_verb}") # ZeroClickInfo object

  heading        = zci.heading
  abstract_text  = zci.abstract_text
  related_topics = zci.related_topics["_"][0].text
  
  "#{heading}#{abstract_text}#{related_topics}".play "en"
  
  open("data/output/third_set/problem_defintion.txt", "w") { |f|
    f.puts "#{abstract_text}"
  }
end
sum_of_knowledge() click to toggle source
# File lib/aibrain.rb, line 122
def self.sum_of_knowledge
  first_definition_text  = File.read("data/output/first_set/problem_defintion.txt")
  second_definition_text = File.read("data/output/second_set/problem_defintion.txt")
  overall_problem        = File.read("data/output/third_set/problem_definition.txt")
  
  puts "Your first problem had been: #{first_definition_text}"
  puts "Your second problem had been: #{second_definition_text}"
  
  puts "Therefore, one possible solution is: #{overall_problem}"
  
  puts "Lets see if I have a solution..."; sleep(3)

  ddg = DuckDuckGo.new
  zci = ddg.zeroclickinfo("#{verb}") # ZeroClickInfo object

  heading        = zci.heading
  abstract_text  = zci.abstract_text
  related_topics = zci.related_topics["_"][0].text
    
  "#{heading}#{abstract_text}#{related_topics}".play "en"
end