読者です 読者をやめる 読者になる 読者になる

swig を触ってみた2

swig を触ってみた2

Perl な環境でオンライン学習による分類器が欲しいので,oll のバインディングを作るなど

先駆者として ruby バインディングがあるので(ref: https://github.com/syou6162/oll-ruby/blob/master/ext/oll_swig.i ),基本ママでいける

ただ,そのままだと使い勝手が悪いので,ruby バインディングでもやっているように,バインディングのラッパークラスを作ったほうが良さげ

% cat main.pl
use strict;
use warnings;
use utf8;

use oll_swig;

my $oll = oll_swig::oll->new();
my $fv = oll_swig::FeatureVector->new();
my $tmp = oll_swig::IntFloatPair->new(0, 1.0);
$fv->push($tmp);
$tmp = oll_swig::IntFloatPair->new(201, 2.2);
$fv->push($tmp);
$tmp = oll_swig::IntFloatPair->new(744, -0.3);
$fv->push($tmp);
$tmp = oll_swig::IntFloatPair->new(15, 3.0);
$fv->push($tmp);

$oll->trainExampleP(oll_swig::P_s->new(), $fv, 1);
$fv->clear();
$tmp = oll_swig::IntFloatPair->new(0, 3);
$fv->push($tmp);
$tmp = oll_swig::IntFloatPair->new(3, 3);
$fv->push($tmp);
$tmp = oll_swig::IntFloatPair->new(4, 3);
$fv->push($tmp);

print $oll->classify($fv) . "\n";
% perl main.pl
3

答え合わせ

 ./oll_line P
A 1 0:1.0 201:2.2 744:-0.3 15:3.0
T 0 0:3 3:3 4:3
3

初めてのRuby

初めてのRuby

opal には perl バインディングもあるし opal でいいか...