Class: Hyrum::Validators::QualityValidator
- Inherits:
-
Object
- Object
- Hyrum::Validators::QualityValidator
- Defined in:
- lib/hyrum/validators/quality_validator.rb
Constant Summary collapse
- DIVERSITY_WEIGHT =
0.5
- SIMILARITY_WEIGHT =
0.5
- MIN_DIVERSITY_THRESHOLD =
30.0- MIN_SIMILARITY_THRESHOLD =
85.0
Instance Attribute Summary collapse
-
#messages ⇒ Object
readonly
Returns the value of attribute messages.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#original_message ⇒ Object
readonly
Returns the value of attribute original_message.
Instance Method Summary collapse
-
#initialize(original_message, messages, options) ⇒ QualityValidator
constructor
A new instance of QualityValidator.
- #validate ⇒ Object
Constructor Details
#initialize(original_message, messages, options) ⇒ QualityValidator
Returns a new instance of QualityValidator.
13 14 15 16 17 |
# File 'lib/hyrum/validators/quality_validator.rb', line 13 def initialize(, , ) = = = end |
Instance Attribute Details
#messages ⇒ Object (readonly)
Returns the value of attribute messages.
11 12 13 |
# File 'lib/hyrum/validators/quality_validator.rb', line 11 def end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
11 12 13 |
# File 'lib/hyrum/validators/quality_validator.rb', line 11 def end |
#original_message ⇒ Object (readonly)
Returns the value of attribute original_message.
11 12 13 |
# File 'lib/hyrum/validators/quality_validator.rb', line 11 def end |
Instance Method Details
#validate ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/hyrum/validators/quality_validator.rb', line 19 def validate return empty_result if .empty? all_variations = .values.flatten return single_variation_result if all_variations.size <= 1 semantic_score = calculate_semantic_similarity(all_variations) lexical_score = calculate_lexical_diversity(all_variations) overall_score = (semantic_score * SIMILARITY_WEIGHT) + (lexical_score * DIVERSITY_WEIGHT) passed = overall_score >= [:min_quality] && lexical_score >= MIN_DIVERSITY_THRESHOLD && semantic_score >= MIN_SIMILARITY_THRESHOLD warnings = build_warnings(semantic_score, lexical_score) ValidationResult.new( score: overall_score.round(2), semantic_similarity: semantic_score.round(2), lexical_diversity: lexical_score.round(2), passed: passed, details: { min_quality_threshold: [:min_quality], variation_count: all_variations.size }, warnings: warnings ) end |