Module: Edits::Jaro
- Defined in:
- lib/edits/jaro.rb
Overview
Class Method Summary collapse
-
.distance(str1, str2) ⇒ Float
Calculate Jaro distance.
-
.similarity(seq1, seq2) ⇒ Float
Calculate Jaro similarity.
Class Method Details
.distance(str1, str2) ⇒ Float
Calculate Jaro distance
39 40 41 |
# File 'lib/edits/jaro.rb', line 39 def self.distance(str1, str2) 1.0 - similarity(str1, str2) end |
.similarity(seq1, seq2) ⇒ Float
Calculate Jaro similarity
Sj = 1/3 * ((m / |A|) + (m / |B|) + ((m - t) / m))
Where m is #matches and t is #transposes
18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/edits/jaro.rb', line 18 def self.similarity(seq1, seq2) return 1.0 if seq1 == seq2 return 0.0 if seq1.empty? || seq2.empty? seq1 = seq1.codepoints if seq1.is_a? String seq2 = seq2.codepoints if seq2.is_a? String m, t = jaro_matches(seq1, seq2) return 0.0 if m.zero? m = m.to_f (1.0 / 3) * ((m / seq1.length) + (m / seq2.length) + ((m - t) / m)) end |