| RePrec documentation | Contained in the RePrec distribution. |
RePrec::PRR - compute precision values
(see RePrec(3))
Computation of precision values according to the Probability of Relevance measure (user standpoint: stop at a given number of relevant documents retrieved).
Mainly see RePrec(3). The precision function gives an unique interpretation for each recall point. Precision can be computed for any recall point.
Yes. Please let me know!
RePrec(3), perl(1).
Norbert Gövert <goevert@ls6.cs.uni-dortmund.de>
| RePrec documentation | Contained in the RePrec distribution. |
######################### -*- Mode: Perl -*- ######################### ## ## File : $RCSfile: PRR.pm,v $ ## ## Author : Norbert Goevert ## Created On : Wed Feb 5 11:19:51 1997 ## Last Modified : Time-stamp: <2000-11-09 18:20:07 goevert> ## ## Description : ## ## $Id: PRR.pm,v 1.28 2003/06/13 12:29:30 goevert Exp $ ## ###################################################################### use strict;
package RePrec::PRR; use base qw(RePrec); our $VERSION; '$Name: release_0_32 $ 0_0' =~ /(\d+)[-_](\d+)/; $VERSION = sprintf '%d.%03d', $1, $2; ## public ############################################################ sub precision { my $self = shift; my @recall = @_; my @result; foreach my $recall (@recall) { return undef unless $recall and $recall > 0 and $recall <= 1; # at which number of relevant documents do we stop? my $NR = $recall * $self->{rels}; # how many ranks do we have to examine? my $NRint = int $NR; $NRint++ if $NR > $NRint; my $rank = $self->{rels_rank}->[$NRint - 1]; #print STDERR "$rank $recall $NR $NRint\n"; # number of relevant docs within the previous ranks my $k = 0; $k = $self->{rank_rels_nrels}->[$rank - 1]->[0] if $rank; # number of non relevant docs within the previous ranks my $j = 0; $j = $self->{rank_rels_nrels}->[$rank - 1]->[1] if $rank; # number of non relevant docs within the current rank my $i = $self->{rank_rels_nrels}->[$rank]->[1] - $j; # number of relevant docs which must be retrieved from the current rank my $s = $NRint - $k; # number of relevant docs within the current rank my $r = $self->{rank_rels_nrels}->[$rank]->[0] - $k; # do the PRR formula push @result, [ $recall, $NR / ($NR + $j + $s * $i / ($r + 1.0)) ]; } @result; } ## private ###########################################################
1; __END__