Как предварительно загрузить синтаксическую сеть, чтобы вывод анализа разбирался быстрее

Я использую 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 имеет два ограничения, с которыми вы столкнулись:

  1. Предложения читаются из стандартного ввода или файла, а не из переменной
  2. Модель состоит из двух частей, а не из одного исполняемого файла

У меня есть ветвь тензор потока / модели:

https://github.com/dmansfield/models/tree/documents-from-tensor

который я работаю с сопровождающими, чтобы слиться. С помощью этой ветви кода вы можете построить всю модель в одном графике (используя новый скрипт на python, называемый parsey_mcparseface.py) и передать предложения с помощью тензора (то есть переменной python).

Боюсь, что это не самый лучший ответ в мире, потому что он постоянно меняется. Там нет простого рецепта, чтобы получить это работает в данный момент.

Другие вопросы по тегам