Class: Hash
- Inherits:
-
Object
- Object
- Hash
- Defined in:
- lib/ncpp/utils.rb
Direct Known Subclasses
Constant Summary collapse
- KEY_SUGGEST_THRESH =
if more than 70% certain, suggest key
0.7- KEY_SUGGEST_JARO_WEIGHT =
70% Jaro-Winkler
0.7- KEY_SUGGEST_LEVENSHTEIN_WEIGHT =
30% Levenshtein
0.3
Instance Method Summary collapse
Instance Method Details
#suggest_similar_key(key_name) ⇒ Object
571 572 573 574 575 576 577 578 579 580 581 582 583 584 |
# File 'lib/ncpp/utils.rb', line 571 def suggest_similar_key(key_name) key_name = key_name.to_s.downcase scores = self.map do |k, _| jw = DidYouMean::JaroWinkler.distance(key_name, k.to_s) lev = 1.0 - [DidYouMean::Levenshtein.distance(key_name, k.to_s) / [key_name.length].max.to_f, 1.0].min jw * KEY_SUGGEST_JARO_WEIGHT + lev * KEY_SUGGEST_LEVENSHTEIN_WEIGHT end max_score = scores.max if max_score < KEY_SUGGEST_THRESH nil else self.keys[scores.index(max_score)].to_s end end |