Class: SameSame::CosineSimilarity

Inherits:
Object
  • Object
show all
Defined in:
lib/same_same/cosine_similarity.rb

Instance Method Summary collapse

Instance Method Details

#dot_product(v1, v2) ⇒ Object



13
14
15
# File 'lib/same_same/cosine_similarity.rb', line 13

def dot_product(v1, v2)
  v1.zip(v2).map {|val1,val2| val1 * val2}.inject(:+)
end

#norm(vector) ⇒ Object



17
18
19
# File 'lib/same_same/cosine_similarity.rb', line 17

def norm(vector)
  Math.sqrt( vector.map {|val| val ** 2}.inject(:+) )
end

#sim(v1, v2) ⇒ Object



9
10
11
# File 'lib/same_same/cosine_similarity.rb', line 9

def sim(v1, v2)
  dot_product(v1, v2) / (norm(v1) * norm(v2))
end

#similarity(x, y) ⇒ Object



5
6
7
# File 'lib/same_same/cosine_similarity.rb', line 5

def similarity(x, y)
  sim(*TermFrequencyBuilder.build_vectors( x.data, y.data ))
end