#!/usr/bin/perl -w
use strict;

my $BIN = '/nfs/isd3/hdaume/bin.i686';
my $RES = '/nfs/isd3/hdaume/projects/chunking';
my $tmpFile = "/tmp/tagchunk.input." . int(rand() * 10000000);

my $weightfile = "w-5";

open T, ">$tmpFile" or die;

my @fn = ();
my @lc = ();
my $nf = 0;
while (1) {
    my $fname = shift or last;
    if ($fname eq '-faster') {
        $weightfile = "w-1";
    } elsif ($fname eq '-lc') {
        $weightfile = "w-lc-5";
    } elsif ($fname eq '-') {
        while (my $fn = <>) {
            chomp $fn;
            open F, $fn or die;
            my $l = 0;
            while (<F>) {
                $l++;
                print T $_;
            }
            close F or die;
            $fn[$nf] = 'STDOUT';
            $lc[$nf] = $l;
            $nf++;
        }
        last;
    } else {
        open F, $fname or die;
        my $l = 0;
        while (<F>) {
            $l++;
            print T $_;
        }
        close F or die;
        $fn[$nf] = $fname;
        $lc[$nf] = $l;
        $nf++;
    }
}

close T or die;

open I, "$BIN/tagchunk -predict . $RES/$weightfile $tmpFile $RES |" or die;
for (my $n=0; $n<$nf; $n++) {
    open O, ">$fn[$n].tc" or die;
    for (my $l=0; $l<$lc[$n]; $l++) {
        my $line = <I>;
        if (not defined $line) { die "not enough lines from tagchunk\n"; }
        print O $line;
    }
    close O or die;
}
while (<I>) { die "too many lines from tagchunk\n"; }
close I or die;

`rm -f $tmpFile`;
