14

syntaxnet をインストールし、提供されたデモ スクリプトを使用してパーサーを実行できます。理想的には、Python から直接実行したいと思います。私が見つけた唯一のコードはこれでした:

import subprocess
import os
os.chdir(r"../models/syntaxnet")
subprocess.call([    
"echo 'Bob brought the pizza to Alice.' | syntaxnet/demo.sh"
], shell = True)

これは完全な災害です-非効率的で複雑すぎます(pythonからpythonを呼び出すには、pythonで行う必要があります)。

シェル スクリプトや標準 I/O などを介さずに、Python API を直接呼び出すにはどうすればよいですか?

編集 -なぜこれは syntaxnet/demo.sh を開いて読むのと同じくらい簡単ではないのですか?

このシェル スクリプトは、2 つの Python スクリプト (parser_eval と conll2tree) を呼び出します。これらは Python スクリプトとして記述されており、Python モジュールにインポートすると複数のエラーが発生します。よく見ると、スクリプトのようなレイヤーとネイティブ コードが追加されています。Python コンテキストですべてを実行するには、これらの上位レイヤーをリファクタリングする必要があります。誰もそのような変更を加えて syntaxnet をフォークしていませんか、そうするつもりですか?

4

4 に答える 4

4

全体として、demo.sh が実行する 2 つのスクリプト ( https://github.com/tensorflow/models/blob/master/syntaxnet/syntaxnet/parser_eval.pyおよびhttps: //github.com/tensorflow/models/blob/master/syntaxnet/syntaxnet/conll2tree.py ) を、呼び出し可能な Python API を公開する Python モジュールに変換します。

両方のスクリプトは Tensorflow の tf.app.flags API を使用します (この SO の質問: TensorFlow での tf.app.flags の目的は何ですか? で説明されていますtf.app.flags) 。シングルトン。

ええ、これらを Python API として呼び出し可能にする作業を行うだけで済みます :)

于 2016-10-02T09:08:53.067 に答える