Class: EvalRuby::RetrievalResult
- Inherits:
-
Object
- Object
- EvalRuby::RetrievalResult
- Defined in:
- lib/eval_ruby/evaluator.rb
Overview
Holds retrieval evaluation results with IR metric accessors.
Instance Method Summary collapse
-
#hit_rate ⇒ Float
1.0 if any relevant doc is retrieved, 0.0 otherwise.
-
#initialize(retrieved:, relevant:) ⇒ RetrievalResult
constructor
A new instance of RetrievalResult.
-
#mrr ⇒ Float
Mean reciprocal rank.
-
#ndcg(k: nil) ⇒ Float
Normalized discounted cumulative gain.
-
#precision_at_k(k) ⇒ Float
Precision at k.
-
#recall_at_k(k) ⇒ Float
Recall at k.
-
#to_h ⇒ Hash{Symbol => Float}
All retrieval metrics.
Constructor Details
#initialize(retrieved:, relevant:) ⇒ RetrievalResult
Returns a new instance of RetrievalResult.
86 87 88 89 |
# File 'lib/eval_ruby/evaluator.rb', line 86 def initialize(retrieved:, relevant:) @retrieved = retrieved @relevant = relevant end |
Instance Method Details
#hit_rate ⇒ Float
Returns 1.0 if any relevant doc is retrieved, 0.0 otherwise.
115 116 117 |
# File 'lib/eval_ruby/evaluator.rb', line 115 def hit_rate @retrieved.any? { |doc| @relevant.include?(doc) } ? 1.0 : 0.0 end |
#mrr ⇒ Float
Returns mean reciprocal rank.
104 105 106 |
# File 'lib/eval_ruby/evaluator.rb', line 104 def mrr Metrics::MRR.new.call(retrieved: @retrieved, relevant: @relevant) end |
#ndcg(k: nil) ⇒ Float
Returns normalized discounted cumulative gain.
110 111 112 |
# File 'lib/eval_ruby/evaluator.rb', line 110 def ndcg(k: nil) Metrics::NDCG.new.call(retrieved: @retrieved, relevant: @relevant, k: k) end |
#precision_at_k(k) ⇒ Float
Returns precision at k.
93 94 95 |
# File 'lib/eval_ruby/evaluator.rb', line 93 def precision_at_k(k) Metrics::PrecisionAtK.new.call(retrieved: @retrieved, relevant: @relevant, k: k) end |
#recall_at_k(k) ⇒ Float
Returns recall at k.
99 100 101 |
# File 'lib/eval_ruby/evaluator.rb', line 99 def recall_at_k(k) Metrics::RecallAtK.new.call(retrieved: @retrieved, relevant: @relevant, k: k) end |
#to_h ⇒ Hash{Symbol => Float}
Returns all retrieval metrics.
120 121 122 123 124 125 126 127 128 |
# File 'lib/eval_ruby/evaluator.rb', line 120 def to_h { precision_at_k: precision_at_k(@retrieved.length), recall_at_k: recall_at_k(@retrieved.length), mrr: mrr, ndcg: ndcg, hit_rate: hit_rate } end |