3

У меня есть несколько текстовых файлов, которые необходимо подделать, POS и NER. Я использую тегеры C&C и запустил их учебник, но мне интересно, есть ли способ пометить несколько файлов, а не один за другим.Как мне перебирать несколько файлов, сохраняя базовое имя для дальнейшей обработки?

На данный момент я tokenising файлы:

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 

и, наконец, Названный Признание Entity:

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

I я не уверен, как бы я хотел создать цикл для этого и сохранить имя файла так же, как и вход, но с расширением, обозначающим его пометку. Я думал о сценарии bash или, возможно, Perl, чтобы открыть каталог, но я не уверен, как вводить команды C & C, чтобы понять сценарий.

В настоящий момент я делаю это вручную, и это занимает много времени, чтобы сказать наименее!

ответ

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"; 
} 
+0

Супер большое спасибо – jenniem001

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