首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Syntaxnet / Parsey McParseface python

Syntaxnet / Parsey McParseface python
EN

Stack Overflow用户
提问于 2016-08-22 09:04:15
回答 4查看 4.4K关注 0票数 14

我已经安装了syntaxnet,并且能够使用提供的演示脚本运行解析器。理想情况下,我希望直接从python运行它。我发现的唯一代码是:

代码语言:javascript
复制
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来完成)。

我如何直接调用python,而不需要查看shell脚本、标准I/O等等?

编辑-为什么不像打开syntaxnet/demo.sh并读取它那样容易呢?

这个shell脚本调用两个python脚本(parser_eval和conll2tree),它们作为python脚本编写,不能导入python模块而不会导致多个错误。仔细观察会产生额外的类似脚本的层和本机代码。这些上层需要重构,以便在python上下文中运行整个过程。难道没有人用这样的修改来分叉syntaxnet或打算这样做吗?

EN

回答 4

Stack Overflow用户

发布于 2016-10-02 09:08:53

总之,将demo.sh运行的两个脚本(eval.pyhttps://github.com/tensorflow/models/blob/master/syntaxnet/syntaxnet/conll2tree.py)重构为一个暴露您可以调用的Python的Python模块似乎并不是一个问题。

这两个脚本都使用Tensorflow的tf.app.flags API (在这里这里有这样的问题:tf.app.flags in TensorFlow的目的是什么?),因此这些脚本必须重构成常规参数,因为tf.app.flags是一个进程级的单例。

所以是的,您只需做一些工作就可以将这些调用作为Python :)

票数 4
EN

Stack Overflow用户

发布于 2017-07-04 10:07:37

这里有一个用于语法网拉格宁的Rest。

我已经在我的云服务器上成功地运行了它们。我想分享以下几点:

  1. 建造码头 sudo构建-< ./Dockerfile 在构建syntaxnet时可能会出现一些错误,只需按照./Dockerfile并手动构建停靠器,就很容易理解。
  2. 下载训练过的模型 语法网的模型是这里 (如中文环球/中国 ) 拖曳定位这里模型 将它们解压缩到文件夹中,例如./synataxnet_data,这样您就有了类似于./synataxnet_data/Chinese的内容。
  3. 运行和测试 3.1 Synataxnet 运行-p 9000:9000 -v ./synataxnet_-v/:/models 625/syntaxnet-rest-api test curl -X POST -d '{“string”:[“今天天气很好”,“猴子爱吃桃子”] }‘-H“内容-类型: application/json”http://xxx.xxx.xxx.xxx:9000/api/v1/query/Chinese“ 3.2德拉尼恩 运行sudo运行-p 9001:9000 -v ./dragnn_-v:/models 625/syntaxnet-rest-api:dragnn test http://Yourip:9001/api/v1/use/Chinse curl -X POST -d '{“字符串”:“今天天气很好”,“猴子爱吃桃子”,"tree":true }‘-H“内容-Type: application/json”http://xxx.xx.xx.xx:9001/api/v1/query“ 4.测试结果和问题

从我用中文模型进行的测试来看,syntaxnet很慢,它花了3秒来处理一个查询,用了9秒来处理50个查询。加载模型有固定的成本。

对于dragnn模型,它是快速的,但我对解析结果不满意(仅用中文进行测试)。

PS:我不喜欢synataxnet的工作方式,比如使用bazel和读取stdin中的数据,如果您想定制它,您可以找到一些信息这里

帮助api.md的其他资源

票数 4
EN

Stack Overflow用户

发布于 2017-09-05 09:55:38

将SyntaxNet与您自己的代码集成的最佳方法是将其作为web服务。我这么做是为了分析葡萄牙语文本。

我首先调整了一个现有的带有SyntaxNet和Tensorflow服务的Docker,只为葡萄牙语运行,以保持低内存。它运行得非常快,而且很容易与您的代码集成。

我写了一篇关于它的博文,你可以很容易地将它改编成任何其他语言:

http://davidsbatista.net/blog/2017/07/22/SyntaxNet-API-Portuguese/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39075339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档