Module: SmartCsvImport::CosineSimilarity
- Defined in:
- lib/smart_csv_import/cosine_similarity.rb
Class Method Summary collapse
Class Method Details
.call(vec_a, vec_b) ⇒ Object
5 6 7 8 9 10 11 12 13 |
# File 'lib/smart_csv_import/cosine_similarity.rb', line 5 def self.call(vec_a, vec_b) dot_product = vec_a.zip(vec_b).sum { |a, b| a * b } magnitude_a = Math.sqrt(vec_a.sum { |v| v**2 }) magnitude_b = Math.sqrt(vec_b.sum { |v| v**2 }) return 0.0 if magnitude_a.zero? || magnitude_b.zero? dot_product / (magnitude_a * magnitude_b) end |