NAME
Data::CosineSimilarity - Compute the Cosine Similarity
SYNOPSIS
$cs = Data::CosineSimilarity->new;
$cs->add( label1 => { feature1 => 3, feature2 => 1, feature3 => 10 } );
$cs->add( label2 => ... );
$cs->add( label3 => ... );
# computes the cosine similarity
my $r = $cs->similarity( 'label1', 'label2' );
# the result object
my $cosine = $r->cosine;
my $radian = $r->radian;
my $degree = $r->degree;
my ($label1, $label2) = $r->labels;
# computes all the cosine similarity between 'label1' and the others.
my @all = $cs->all_for_label('label1');
# computes all, and returns the best
my ($best_label, $r) = $cs->best_for_label('label2');
# computes all, and returns the worst
my ($worst_label, $r) = $cs->worst_for_label('label2');
DESCRIPTION
Compute the cosine similarities between a set of vectors.
$class->new( %opts )
If all the feature vectors are normed then the computation of the cosine becomes just the dot product of the vectors. In this case, specify the option normed => 1, the performance will be greatly improved.
$self->add( label => $features )
$self->similarity( $label1, $label2 )
$self->all_for_label( $label )
$self->best_for_label( $label )
$self->worst_for_label( $label )
AUTHOR
Antoine Imbert, <antoine.imbert at gmail.com>
LICENSE AND COPYRIGHT
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.