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