Как предварительно загрузить синтаксическую сеть, чтобы вывод анализа разбирался быстрее
Я использую demo.sh, предоставленный в хранилище синтаксиса. Если я даю ввод с разделением '\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
Выше модель хранится в переменной, поэтому для запуска каждой строки при вызове функции требуется меньше времени.
Как это сделать?
1 ответ
Текущая версия синтакснета Parsey McParseface имеет два ограничения, с которыми вы столкнулись:
- Предложения читаются из стандартного ввода или файла, а не из переменной
- Модель состоит из двух частей, а не из одного исполняемого файла
У меня есть ветвь тензор потока / модели:
https://github.com/dmansfield/models/tree/documents-from-tensor
который я работаю с сопровождающими, чтобы слиться. С помощью этой ветви кода вы можете построить всю модель в одном графике (используя новый скрипт на python, называемый parsey_mcparseface.py) и передать предложения с помощью тензора (то есть переменной python).
Боюсь, что это не самый лучший ответ в мире, потому что он постоянно меняется. Там нет простого рецепта, чтобы получить это работает в данный момент.