Я использую demo.sh из репозитория syntaxnet. Если я ввожу ввод с разделением '\n', для запуска 3000 строк текста требуется 27,05 секунды, но когда я запускаю каждую строку по отдельности, это занимает более одного часа.
Это означает, что загрузка модели занимает более 2,5 секунд. Если этот шаг будет отделен и переведен на наличные, это ускорит весь конвейер.
Вот модифицированная версия demo.sh: -
PARSER_EVAL=bazel-bin/syntaxnet/parser_eval
MODEL_DIR=syntaxnet/models/parsey_mcparseface
[[ "$1" == "--conll" ]] && INPUT_FORMAT=stdin-conll || INPUT_FORMAT=stdin
$PARSER_EVAL \
--input=$INPUT_FORMAT \
--output=stdout-conll \
--hidden_layer_sizes=64 \
--arg_prefix=brain_tagger \
--graph_builder=structured \
--task_context=$MODEL_DIR/context.pbtxt \
--model_path=$MODEL_DIR/tagger-params \
--slim_model \
--batch_size=1024 \
--alsologtostderr \
| \
$PARSER_EVAL \
--input=stdin-conll \
--output=stdout-conll \
--hidden_layer_sizes=512,512 \
--arg_prefix=brain_parser \
--graph_builder=structured \
--task_context=$MODEL_DIR/context.pbtxt \
--model_path=$MODEL_DIR/parser-params \
--slim_model \
--batch_size=1024 \
--alsologtostderr \
Я хочу создать вызов функции, который будет принимать входное предложение и выдавать результат с парсером зависимостей, хранящимся в локальной переменной, как показано ниже (приведенный ниже код предназначен только для того, чтобы прояснить вопрос)
dependency_parsing_model = ...
def give_dependency_parser(sentence,model=dependency_parsing_model):
...
#logic here
...
return dependency_parsing_output
В приведенном выше примере модель сохраняется в переменной, поэтому для запуска каждой строки при вызове функции требуется меньше времени.
Как это сделать?