class Greetlang::Syntax

Public Class Methods

for_from() click to toggle source

bayesian algorithm for detecting for_from type.

# File lib/greetlang.rb, line 124
def self.for_from
  require "naive_bayes"

  a = NaiveBayes.new(:spam, :ham)

  # For or from
  a.train(:for,   'for', 'word')
  a.train(:from, 'from', 'word')

  b = $for_from.split(' ')

  puts a.classify(*b)
end
greeting() click to toggle source

bayesian algorithm for detecting greeting type.

# File lib/greetlang.rb, line 10
def self.greeting
  require "naive_bayes"
  
  a = NaiveBayes.new(:polite, :rude)

  # Polite greeting
  a.train(:polite, 'Hello', 'word')
  a.train(:polite,   'Hey', 'word')

  # Rude greeting
  a.train(:rude,    'Hi', 'word')
  a.train(:rude,  'Ahoy', 'word')
  a.train(:rude,    'Yo', 'word')
  
  b = $greeting.split(' ')

  a.classify(*b)
end
irb() click to toggle source
# File lib/greetlang.rb, line 7
def self.irb

  # bayesian algorithm for detecting greeting type.
  def self.greeting
    require "naive_bayes"
    
    a = NaiveBayes.new(:polite, :rude)

    # Polite greeting
    a.train(:polite, 'Hello', 'word')
    a.train(:polite,   'Hey', 'word')

    # Rude greeting
    a.train(:rude,    'Hi', 'word')
    a.train(:rude,  'Ahoy', 'word')
    a.train(:rude,    'Yo', 'word')
    
    b = $greeting.split(' ')

    a.classify(*b)
  end
  
  # bayesian algorithm for detecting request type.
  def self.request
    require "naive_bayes"

    a = NaiveBayes.new(:request, :demand)

    # Requests and demands.
    a.train(:request,  'may', 'word')
    a.train(:request,  'can', 'word')
    a.train(:demand,  'will', 'word')

    b = $request.split(' ')

    puts a.classify(*b)
  end
  
  # bayesian algorithm for detecting item type.
  def self.item
    require "naive_bayes"

    a = NaiveBayes.new(:item, :object)

    # Item and gender
    a.train(:item,       'some apples', 'word')
    a.train(:item,      'some bananas', 'word')
    a.train(:item,      'some oranges', 'word')
    a.train(:item, 'some strawberries', 'word')
    a.train(:item,     'some apricots', 'word')
    a.train(:item,        'some kiwis', 'word')
    a.train(:item,       'many apples', 'word')
    a.train(:item,      'many bananas', 'word')
    a.train(:item,      'many oranges', 'word')
    a.train(:item, 'many strawberries', 'word')
    a.train(:item,     'many apricots', 'word')
    a.train(:item,        'many kiwis', 'word')
    a.train(:item,           'a apple', 'word')
    a.train(:item,          'a banana', 'word')
    a.train(:item,          'a orange', 'word')
    a.train(:item,     'a strawberrie', 'word')
    a.train(:item,         'a apricot', 'word')
    a.train(:item,            'a kiwi', 'word')
    a.train(:item,     'some potatoes', 'word')
    a.train(:item,     'some tomatoes', 'word')
    a.train(:item,    'some eggplants', 'word')
    a.train(:item,       'some onions', 'word')
    a.train(:item,       'some garlic', 'word')
    a.train(:item,      'some peppers', 'word')
    a.train(:item,     'many potatoes', 'word')
    a.train(:item,     'many tomatoes', 'word')
    a.train(:item,    'many eggplants', 'word')
    a.train(:item,       'many onions', 'word')
    a.train(:item,       'many garlic', 'word')
    a.train(:item,      'many peppers', 'word')
    a.train(:item,         'a potatoe', 'word')
    a.train(:item,         'a tomatoe', 'word')
    a.train(:item,        'a eggplant', 'word')
    a.train(:item,           'a onion', 'word')
    a.train(:item,          'a garlic', 'word')
    a.train(:item,          'a pepper', 'word')

    # Object and gender
    a.train(:object, 'some microphones', 'word')
    a.train(:object,     'some laptops', 'word')
    a.train(:object,   'some mousepads', 'word')
    a.train(:object,    'some consoles', 'word')
    a.train(:object,        'some mugs', 'word')
    a.train(:object,      'some knives', 'word')
    a.train(:object,    'some spatulas', 'word')
    a.train(:object,        'some pans', 'word')
    a.train(:object,        'some pots', 'word')
    a.train(:object, 'many microphones', 'word')
    a.train(:object,     'many laptops', 'word')
    a.train(:object,   'many mousepads', 'word')
    a.train(:object,    'many consoles', 'word')
    a.train(:object,        'many mugs', 'word')
    a.train(:object,      'many knives', 'word')
    a.train(:object,    'many spatulas', 'word')
    a.train(:object,        'many pans', 'word')
    a.train(:object,        'many pots', 'word')
    a.train(:object,    'a microphones', 'word')
    a.train(:object,        'a laptops', 'word')
    a.train(:object,      'a mousepads', 'word')
    a.train(:object,       'a consoles', 'word')
    a.train(:object,           'a mugs', 'word')
    a.train(:object,         'a knives', 'word')
    a.train(:object,       'a spatulas', 'word')
    a.train(:object,           'a pans', 'word')
    a.train(:object,           'a pots', 'word')
    
    b = $item.split(' ')

    puts a.classify(*b)
  end
  
  # bayesian algorithm for detecting for_from type.
  def self.for_from
    require "naive_bayes"

    a = NaiveBayes.new(:spam, :ham)

    # For or from
    a.train(:for,   'for', 'word')
    a.train(:from, 'from', 'word')

    b = $for_from.split(' ')

    puts a.classify(*b)
  end
  
  def self.user_location
    require "naive_bayes"

    a = NaiveBayes.new(:state, :nonstate)

    # State
    a.train(:state,      'Tennessee', 'word')
    a.train(:state,        'Georgia', 'word')
    a.train(:state,        'Alabama', 'word')
    a.train(:state,       'Kentucky', 'word')
    a.train(:state, 'North Carolina', 'word')

    # Non State
    a.train(:state, 'Guillotine', 'word')
    a.train(:state,       'Park', 'word')
    a.train(:state,   'Wildlife', 'word')
    a.train(:state,       'Tree', 'word')
    
    b = $user_location.split(' ')

    puts a.classify(*b)
  end
  
  # Main interactive shell.
  loop do
    print "Greetlang(main) #{number}> "
    request = gets.chomp
    
    if request == "exit"
      puts "Goodbye!"
      abort
    end
    
    request = request.split(" ")

    $greeting      = request[0]
    $request       = request[1]
    $item          = request[2]
    $for_from      = request[3]
    $user_location = request[4]
  
    Greetlang::Syntax.irb.greeting
    Greetlang::Syntax.irb.request
    Greetlang::Syntax.irb.item
    Greetlang::Syntax.irb.for_from
    Greetlang::Syntax.irb.user_location
  end
