Я хочу перебирать список файлов документов, обрабатывать их и выводить результат в одном файле, но с указанными идентификаторами файлов. Обработка включает в себя: удаление разметки, токенизацию, разделение предложения.add intermitting ids in output output
вход что-то вроде этого:
/path/to/file1 docid1
/path/to/file2 docid2
Выходной сигнал будет лексемы, по одному в строке, с разметкой, содержащей DocId и приговор факса:
<D=docid1.1>
tok1
tok2
</D>
<D=docid1.2>
...
</D>
<D=docid2.1>
...
</D>
Как я это делаю теперь является следующим:
>$outfile
for filename_id in `cat $filelist`
do
filename=`echo $path_id | cut -f1 -d' '`
docid=`echo $path_id | cut -f2 -d' '`
strip_markup.sh $filename \
| tokenize.sh \
| sentence_split.sh \
| add_ids.sh $docid
| >> $outfile
done
Теперь проблема в том, что у меня довольно много мелких файлов, и каждый на этапах есть некоторое время запуска (запуск JVM, модели загрузки и т. д.), некоторые из них значительно. Фактическое время работы очень быстро, как видно из очень больших (искусственных) файлов. Анализ показал, что этот шаг (разделение токенизации и предложения) является самым трудоемким в моем проекте (некоторые другие концептуально более «сложные» вещи работают быстрее.)
В основном, что я хотел бы сделать дает скрипту strip_markup.sh весь список файлов вместо одиночных имен файлов, но идентификаторы необходимо каким-то образом вставить. Формат ввода и вывода не должен изменяться, если это не совсем необходимо. Также мы хотели бы использовать модули, которые мы имеем для токенизации и разделения, потому что много данных уже обработано таким образом.
Любые идеи, как это сделать?
Add_ids.sh также печатает номер предложения. В любом случае, по-моему, принципиальная проблема по-прежнему существует с вашим решением. – benroth
В этом случае, как 'add_ids.sh' получает номер предложения из' sentence_split.sh'? Кажется, что глобальное состояние разделяется между вашими сценариями, которые не отображаются в коде, который вы опубликовали. Я бы предложил опубликовать содержимое всех ваших скриптов, но я думаю, что этот вопрос выходит за рамки stackoverflow и, возможно, должен быть перемещен на codereview.stackexchange.com. – chepner