Class: Hyrum::Validators::LexicalDiversity

Inherits:
Object
  • Object
show all
Defined in:
lib/hyrum/validators/lexical_diversity.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(variations) ⇒ LexicalDiversity

Returns a new instance of LexicalDiversity.



10
11
12
# File 'lib/hyrum/validators/lexical_diversity.rb', line 10

def initialize(variations)
  @variations = variations
end

Instance Attribute Details

#variationsObject (readonly)

Returns the value of attribute variations.



8
9
10
# File 'lib/hyrum/validators/lexical_diversity.rb', line 8

def variations
  @variations
end

Instance Method Details

#calculateObject



14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/hyrum/validators/lexical_diversity.rb', line 14

def calculate
  return 0.0 if variations.empty? || variations.size == 1

  # Calculate average pairwise Jaccard distance
  distances = []
  variations.combination(2).each do |var1, var2|
    distances << jaccard_distance(tokenize(var1), tokenize(var2))
  end

  # Convert to percentage (0-100)
  (distances.sum / distances.size * 100).round(2)
end