Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleHub
提交
e03d1126
P
PaddleHub
项目概览
PaddlePaddle
/
PaddleHub
1 年多 前同步成功
通知
283
Star
12117
Fork
2091
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
200
列表
看板
标记
里程碑
合并请求
4
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleHub
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
200
Issue
200
列表
看板
标记
里程碑
合并请求
4
合并请求
4
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
e03d1126
编写于
9月 02, 2022
作者:
C
chenjian
提交者:
GitHub
9月 02, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add baidu translate module
上级
7cf4b9de
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
218 addition
and
0 deletion
+218
-0
modules/text/machine_translation/baidu_translate/README.md
modules/text/machine_translation/baidu_translate/README.md
+114
-0
modules/text/machine_translation/baidu_translate/module.py
modules/text/machine_translation/baidu_translate/module.py
+104
-0
未找到文件。
modules/text/machine_translation/baidu_translate/README.md
0 → 100644
浏览文件 @
e03d1126
# baidu_translate
|模型名称|baidu_translate|
| :--- | :---: |
|类别|文本-机器翻译|
|网络|-|
|数据集|-|
|是否支持Fine-tuning|否|
|模型大小|-|
|最新更新日期|2022-09-01|
|数据指标|-|
## 一、模型基本信息
-
### 模型介绍
-
本模块提供百度翻译开放平台的服务,可支持多语种互译。您只需要通过传入待翻译的内容,并指定要翻译的源语言(支持源语言语种自动检测)和目标语言种类,就可以得到相应的翻译结果。
## 二、安装
-
### 1、环境依赖
-
paddlepaddle >= 2.1.0
-
paddlehub >= 2.3.0 |
[
如何安装PaddleHub
](
../../../../docs/docs_ch/get_start/installation.rst
)
-
### 2、安装
-
```shell
$ hub install baidu_translate
```
-
如您安装时遇到问题,可参考:
[
零基础windows安装
](
../../../../docs/docs_ch/get_start/windows_quickstart.md
)
|
[
零基础Linux安装
](
../../../../docs/docs_ch/get_start/linux_quickstart.md
)
|
[
零基础MacOS安装
](
../../../../docs/docs_ch/get_start/mac_quickstart.md
)
## 三、模型API预测
-
### 1、预测代码示例
-
```python
import paddlehub as hub
module = hub.Module(name='baidu_translate')
result = module.translate("I like panda")
print(result)
```
-
### 2、API
-
```python
def translate(query: str,
from_lang: Optional[str] = "en",
to_lang: Optional[int] = "zh")
```
- 翻译API,输入源语言的文本句子,解码后输出翻译后的目标语言的文本句子。
- **参数**
- `query`(str): 待翻译的语言。
- `from_lang`(int): 源语言。
- `to_lang`(int): 目标语言。
- **返回**
- `result`(str): 翻译后的目标语言句子。
源语言和目标语言都采用ISO 639-1语言编码标准来表示,常用的语言编码如下, 更多语言表示可以参考
[
文档
](
https://fanyi-api.baidu.com/doc/21
)
。
<p
align=
"center"
>
<img
src=
"https://user-images.githubusercontent.com/22424850/188076725-c2ac6831-1f9d-416a-bf9a-8f3671d6de36.png"
width =
"80%"
hspace=
'10'
/>
## 四、服务部署
-
通过启动PaddleHub Serving,可以加载模型部署在线翻译服务。
-
### 第一步:启动PaddleHub Serving
-
运行启动命令:
-
```shell
$ hub serving start -m baidu_translate
```
-
通过以上命令可完成一个翻译API的部署,默认端口号为8866。
-
## 第二步:发送预测请求
-
配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果
-
```python
import requests
import json
text = "I like panda"
data = {"query": text, "from_lang":'en', "to_lang":'zh'}
# 发送post请求,content-type类型应指定json方式,url中的ip地址需改为对应机器的ip
url = "http://127.0.0.1:8866/predict/baidu_translate"
# 指定post请求的headers为application/json方式
headers = {"Content-Type": "application/json"}
r = requests.post(url=url, headers=headers, data=json.dumps(data))
print(r.json())
```
-
关于PaddleHub Serving更多信息参考:
[
服务部署
](
../../../../docs/docs_ch/tutorial/serving.md
)
## 五、更新历史
*
1.0.0
初始发布
-
```shell
$ hub install baidu_translate==1.0.0
```
modules/text/machine_translation/baidu_translate/module.py
0 → 100644
浏览文件 @
e03d1126
import
argparse
import
random
from
hashlib
import
md5
from
typing
import
Optional
import
requests
import
paddlehub
as
hub
from
paddlehub.module.module
import
moduleinfo
from
paddlehub.module.module
import
runnable
from
paddlehub.module.module
import
serving
def
make_md5
(
s
,
encoding
=
'utf-8'
):
return
md5
(
s
.
encode
(
encoding
)).
hexdigest
()
@
moduleinfo
(
name
=
"baidu_translate"
,
version
=
"1.0.0"
,
type
=
"text/machine_translation"
,
summary
=
""
,
author
=
"baidu-nlp"
,
author_email
=
"paddle-dev@baidu.com"
)
class
BaiduTranslate
:
def
__init__
(
self
,
appid
=
None
,
appkey
=
None
):
"""
:param appid: appid for requesting Baidu translation service.
:param appkey: appkey for requesting Baidu translation service.
"""
# Set your own appid/appkey.
if
appid
==
None
:
self
.
appid
=
'20201015000580007'
else
:
self
.
appid
=
appid
if
appkey
is
None
:
self
.
appkey
=
'IFJB6jBORFuMmVGDRud1'
else
:
self
.
appkey
=
appkey
self
.
url
=
'http://api.fanyi.baidu.com/api/trans/vip/translate'
def
translate
(
self
,
query
:
str
,
from_lang
:
Optional
[
str
]
=
"en"
,
to_lang
:
Optional
[
int
]
=
"zh"
):
"""
Create image by text prompts using ErnieVilG model.
:param query: Text to be translated.
:param from_lang: Source language.
:param to_lang: Dst language.
Return translated string.
"""
# Generate salt and sign
salt
=
random
.
randint
(
32768
,
65536
)
sign
=
make_md5
(
self
.
appid
+
query
+
str
(
salt
)
+
self
.
appkey
)
# Build request
headers
=
{
'Content-Type'
:
'application/x-www-form-urlencoded'
}
payload
=
{
'appid'
:
self
.
appid
,
'q'
:
query
,
'from'
:
from_lang
,
'to'
:
to_lang
,
'salt'
:
salt
,
'sign'
:
sign
}
# Send request
try
:
r
=
requests
.
post
(
self
.
url
,
params
=
payload
,
headers
=
headers
)
result
=
r
.
json
()
except
Exception
as
e
:
error_msg
=
str
(
e
)
raise
RuntimeError
(
error_msg
)
if
'error_code'
in
result
:
raise
RuntimeError
(
result
[
'error_msg'
])
return
result
[
'trans_result'
][
0
][
'dst'
]
@
runnable
def
run_cmd
(
self
,
argvs
):
"""
Run as a command.
"""
self
.
parser
=
argparse
.
ArgumentParser
(
description
=
"Run the {} module."
.
format
(
self
.
name
),
prog
=
'hub run {}'
.
format
(
self
.
name
),
usage
=
'%(prog)s'
,
add_help
=
True
)
self
.
arg_input_group
=
self
.
parser
.
add_argument_group
(
title
=
"Input options"
,
description
=
"Input data. Required"
)
self
.
add_module_input_arg
()
args
=
self
.
parser
.
parse_args
(
argvs
)
if
args
.
appid
is
not
None
and
args
.
appkey
is
not
None
:
self
.
appid
=
args
.
appid
self
.
appkey
=
args
.
appkey
result
=
self
.
translate
(
args
.
query
,
args
.
from_lang
,
args
.
to_lang
)
return
result
@
serving
def
serving_method
(
self
,
query
,
from_lang
,
to_lang
):
"""
Run as a service.
"""
return
self
.
translate
(
query
,
from_lang
,
to_lang
)
def
add_module_input_arg
(
self
):
"""
Add the command input options.
"""
self
.
arg_input_group
.
add_argument
(
'--query'
,
type
=
str
)
self
.
arg_input_group
.
add_argument
(
'--from_lang'
,
type
=
str
,
default
=
'en'
,
help
=
"源语言"
)
self
.
arg_input_group
.
add_argument
(
'--to_lang'
,
type
=
str
,
default
=
'zh'
,
help
=
"目标语言"
)
self
.
arg_input_group
.
add_argument
(
'--appid'
,
type
=
str
,
default
=
None
,
help
=
"注册得到的个人appid"
)
self
.
arg_input_group
.
add_argument
(
'--appkey'
,
type
=
str
,
default
=
None
,
help
=
"注册得到的个人appkey"
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录