Class: Mitie::TextCategorizerTrainer

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(filename) ⇒ TextCategorizerTrainer

Returns a new instance of TextCategorizerTrainer.

Raises:

  • (ArgumentError)


3
4
5
6
7
8
# File 'lib/mitie/text_categorizer_trainer.rb', line 3

def initialize(filename)
  raise ArgumentError, "File does not exist" unless File.exist?(filename)
  @pointer = FFI.mitie_create_text_categorizer_trainer(filename)

  ObjectSpace.define_finalizer(self, self.class.finalize(@pointer))
end

Class Method Details

.finalize(pointer) ⇒ Object



48
49
50
51
# File 'lib/mitie/text_categorizer_trainer.rb', line 48

def self.finalize(pointer)
  # must use proc instead of stabby lambda
  proc { FFI.mitie_free(pointer) }
end

Instance Method Details

#add(text, label) ⇒ Object



10
11
12
13
14
# File 'lib/mitie/text_categorizer_trainer.rb', line 10

def add(text, label)
  tokens = text.is_a?(Array) ? text : Mitie.tokenize(text)
  tokens_pointer = Utils.array_to_pointer(tokens)
  FFI.mitie_add_text_categorizer_labeled_text(@pointer, tokens_pointer, label)
end

#betaObject



16
17
18
# File 'lib/mitie/text_categorizer_trainer.rb', line 16

def beta
  FFI.mitie_text_categorizer_trainer_get_beta(@pointer)
end

#beta=(value) ⇒ Object

Raises:

  • (ArgumentError)


20
21
22
23
24
# File 'lib/mitie/text_categorizer_trainer.rb', line 20

def beta=(value)
  raise ArgumentError, "beta must be greater than or equal to zero" unless value >= 0

  FFI.mitie_text_categorizer_trainer_set_beta(@pointer, value)
end

#num_threadsObject



26
27
28
# File 'lib/mitie/text_categorizer_trainer.rb', line 26

def num_threads
  FFI.mitie_text_categorizer_trainer_get_num_threads(@pointer)
end

#num_threads=(value) ⇒ Object



30
31
32
# File 'lib/mitie/text_categorizer_trainer.rb', line 30

def num_threads=(value)
  FFI.mitie_text_categorizer_trainer_set_num_threads(@pointer, value)
end

#sizeObject



34
35
36
# File 'lib/mitie/text_categorizer_trainer.rb', line 34

def size
  FFI.mitie_text_categorizer_trainer_size(@pointer)
end

#trainObject

Raises:



38
39
40
41
42
43
44
45
46
# File 'lib/mitie/text_categorizer_trainer.rb', line 38

def train
  raise Error, "You can't call train() on an empty trainer" if size.zero?

  categorizer = FFI.mitie_train_text_categorizer(@pointer)

  raise Error, "Unable to create text categorizer. Probably ran out of RAM." if categorizer.null?

  Mitie::TextCategorizer.new(pointer: categorizer)
end