| |
| |
| |
| |
|
|
| use warnings; |
| use strict; |
| use Getopt::Long "GetOptions"; |
|
|
| my $MORF_DIR; |
| my $MODEL; |
| my $TMP_DIR = "."; |
|
|
| GetOptions("morfessor-dir=s" => \$MORF_DIR, |
| "model=s" => \$MODEL, |
| "tmpdir=s" => \$TMP_DIR); |
|
|
| die("Must provide --model=s argument") if (!defined($MODEL)); |
|
|
| my $cmd = ""; |
|
|
| my $ESC_FILE = "$TMP_DIR/morf.esc.$$"; |
|
|
| $cmd = "cat /dev/stdin | sed s/^#/HASH/ > $ESC_FILE"; |
| print STDERR "Executing: $cmd\n"; |
| `$cmd`; |
|
|
| $cmd = ""; |
| if (defined($MORF_DIR)) { |
| $cmd .= "PYTHONPATH=$MORF_DIR $MORF_DIR/scripts/"; |
| } |
|
|
| my $OUT_FILE = "$TMP_DIR/morf.out.$$"; |
| $cmd .= "morfessor-segment " |
| ."-L $MODEL " |
| ."--output-format \"{analysis} \" " |
| ."--output-format-separator \" \" " |
| ."--output-newlines " |
| ."$ESC_FILE " |
| ."| sed 's/ \$//' | sed s/^HASH/#/ > $OUT_FILE"; |
| print STDERR "Executing: $cmd\n"; |
| `$cmd`; |
|
|
|
|
| open(FILE, $OUT_FILE) or die("Can't open file $OUT_FILE"); |
| while (my $line = <FILE>) { |
| print "$line"; |
| } |
| close(FILE); |
|
|
| unlink($OUT_FILE); |
| unlink($ESC_FILE); |
|
|
|
|