Class: Mitie::NER

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path = nil, pointer: nil) ⇒ NER

Returns a new instance of NER.



5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/mitie/ner.rb', line 5

def initialize(path = nil, pointer: nil)
  if path
    # better error message
    raise ArgumentError, "File does not exist" unless File.exist?(path)
    @pointer = FFI.mitie_load_named_entity_extractor(path)
  elsif pointer
    @pointer = pointer
  else
    raise ArgumentError, "Must pass either a path or a pointer"
  end

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

Instance Attribute Details

#pointerObject (readonly)

Returns the value of attribute pointer.



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

def pointer
  @pointer
end

Class Method Details

.finalize(pointer) ⇒ Object



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

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

Instance Method Details

#doc(text) ⇒ Object



25
26
27
# File 'lib/mitie/ner.rb', line 25

def doc(text)
  Document.new(self, text)
end

#entities(text) ⇒ Object



29
30
31
# File 'lib/mitie/ner.rb', line 29

def entities(text)
  doc(text).entities
end

#save_to_disk(filename) ⇒ Object



33
34
35
36
37
38
# File 'lib/mitie/ner.rb', line 33

def save_to_disk(filename)
  if FFI.mitie_save_named_entity_extractor(filename, pointer) != 0
    raise Error, "Unable to save model"
  end
  nil
end

#tagsObject



19
20
21
22
23
# File 'lib/mitie/ner.rb', line 19

def tags
  FFI.mitie_get_num_possible_ner_tags(pointer).times.map do |i|
    FFI.mitie_get_named_entity_tagstr(pointer, i).to_s
  end
end

#tokens(text) ⇒ Object



40
41
42
# File 'lib/mitie/ner.rb', line 40

def tokens(text)
  doc(text).tokens
end

#tokens_with_offset(text) ⇒ Object



44
45
46
# File 'lib/mitie/ner.rb', line 44

def tokens_with_offset(text)
  doc(text).tokens_with_offset
end