模型名称 | transformer_nist_wait_5 |
---|---|
类别 | 同声传译 |
网络 | transformer |
数据集 | NIST 2008-中英翻译数据集 |
是否支持Fine-tuning | 否 |
模型大小 | 377MB |
最新更新日期 | 2021-09-17 |
数据指标 | - |
-
-
同声传译(Simultaneous Translation),即在句子完成之前进行翻译,同声传译的目标是实现同声传译的自动化,它可以与源语言同时翻译,延迟时间只有几秒钟。 STACL 是论文 STACL: Simultaneous Translation with Implicit Anticipation and Controllable Latency using Prefix-to-Prefix Framework 中针对同传提出的适用于所有同传场景的翻译架构。
-
STACL 主要具有以下优势:
-
Prefix-to-Prefix架构拥有预测能力,即在未看到源词的情况下仍然可以翻译出对应的目标词,克服了SOV→SVO等词序差异
- Wait-k策略可以不需要全句的源句,直接预测目标句,可以实现任意的字级延迟,同时保持较高的翻译质量。
-
-
该PaddleHub Module基于transformer网络结构,采用wait-5策略进行中文到英文的翻译。
-
-
-
paddlepaddle >= 2.1.0
-
paddlehub >= 2.1.0 | 如何安装PaddleHub
-
-
-
$ hub install transformer_nist_wait_5
-
如您安装时遇到问题,可参考:零基础windows安装 | 零基础Linux安装 | 零基础MacOS安装
-
-
-
import paddlehub as hub model = hub.Module(name="transformer_nist_wait_5") # 待预测数据(模拟同声传译实时输入) text = [ "他", "他还", "他还说", "他还说现在", "他还说现在正在", "他还说现在正在为", "他还说现在正在为这", "他还说现在正在为这一", "他还说现在正在为这一会议", "他还说现在正在为这一会议作出", "他还说现在正在为这一会议作出安排", "他还说现在正在为这一会议作出安排。", ] for t in text: print("input: {}".format(t)) result = model.translate(t) print("model output: {}\n".format(result)) # input: 他 # model output: # # input: 他还 # model output: # # input: 他还说 # model output: # # input: 他还说现在 # model output: # # input: 他还说现在正在 # model output: he # # input: 他还说现在正在为 # model output: he also # # input: 他还说现在正在为这 # model output: he also said # # input: 他还说现在正在为这一 # model output: he also said that # # input: 他还说现在正在为这一会议 # model output: he also said that he # # input: 他还说现在正在为这一会议作出 # model output: he also said that he was # # input: 他还说现在正在为这一会议作出安排 # model output: he also said that he was making # # input: 他还说现在正在为这一会议作出安排。 # model output: he also said that he was making arrangements for this meeting .
-
-
-
__init__(max_length=256, max_out_len=256)
-
初始化module, 可配置模型的输入文本的最大长度
-
参数
- max_length(int): 输入文本的最大长度,默认值为256。
- max_out_len(int): 输出文本的最大解码长度,超过最大解码长度时会截断句子的后半部分,默认值为256。
-
-
translate(text, use_gpu=False)
-
预测API,输入源语言的文本(模拟同传语音输入),解码后输出翻译后的目标语言文本。
-
参数
- text(str): 输入源语言的文本,数据类型为str
- use_gpu(bool): 是否使用gpu进行预测,默认为False
-
返回
- result(str): 翻译后的目标语言文本。
-
-
-
PaddleHub Serving可以部署一个在线同声传译服务(需要用户配置一个语音转文本应用预先将语音输入转为中文文字),可以将此接口用于在线web应用。
-
-
运行启动命令:
-
$ hub serving start -m transformer_nist_wait_5
-
启动时会显示加载模型过程,启动成功后显示
-
Loading transformer_nist_wait_5 successful.
-
这样就完成了服务化API的部署,默认端口号为8866。
-
NOTE: 如使用GPU预测,则需要在启动服务之前,请设置CUDA_VISIBLE_DEVICES环境变量,否则不用设置。
-
-
-
配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果
-
import requests import json # 待预测数据(模拟同声传译实时输入) text = [ "他", "他还", "他还说", "他还说现在", "他还说现在正在", "他还说现在正在为", "他还说现在正在为这", "他还说现在正在为这一", "他还说现在正在为这一会议", "他还说现在正在为这一会议作出", "他还说现在正在为这一会议作出安排", "他还说现在正在为这一会议作出安排。", ] # 指定预测方法为transformer_nist_wait_5并发送post请求,content-type类型应指定json方式 # HOST_IP为服务器IP url = "http://HOST_IP:8866/predict/transformer_nist_wait_5" headers = {"Content-Type": "application/json"} for t in text: print("input: {}".format(t)) r = requests.post(url=url, headers=headers, data=json.dumps({"text": t})) # 打印预测结果 print("model output: {}\n".format(result.json()['results']))
-
关于PaddleHub Serving更多信息参考:服务部署
-
- 1.0.0
初始发布
hub install transformer_nist_wait_5==1.0.0