class TinyClassifier::Command::GenerateClassifier
Public Class Methods
new(argv=[])
click to toggle source
Calls superclass method
TinyClassifier::Command::Base::new
# File lib/tiny-classifier/command/generate-classifier.rb, line 23 def initialize(argv=[]) super @output_dir = Dir.pwd option_parser.on("-o PATH", "--output-dir=PATH", "Path to the classifier command to be saved (default=current directory)") do |output_dir| @output_dir = output_dir end parse_command_line_options(argv) end
Public Instance Methods
classifier_name()
click to toggle source
# File lib/tiny-classifier/command/generate-classifier.rb, line 64 def classifier_name @classifier_name ||= "tc-classify-#{@categories.basename}" end
output_file_path()
click to toggle source
# File lib/tiny-classifier/command/generate-classifier.rb, line 68 def output_file_path @output_file_path ||= prepare_output_file_path end
run()
click to toggle source
Calls superclass method
TinyClassifier::Command::Base::run
# File lib/tiny-classifier/command/generate-classifier.rb, line 35 def run super unless data_file_path.exist? raise NoTrainingData.new(data_file_path) end unless prepare_output_file_path.parent.exist? raise InvalidOutputDir.new(prepare_output_file_path.parent) end FileUtils.mkdir_p(output_file_path.parent) File.open(output_file_path, "w") do |file| file.puts("#!/usr/bin/env ruby") file.puts("require \"base64\"") file.puts("require \"classifier-reborn\"") file.puts("require \"tiny-classifier/command/classify\"") file.puts("classifier_code = Base64.strict_decode64(\"#{encoded_classifier}\")") file.puts("command = TinyClassifier::Command::Classify.new([") file.puts(" \"--categories=#{@categories.all.join(",")}\",") file.puts(" \"--tokenizer=#{@tokenizer.type}\",") file.puts("])") file.puts("command.classifier = Marshal.load(classifier_code)") file.puts("command.run") end FileUtils.chmod("a+x", output_file_path) true rescue StandardError => error handle_error(error) end
Private Instance Methods
encoded_classifier()
click to toggle source
# File lib/tiny-classifier/command/generate-classifier.rb, line 73 def encoded_classifier @encoded_classifier ||= prepare_encoded_classifier end
prepare_encoded_classifier()
click to toggle source
# File lib/tiny-classifier/command/generate-classifier.rb, line 77 def prepare_encoded_classifier classifier_code = Marshal.dump(classifier) Base64.strict_encode64(classifier_code) end
prepare_output_file_path()
click to toggle source
# File lib/tiny-classifier/command/generate-classifier.rb, line 82 def prepare_output_file_path path = Pathname(@output_dir) path + classifier_name end