end
item() click to toggle source

bayesian algorithm for detecting item type.

# File lib/greetlang.rb, line 46
def self.item
  require "naive_bayes"

  a = NaiveBayes.new(:item, :object)

  # Item and gender
  a.train(:item,       'some apples', 'word')
  a.train(:item,      'some bananas', 'word')
  a.train(:item,      'some oranges', 'word')
  a.train(:item, 'some strawberries', 'word')
  a.train(:item,     'some apricots', 'word')
  a.train(:item,        'some kiwis', 'word')
  a.train(:item,       'many apples', 'word')
  a.train(:item,      'many bananas', 'word')
  a.train(:item,      'many oranges', 'word')
  a.train(:item, 'many strawberries', 'word')
  a.train(:item,     'many apricots', 'word')
  a.train(:item,        'many kiwis', 'word')
  a.train(:item,           'a apple', 'word')
  a.train(:item,          'a banana', 'word')
  a.train(:item,          'a orange', 'word')
  a.train(:item,     'a strawberrie', 'word')
  a.train(:item,         'a apricot', 'word')
  a.train(:item,            'a kiwi', 'word')
  a.train(:item,     'some potatoes', 'word')
  a.train(:item,     'some tomatoes', 'word')
  a.train(:item,    'some eggplants', 'word')
  a.train(:item,       'some onions', 'word')
  a.train(:item,       'some garlic', 'word')
  a.train(:item,      'some peppers', 'word')
  a.train(:item,     'many potatoes', 'word')
  a.train(:item,     'many tomatoes', 'word')
  a.train(:item,    'many eggplants', 'word')
  a.train(:item,       'many onions', 'word')
  a.train(:item,       'many garlic', 'word')
  a.train(:item,      'many peppers', 'word')
  a.train(:item,         'a potatoe', 'word')
  a.train(:item,         'a tomatoe', 'word')
  a.train(:item,        'a eggplant', 'word')
  a.train(:item,           'a onion', 'word')
  a.train(:item,          'a garlic', 'word')
  a.train(:item,          'a pepper', 'word')

  # Object and gender
  a.train(:object, 'some microphones', 'word')
  a.train(:object,     'some laptops', 'word')
  a.train(:object,   'some mousepads', 'word')
  a.train(:object,    'some consoles', 'word')
  a.train(:object,        'some mugs', 'word')
  a.train(:object,      'some knives', 'word')
  a.train(:object,    'some spatulas', 'word')
  a.train(:object,        'some pans', 'word')
  a.train(:object,        'some pots', 'word')
  a.train(:object, 'many microphones', 'word')
  a.train(:object,     'many laptops', 'word')
  a.train(:object,   'many mousepads', 'word')
  a.train(:object,    'many consoles', 'word')
  a.train(:object,        'many mugs', 'word')
  a.train(:object,      'many knives', 'word')
  a.train(:object,    'many spatulas', 'word')
  a.train(:object,        'many pans', 'word')
  a.train(:object,        'many pots', 'word')
  a.train(:object,    'a microphones', 'word')
  a.train(:object,        'a laptops', 'word')
  a.train(:object,      'a mousepads', 'word')
  a.train(:object,       'a consoles', 'word')
  a.train(:object,           'a mugs', 'word')
  a.train(:object,         'a knives', 'word')
  a.train(:object,       'a spatulas', 'word')
  a.train(:object,           'a pans', 'word')
  a.train(:object,           'a pots', 'word')
  
  b = $item.split(' ')

  puts a.classify(*b)
end
request() click to toggle source

bayesian algorithm for detecting request type.

# File lib/greetlang.rb, line 30
def self.request
  require "naive_bayes"

  a = NaiveBayes.new(:request, :demand)

  # Requests and demands.
  a.train(:request,  'may', 'word')
  a.train(:request,  'can', 'word')
  a.train(:demand,  'will', 'word')

  b = $request.split(' ')

  puts a.classify(*b)
end
user_location() click to toggle source
# File lib/greetlang.rb, line 138
def self.user_location
  require "naive_bayes"

  a = NaiveBayes.new(:state, :nonstate)

  # State
  a.train(:state,      'Tennessee', 'word')
  a.train(:state,        'Georgia', 'word')
  a.train(:state,        'Alabama', 'word')
  a.train(:state,       'Kentucky', 'word')
  a.train(:state, 'North Carolina', 'word')

  # Non State
  a.train(:state, 'Guillotine', 'word')
  a.train(:state,       'Park', 'word')
  a.train(:state,   'Wildlife', 'word')
  a.train(:state,       'Tree', 'word')
  
  b = $user_location.split(' ')

  puts a.classify(*b)
end