Class: Mitie::BinaryRelationTrainer

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

Instance Method Summary collapse

Constructor Details

#initialize(ner, name: "") ⇒ BinaryRelationTrainer

Returns a new instance of BinaryRelationTrainer.



3
4
5
6
# File 'lib/mitie/binary_relation_trainer.rb', line 3

def initialize(ner, name: "")
  @pointer = FFI.mitie_create_binary_relation_trainer(name, ner.pointer)
  @pointer.free = FFI["mitie_free"]
end

Instance Method Details

#add_negative_binary_relation(tokens, range1, range2) ⇒ Object



18
19
20
21
22
23
24
25
26
# File 'lib/mitie/binary_relation_trainer.rb', line 18

def add_negative_binary_relation(tokens, range1, range2)
  check_add(tokens, range1, range2)

  tokens_pointer = Utils.array_to_pointer(tokens)
  status = FFI.mitie_add_negative_binary_relation(@pointer, tokens_pointer, range1.begin, range1.size, range2.begin, range2.size)
  if status != 0
    raise Error, "Unable to add binary relation"
  end
end

#add_positive_binary_relation(tokens, range1, range2) ⇒ Object



8
9
10
11
12
13
14
15
16
# File 'lib/mitie/binary_relation_trainer.rb', line 8

def add_positive_binary_relation(tokens, range1, range2)
  check_add(tokens, range1, range2)

  tokens_pointer = Utils.array_to_pointer(tokens)
  status = FFI.mitie_add_positive_binary_relation(@pointer, tokens_pointer, range1.begin, range1.size, range2.begin, range2.size)
  if status != 0
    raise Error, "Unable to add binary relation"
  end
end

#betaObject



28
29
30
# File 'lib/mitie/binary_relation_trainer.rb', line 28

def beta
  FFI.mitie_binary_relation_trainer_get_beta(@pointer)
end

#beta=(value) ⇒ Object

Raises:

  • (ArgumentError)


32
33
34
35
36
# File 'lib/mitie/binary_relation_trainer.rb', line 32

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

  FFI.mitie_binary_relation_trainer_set_beta(@pointer, value)
end

#num_negative_examplesObject



50
51
52
# File 'lib/mitie/binary_relation_trainer.rb', line 50

def num_negative_examples
  FFI.mitie_binary_relation_trainer_num_negative_examples(@pointer)
end

#num_positive_examplesObject



46
47
48
# File 'lib/mitie/binary_relation_trainer.rb', line 46

def num_positive_examples
  FFI.mitie_binary_relation_trainer_num_positive_examples(@pointer)
end

#num_threadsObject



38
39
40
# File 'lib/mitie/binary_relation_trainer.rb', line 38

def num_threads
  FFI.mitie_binary_relation_trainer_get_num_threads(@pointer)
end

#num_threads=(value) ⇒ Object



42
43
44
# File 'lib/mitie/binary_relation_trainer.rb', line 42

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

#trainObject

Raises:



54
55
56
57
58
59
60
61
62
63
64
# File 'lib/mitie/binary_relation_trainer.rb', line 54

def train
  if num_positive_examples + num_negative_examples == 0
    raise Error, "You can't call train() on an empty trainer"
  end

  detector = FFI.mitie_train_binary_relation_detector(@pointer)

  raise Error, "Unable to create binary relation detector. Probably ran out of RAM." if detector.null?

  Mitie::BinaryRelationDetector.new(pointer: detector)
end