RePrec

 view release on metacpan or  search on metacpan

lib/RePrec/Collection.pm  view on Meta::CPAN

######################### -*- Mode: Perl -*- #########################
##
## File          : $RCSfile: Collection.pm,v $
##
## Author        : Norbert Goevert
## Created On    : Thu Feb  6 17:43:59 1997
## Last Modified : Time-stamp: <2000-11-23 17:40:56 goevert>
##
## Description   : 
##
## $Id: Collection.pm,v 1.28 2003/06/13 12:29:30 goevert Exp $
##
######################################################################


use strict;


## ###################################################################
## package RePrec::Collection
## ###################################################################

package RePrec::Collection;


use Carp;

use vars qw($VERSION);

'$Name: release_0_32 $ 0_0' =~ /(\d+)[-_](\d+)/; $VERSION = sprintf '%d.%03d', $1, $2;


## public ############################################################

sub new {

  my $proto = shift;
  my $class = ref($proto) || $proto;
  my %params = @_;

  my $self  = {};

  bless $self => $class;

  $self->_init(%params);

  return $self;
}


sub get_numdocs {

  my $self = shift;
  return $self->{numdocs};
}


sub relevant {

  my $self = shift;
  my($qid, $docid) = @_;

  $self->{qrels}->{$qid}->{$docid};
}


sub get_numrels {

  my $self = shift;
  my $qid = shift;

  return 0 unless defined $self->{numrels}->{$qid};

  $self->{numrels}->{$qid};
}


## private ###########################################################

sub _init {

  my $self = shift;
  my %parms = @_;

  my $file   = $parms{file};
  my $sep    = defined $parms{separator} ? $parms{separator} : ' +';
  my $ignore = defined $parms{ignore}    ? $parms{ignore}    : undef;
  my $qid    = defined $parms{qid}       ? $parms{qid}       : 0;
  my $docid  = defined $parms{docid}     ? $parms{docid}     : 1;
  my $judge  = defined $parms{judge}     ? $parms{judge}     : 2;
  $self->{numdocs} = $parms{numdocs}
    or croak "`Number of documents in collection' parameter missing\n";

  my $QRELS = IO::File->new($file)
    or croak "Couldn't read open file `$file': $!\n";

  my(%qrels, %numrels);
  local $_;
  while (<$QRELS>) {
    chomp;
    next if defined $ignore and /$ignore/;
    my($_qid, $_docid, $_judge) = (split /$sep/)[$qid, $docid, $judge];
    if ($_judge == 1) {



( run in 1.001 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )