class UClassify

Attributes

read_api_key[RW]
write_api_key[RW]

Public Class Methods

new() click to toggle source
# File lib/uclassify.rb, line 17
def initialize
  @write_calls = Array.new
  @text_trains = Array.new
end

Public Instance Methods

add_class(class_name) click to toggle source
# File lib/uclassify.rb, line 76
def add_class (class_name)
  new_class = UClassifyClass.new(class_name)
  @write_calls.last.add_class(new_class)
  self
end
create_classifier(classifier_name) click to toggle source
# File lib/uclassify.rb, line 22
def create_classifier(classifier_name)
  check_for_write_key
  @write_api_key = write_api_key
  write_call = UClassifyWriteCall.new(write_api_key,classifier_name)
  id = UClassifyCreateID.new(UClassifyUtils.string_to_id(classifier_name))
  write_call.add_create_id(id)
  @write_calls << write_call
end
fire_request() click to toggle source
# File lib/uclassify.rb, line 45
def fire_request
  request = UClassifyRequest.new
  @last_response = request.fire_request(generate_request_string)
  if is_response_valid?
    puts "SUCCESS!"
  else
    puts "FAILURE"
  end
  puts "Reply from server:"  
  @last_response
end
generate_request_string() click to toggle source
# File lib/uclassify.rb, line 31
def generate_request_string
  @document = Nokogiri::XML::Document.new("1.0")
  @document.encoding="utf-8"
  @uclassify_root_node =  Nokogiri::XML::Node.new('uclassify',@document)
  @uclassify_root_node['xmlns']="http://api.uclassify.com/1/RequestSchema"
  @uclassify_root_node['version']="1.01"
  @document.root=@uclassify_root_node
  generate_train_texts
  generate_write_calls
  xml_string = @document.to_xml
  xml_string.split.join("\n")
  xml_string   
end
is_response_valid?() click to toggle source
# File lib/uclassify.rb, line 57
def is_response_valid? 
  response_as_hash['uclassify']['status']['success'] == "true"
end
response_as_hash() click to toggle source
# File lib/uclassify.rb, line 61
def response_as_hash
  if @last_response
        @last_response.parsed_response
    else
      raise "No request has been fired yet. Please do a uclassify.fire_request"
    end
end
train_class_with_text(class_name,text) click to toggle source
# File lib/uclassify.rb, line 82
def train_class_with_text (class_name,text)
  train_id = UClassifyUtils.string_to_id(class_name)
  text_id = UClassifyUtils.string_to_id(text)
  add_training_class(train_id,class_name,text_id)
  train_text(text)
end
untrain_class_with_text(class_name,text) click to toggle source
# File lib/uclassify.rb, line 89
def untrain_class_with_text(class_name,text)
  train_id = UClassifyUtils.string_to_id(class_name)
  text_id = UClassifyUtils.string_to_id(text)
  untrain_class(train_id,class_name,text_id)
  train_text(text)
  
end
with_classifier_name(classifier_name) click to toggle source
# File lib/uclassify.rb, line 69
def with_classifier_name classifier_name 
  check_for_write_key
  write_call = UClassifyWriteCall.new(@write_api_key,classifier_name)
  @write_calls << write_call
  self
end

Private Instance Methods

add_training_class(train_id,class_name,text_id) click to toggle source
# File lib/uclassify.rb, line 99
def add_training_class (train_id,class_name,text_id)
  training_class = UClassifyTrainClass.new(train_id,class_name,text_id)
  @write_calls.last.add_training_class(training_class)  
  self
end
check_for_write_key() click to toggle source
# File lib/uclassify.rb, line 138
def check_for_write_key
  if (!@write_api_key) 
    raise "No Write API Key for UClassify. Please specify one with 'uclassify.write_api_key=YOUR_KEY'"
  end
end
generate_train_texts() click to toggle source
# File lib/uclassify.rb, line 116
def generate_train_texts
  #add all the text train calls
   if @text_trains.size >0 
     main_texts_node = Nokogiri::XML::Node.new('texts',@document)
     @uclassify_root_node.add_child(main_texts_node)
     @text_trains.each do |text_train|
       node=text_train.to_xml_node(@document)
       main_texts_node.add_child(node)
     end
   end
end
generate_write_calls() click to toggle source
# File lib/uclassify.rb, line 128
def generate_write_calls 
  #add all the write calls
  if @write_calls.size > 0
    @write_calls.each do |write_call|
      node=write_call.to_xml_node(@document)
      @uclassify_root_node.add_child(node)
    end
  end
end
train_text(text) click to toggle source
# File lib/uclassify.rb, line 110
def train_text(text)
  text = UClassifyText.new(text)
  @text_trains << text
  self
end
untrain_class(train_id,class_name,text_id) click to toggle source
# File lib/uclassify.rb, line 105
def untrain_class(train_id,class_name,text_id)
  untraining_class = UClassifyUnTrainClass.new(train_id,class_name,text_id)
  @write_calls.last.add_training_class(untraining_class)
end