3

我有多个需要标记的文本文件,POS 和 NER。我正在使用C&C标记器并运行了他们的教程,但我想知道是否有一种方法可以标记多个文件而不是一个一个地标记。

目前我正在标记文件:

bin/tokkie --input working/tutorial/example.txt--quotes delete --output working/tutorial/example.tok

如下,然后是词性标记:

bin/pos --input working/tutorial/example.tok --model models/pos --output working/tutorial/example.pos

最后是命名实体识别:

bin/ner --input working/tutorial/example.pos --model models/ner --output working/tutorial/example.ner

我不确定如何创建一个循环来执行此操作并保持文件名与输入相同,但扩展名表示它具有的标记。我正在考虑使用 bash 脚本或 Perl 来打开目录,但我不确定如何输入 C&C 命令以使脚本能够理解。

目前我正在手动操作,至少可以说非常耗时!

4

2 回答 2

3

未经测试,可能需要一些目录修改。

use autodie qw(:all);
use File::Basename qw(basename);

for my $text_file (glob 'working/tutorial/*.txt') {
    my $base_name = basename($text_file, '.txt');
    system 'bin/tokkie',
        '--input'  => "working/tutorial/$base_name.txt",
        '--quotes' => 'delete',
        '--output' => "working/tutorial/$base_name.tok";
    system 'bin/pos',
        '--input'  => "working/tutorial/$base_name.tok",
        '--model'  => 'models/pos',
        '--output' => "working/tutorial/$base_name.pos";
    system 'bin/ner',
        '--input'  => "working/tutorial/$base_name.pos",
        '--model'  => 'models/ner',
        '--output' => "working/tutorial/$base_name.ner";
}
于 2011-03-01T15:31:08.203 回答
1

在 Bash 中:

#!/bin/bash
dir='working/tutorial'
for file in "$dir"/*.txt
do
    noext=${file/%.txt}

    bin/tokkie --input "$file" --quotes delete --output "$noext.tok"

    bin/pos --input "$noext.tok" --model models/pos --output "$noext.pos"

    bin/ner --input "$noext.pos" --model models/ner --output "$noext.ner"

done
于 2011-03-01T16:41:41.683 回答