Class: Vangrail::JointAssessor

Inherits:
Object
  • Object
show all
Defined in:
lib/vangrail/joint_assessor.rb

Overview

Runs score readers and feeds their validated outputs to one joint model.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(readers:, model:) ⇒ JointAssessor

Returns a new instance of JointAssessor.

Raises:

  • (ArgumentError)


11
12
13
14
15
16
17
18
19
# File 'lib/vangrail/joint_assessor.rb', line 11

def initialize(readers:, model:)
  @readers = Array(readers).freeze
  @model = model
  raise ArgumentError, 'model must be a JointRiskModel' unless model.is_a?(JointRiskModel)

  ids = @readers.map { |reader| reader.id.to_s }
  raise ArgumentError, 'reader ids must be unique' unless ids.uniq == ids
  raise ArgumentError, 'too many readers' if ids.size > JointRiskArtifact::MAX_READERS
end

Instance Attribute Details

#modelObject (readonly)

Returns the value of attribute model.



9
10
11
# File 'lib/vangrail/joint_assessor.rb', line 9

def model
  @model
end

#readersObject (readonly)

Returns the value of attribute readers.



9
10
11
# File 'lib/vangrail/joint_assessor.rb', line 9

def readers
  @readers
end

Instance Method Details

#assess(text, side:, origin:, language:, domain:, prior: nil, scenario: nil, confidence: 0.95, **context) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/vangrail/joint_assessor.rb', line 21

def assess(text, side:, origin:, language:, domain:, prior: nil, scenario: nil,
           confidence: 0.95, **context)
  results = readers.map do |reader|
    score(reader, text, side: side, origin: origin, language: language,
                        domain: domain, **context)
  end
  model.estimate(
    results,
    side: side,
    origin: origin,
    language: language,
    domain: domain,
    prior: prior,
    scenario: scenario,
    confidence: confidence,
  )
end