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.