mosesserver 使用方法

mosesserver 使用方法

转载自 http://polarlion.github.io/moses/2016/04/18/mosesserver-usage.html
原文代码在这里显示不全 感兴趣请戳 http://polarlion.github.io/moses/2016/04/18/mosesserver-usage.html !!!!

  无比强大的 moses 开源翻译工具毫无意外地提供了 server 的工作模式,然而 mosesserver 的官方文档 在这里:mosesserver 官方文档完全是文字描述,没有代码,没有demo,有点反人类。(文档中确实提到有perl脚本,但是并没有在源代码里面找到T_T,不禁叫人吐槽 moses 的代码和注释质量远远超过文档),总而言之,想搞定它需要自己动手丰衣足食了。以下为介绍 mosesserver 使用方法的一个简单的 python 实践……


/**************************************** 废话分割线 *****************************************/

以下为正文,假设已经按照官方文档编译好了 moseseserver 的可执行文件

  1. bin/moses使用方法一样,执行bin/mosesserver,执行时要比bin/moses执行时至少多两个参数:
    -server ”和“ -server-port XXXX ”,其中XXXX就是端口号(以9999为例)。执行成功后,mosesserver 会在0.0.0.0:9999 这个地址提供server服务

  2. 接下来就是客户端了,也是官方文档没有说明白的地方。看文档我们知道,mosesserver的服务是通过xmlrpc给出的,xmlrpc是一个请求格式,具体维基百科有说明 请看这里:XML-RPC

先敬上具体做法,首先是请求的数据格式:
(假设要翻译的, 经过tokenization的句子是 “你好 普拉狮”)

{% highlight pyhton %}

data = “translate\
text\
你好 普拉狮\
align\
1\

{% endhighlight %}

上述代码是给python解释器去阅读的版本,翻译成人类喜闻乐见的格式是下面酱婶儿的:

{% highlight xml %}

translate



text
你好 普拉狮


align
1




{% endhighlight%}

  按照moses官方文档的说法,顶层的 value 节点下的数据结构 struct 可以理解为一个 map,其中 name 为 text 的 member 节点提供希望翻译的内容信息,是必须包含的,下面 name 为 align 的 member 节点表示是否需要返回对齐信息,如果值为 0 或者不包含此 member 则 server端只返回翻译结果而不包含对齐信息。

接下来补完 python 的 demo:

{% highlight python %}
import urllib2
req = urllib2.Request(“http://0.0.0.0:9999/RPC2“)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())

发送请求并得到回复

response = opener.open(req, data)

res为回复的文本

res = response.read()
{% endhighlight %}

如果前面设置都没有问题,到这里我们已经得到了 mosesserver 返回的翻译结果了,在 res 中,是酱婶儿的:

{% highlight xml %}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值