AI-Classifier

 view release on metacpan or  search on metacpan

META.json  view on Meta::CPAN

   },
   "prereqs" : {
      "configure" : {
         "requires" : {
            "ExtUtils::MakeMaker" : "6.30"
         }
      },
      "develop" : {
         "requires" : {
            "Pod::Coverage::TrustPod" : "0",
            "Test::Pod" : "1.41",
            "Test::Pod::Coverage" : "1.08"
         }
      },
      "runtime" : {
         "requires" : {
            "AI::NaiveBayes" : "0.01",
            "AI::NaiveBayes::Learner" : "0",
            "Carp" : "0",
            "File::Find::Rule" : "0.32",
            "File::Spec" : "0",
            "List::Util" : "0",

META.json  view on Meta::CPAN

            "MooseX::Storage" : "0.25",
            "Text::WordCounter" : "0",
            "perl" : "5.010",
            "strict" : "0",
            "warnings" : "0"
         }
      },
      "test" : {
         "requires" : {
            "Data::Dumper" : "0",
            "Test::More" : "0"
         }
      }
   },
   "release_status" : "stable",
   "resources" : {
      "repository" : {
         "type" : "git",
         "web" : "http://github.com/operasoftware/AI-Classifier"
      }
   },

META.yml  view on Meta::CPAN

---
abstract: 'A convenient class for text classification'
author:
  - 'Zbigniew Lukasiak <zlukasiak@opera.com>, Tadeusz Sośnierz <tsosnierz@opera.com>'
build_requires:
  Data::Dumper: 0
  Test::More: 0
configure_requires:
  ExtUtils::MakeMaker: 6.30
dynamic_config: 0
generated_by: 'Dist::Zilla version 4.300028, CPAN::Meta::Converter version 2.120921'
license: perl
meta-spec:
  url: http://module-build.sourceforge.net/META-spec-v1.4.html
  version: 1.4
name: AI-Classifier
no_index:

Makefile.PL  view on Meta::CPAN


use ExtUtils::MakeMaker 6.30;



my %WriteMakefileArgs = (
  "ABSTRACT" => "A convenient class for text classification",
  "AUTHOR" => "Zbigniew Lukasiak <zlukasiak\@opera.com>, Tadeusz So\305\233nierz <tsosnierz\@opera.com>",
  "BUILD_REQUIRES" => {
    "Data::Dumper" => 0,
    "Test::More" => 0
  },
  "CONFIGURE_REQUIRES" => {
    "ExtUtils::MakeMaker" => "6.30"
  },
  "DISTNAME" => "AI-Classifier",
  "EXE_FILES" => [],
  "LICENSE" => "perl",
  "NAME" => "AI::Classifier",
  "PREREQ_PM" => {
    "AI::NaiveBayes" => "0.01",

dist.ini  view on Meta::CPAN

copyright_holder = Opera Software ASA
copyright_year   = 2012
version = 0.03
[@Basic]
[AutoPrereqs]
[Prereqs]
Moose = 1.15
MooseX::Storage = 0.25
File::Find::Rule = 0.32
AI::NaiveBayes = 0.01
[TestRelease]
[PkgVersion]
[MetaNoIndex]
directory = t/lib
directory = examples
[InstallGuide]
[MetaJSON]
[MetaResources]
repository.web   = http://github.com/operasoftware/AI-Classifier
repository.type  = git

[NextRelease]
format = %-9v %{yyyy-MM-dd}d
[CheckChangeLog]
[PodSyntaxTests]
[PodCoverageTests]
[PodWeaver]

t/file_reader.t  view on Meta::CPAN

use strict;
use warnings;

use Test::More;
use AI::Classifier::Text::FileLearner;
use File::Spec;
use Data::Dumper;

{
    my $iterator = AI::Classifier::Text::FileLearner->new( 
        training_dir => File::Spec->catdir( qw( something something else ) ) 
    );
    is( 
        $iterator->get_category( File::Spec->catdir( qw( something something else aaa bbb ) ) ),

t/file_reader.t  view on Meta::CPAN

            'file' => File::Spec->catfile( qw( t data training_initial_features ham 1 ) ),
            'categories' => [ 'ham' ],
            features => { trala => 1, some_tag => 3, NO_URLS => 2 }
        },
    };
    is_deeply( \%hash, $target );
}

{
    {
        package TestLearner;

        sub new { bless { examples => [] } };
        sub add_example {
            my ( $self, @example ) = @_;
            push @{ $self->{examples} }, \@example;
        }

    }

    my $internal_learner = TestLearner->new();
    my $learner = AI::Classifier::Text::FileLearner->new( 
        training_dir => File::Spec->catdir( @training_dirs ),
        learner => $internal_learner
    );
    $learner->teach_it;
    my $weights;
    if( $internal_learner->{examples}[0][1]{aaaa} ){
        $weights = $internal_learner->{examples}[1][1];
    }
    else{
        $weights = $internal_learner->{examples}[0][1];
    }
    ok( abs( $weights->{ccccc} - 0.44 ) < 0.01
            and 
        abs( $weights->{NO_URLS} - 0.9 ) < 0.01 )
        or warn Dumper( $weights );
    
    $internal_learner = TestLearner->new();
    $learner = AI::Classifier::Text::FileLearner->new( 
        training_dir => File::Spec->catdir( @training_dirs ),
        learner => $internal_learner,
        term_weighting => 'n',
    );
    $learner->teach_it;
    if( $internal_learner->{examples}[0][1]{aaaa} ){
        $weights = $internal_learner->{examples}[1][1];
    }
    else{

t/release-pod-coverage.t  view on Meta::CPAN

#!perl

BEGIN {
  unless ($ENV{RELEASE_TESTING}) {
    require Test::More;
    Test::More::plan(skip_all => 'these tests are for release candidate testing');
  }
}


use Test::More;

eval "use Test::Pod::Coverage 1.08";
plan skip_all => "Test::Pod::Coverage 1.08 required for testing POD coverage"
  if $@;

eval "use Pod::Coverage::TrustPod";
plan skip_all => "Pod::Coverage::TrustPod required for testing POD coverage"
  if $@;

all_pod_coverage_ok({ coverage_class => 'Pod::Coverage::TrustPod' });

t/release-pod-syntax.t  view on Meta::CPAN

#!perl

BEGIN {
  unless ($ENV{RELEASE_TESTING}) {
    require Test::More;
    Test::More::plan(skip_all => 'these tests are for release candidate testing');
  }
}

use Test::More;

eval "use Test::Pod 1.41";
plan skip_all => "Test::Pod 1.41 required for testing POD" if $@;

all_pod_files_ok();

t/state.t  view on Meta::CPAN


use strict;
use Test::More tests => 6;
use AI::Classifier::Text;
use AI::NaiveBayes::Learner;
use File::Spec;
ok(1); # If we made it this far, we're loaded.

my $lr = AI::NaiveBayes::Learner->new(purge => 0);

$lr->add_example(attributes => _hash(qw(sheep very valuable farming)),
		          labels => ['farming'] );
is $lr->examples, 1;

t/text.t  view on Meta::CPAN

use strict;
use warnings;

use Test::More;
use AI::Classifier::Text::Analyzer;

my $analyzer = AI::Classifier::Text::Analyzer->new();
    
ok( $analyzer, 'Analyzer created' );

my $features = {};
$analyzer->analyze( 'aaaa http://www.example.com/bbb?xx=yy&bb=cc;dd=ff', $features );
is_deeply( $features, { aaaa => 1, 'example.com' => 1, MANY_URLS => 2 } );



( run in 0.531 second using v1.01-cache-2.11-cpan-4d50c553e7e )