Class: Aibrain::Knowledge_Areas

Inherits:
Object
  • Object
show all
Defined in:
lib/aibrain.rb

Class Method Summary collapse

Class Method Details

.create_solutionObject



144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
# 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_setObject

Generate symbolic relationship from first dataset.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 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_setObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# 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_setObject

Generate symbolic relationship from second dataset.



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# 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_brainstormObject

Generate solutin based on both data sets.



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# 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_knowledgeObject



122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# 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