syntaxnetリポジトリで提供されている demo.sh を使用しています。'\n'区切りで入力すると、3000 行のテキストを実行するのに 27.05 秒かかりますが、各行を個別に実行すると 1 時間以上かかります。
これは、モデルの読み込みに 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
上記では、モデルは変数に格納されるため、関数呼び出しで各行を実行するのにかかる時間が短くなります。
これを行う方法 ?