我正在使用syntaxnet存储库中提供的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
在上面,模型存储在变量中,因此在函数调用上运行每一行所需的时间较短。
怎么做?
答案 0 :(得分:3)
当前版本的syntaxnet的Parsey McParseface有两个限制你遇到过:
我有张量流/模型的分支:
https://github.com/dmansfield/models/tree/documents-from-tensor
我正在与维护者合并以获得合并。使用代码的这个分支,您可以在一个图形中构建整个模型(使用名为parsey_mcparseface.py的新python脚本)并使用张量(即python变量)输入句子。
不是世界上最好的答案我害怕因为它非常不稳定。目前没有简单的方法让这项工作正常工作。