Author image Jeff Kubina
and 1 contributors

NAME

Text::Corpus::Inspec - Interface to Inspec abstracts corpus.

SYNOPSIS

  use Text::Corpus::Inspec;
  use Data::Dump qw(dump);
  use Log::Log4perl qw(:easy);
  Log::Log4perl->easy_init ($INFO);
  my $corpus = Text::Corpus::Inspec->new (corpusDirectory => $corpusDirectory);
  dump $corpus->getTotalDocuments;

DESCRIPTION

Text::Corpus::Inspec provides a simple interface for accessing the documents in the Inspec corpus.

The categories, description, title, etc... of a specified document are accessed using Text::Corpus::Inspec::Document. Also, all errors and warnings are logged using Log::Log4perl, which should be initialized.

CONSTRUCTOR

new

The method new creates an instance of the Text::Corpus::Inspec class with the following parameters:

corpusDirectory
 corpusDirectory => '...'

corpusDirectory is the path to the top most directory of the corpus documents. It is the path to the directory containing the sub-directories named Test, Training, and Validation of the corpus and is needed to locate all the documents in the corpus. If it is not defined, then the enviroment variable TEXT_CORPUS_INSPEC_CORPUSDIRECTORY is used if it is defined. A message is logged and an exception is thrown if no directory is specified.

METHODS

getDocument

  getDocument (index => $index, subsetType => $subsetType)

getDocument returns a Text::Corpus::Inspec::Document object of the document with the specified index and subsetType, which is either 'all', 'test', 'training', or 'validation'; the default is 'all'.

  getDocument (uri => $uri)

getDocument returns a Text::Corpus::Inspec::Document object of the document with specified uri.

getTotalDocuments

  getTotalDocuments (subsetType => 'all')

getTotalDocuments returns the total number of documents in the specified subset-type of the corpus; which is either 'all', 'test', 'training', or 'validation'; the default is 'all'. The index to the documents in each subset ranges from zero to getTotalDocuments(subsetType => $subsetType) - 1.

test

 test ()

test does tests to ensure the documents in the corpus are accessible and can be parsed. It returns true if all tests pass, otherwise a description of the test that failed is logged using Log::Log4perl and false is returned.

For example:

  use Text::Corpus::Inspec;
  use Data::Dump qw(dump);
  use Log::Log4perl qw(:easy);
  Log::Log4perl->easy_init ($INFO);
  my $corpus = Text::Corpus::Inspec->new (corpusDirectory => $corpusDirectory);
  dump $corpus->test;

EXAMPLES

The example below will print out all the information for each document in the corpus.

  use Text::Corpus::Inspec;
  use Data::Dump qw(dump);
  use Log::Log4perl qw(:easy);
  Log::Log4perl->easy_init ($INFO);
  my $corpus = Text::Corpus::Inspec->new (corpusDirectory => $corpusDirectory);
  my $totalDocuments = $corpus->getTotalDocuments ();
  for (my $i = 0; $i < $totalDocuments; $i++)
  {
    eval
    {
      my $document = $corpus->getDocument (index => $i);
      my %documentInfo;
      $documentInfo{title} = $document->getTitle ();
      $documentInfo{body} = $document->getBody ();
      $documentInfo{content} = $document->getContent ();
      $documentInfo{categories} = $document->getCategories ();
      $documentInfo{uri} = $document->getUri ();
      dump \%documentInfo;
    };
  } 

INSTALLATION

To install the module set the environment variable TEXT_CORPUS_INSPEC_CORPUSDIRECTORY to the path of the Inspec corpus and run the following commands:

  perl Makefile.PL
  make
  make test
  make install

If you are on a windows box you should use 'nmake' rather than 'make'.

The module will install if TEXT_CORPUS_INSPEC_CORPUSDIRECTORY is not defined, but little testing will be performed. After the Inspec corpus is installed testing of the module can be performed by running:

  use Text::Corpus::Inspec;
  use Data::Dump qw(dump);
  use Log::Log4perl qw(:easy);
  Log::Log4perl->easy_init ($INFO);
  my $corpus = Text::Corpus::Inspec->new (corpusDirectory => $corpusDirectory);
  dump $corpus->test;

AUTHOR

 Jeff Kubina<jeff.kubina@gmail.com>

COPYRIGHT

Copyright (c) 2009 Jeff Kubina. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the LICENSE file included with this module.

KEYWORDS

inspec, english corpus, information processing

SEE ALSO

Text::Corpus::Inspec::Document, Log::Log4perl