Syntaxnet/Parsey McParseface python API

zvi*_*fer 14 python nlp parsey-mcparseface syntaxnet

我已经安装了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)
Run Code Online (Sandbox Code Playgroud)

这是一个完全的灾难 - 低效和过于复杂(从python调用python应该用python完成).

如何直接调用python API,而无需通过shell脚本,标准I/O等?

编辑 - 为什么这不像打开syntaxnet/demo.sh并阅读它一样简单?

这个shell脚本调用两个python脚本(parser_eval和conll2tree),它们被编写为python脚本,无法导入多个错误而无法导入到python模块中.仔细观察会产生类似脚本的图层和本机代码.这些上层需要重构,以便在python上下文中运行整个事物.有没有人用这样的修改分叉语法网或打算这样做?

AKX*_*AKX 4

总而言之,重构两个脚本demo.sh运行看起来不会是一个问题(https://github.com/tensorflow/models/blob/master/syntaxnet/syntaxnet/parser_eval.py和https: //github.com/tensorflow/models/blob/master/syntaxnet/syntaxnet/conll2tree.py)到一个Python模块中,该模块公开了一个可以调用的Python API.

这两个脚本都使用Tensorflow的tf.app.flags API(在这个SO问题中描述:TensorFlow中tf.app.flags的目的是什么?),所以那些必须被重构为常规参数,因为它tf.app.flags是一个进程级别单身.

所以,是的,你只需要做这些工作,使这些可调用的Python API :)