Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleHub
提交
e3ee127f
P
PaddleHub
项目概览
PaddlePaddle
/
PaddleHub
大约 2 年 前同步成功
通知
285
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看板
未验证
提交
e3ee127f
编写于
12月 29, 2022
作者:
jm_12138
提交者:
GitHub
12月 29, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add gradio app (#2161)
上级
32dbb01a
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
67 addition
and
43 deletion
+67
-43
modules/text/machine_translation/transformer/zh-en/README.md
modules/text/machine_translation/transformer/zh-en/README.md
+12
-4
modules/text/machine_translation/transformer/zh-en/module.py
modules/text/machine_translation/transformer/zh-en/module.py
+47
-30
modules/text/machine_translation/transformer/zh-en/utils.py
modules/text/machine_translation/transformer/zh-en/utils.py
+8
-9
未找到文件。
modules/text/machine_translation/transformer/zh-en/README.md
浏览文件 @
e3ee127f
...
...
@@ -132,6 +132,9 @@
-
关于PaddleHub Serving更多信息参考:
[
服务部署
](
../../../../docs/docs_ch/tutorial/serving.md
)
-
### Gradio APP 支持
从 PaddleHub 2.3.1 开始支持使用链接 http://127.0.0.1:8866/gradio/transformer_zh-en 在浏览器中访问 transformer_zh-en 的 Gradio APP。
## 五、更新历史
*
1.0.0
...
...
@@ -141,6 +144,11 @@
*
1.0.1
修复模型初始化的兼容性问题
*
1.1.0
添加 Gradio APP 支持
-
```shell
$ hub install transformer_zh-en==1.
0.1
$ hub install transformer_zh-en==1.
1.0
```
modules/text/machine_translation/transformer/zh-en/module.py
浏览文件 @
e3ee127f
...
...
@@ -11,24 +11,26 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import
os
from
typing
import
List
import
paddle
import
paddle.nn
as
nn
from
paddlehub.env
import
MODULE_HOME
from
paddlehub.module.module
import
moduleinfo
,
serving
import
paddlenlp
from
paddlenlp.data
import
Pad
,
Vocab
from
paddlenlp.transformers
import
InferTransformerModel
,
position_encoding_init
from
paddlenlp.data
import
Pad
from
paddlenlp.data
import
Vocab
from
paddlenlp.transformers
import
InferTransformerModel
from
paddlenlp.transformers
import
position_encoding_init
from
transformer_zh_en.utils
import
MTTokenizer
from
transformer_zh_en.utils
import
post_process_seq
from
transformer_zh_en.utils
import
MTTokenizer
,
post_process_seq
from
paddlehub.env
import
MODULE_HOME
from
paddlehub.module.module
import
moduleinfo
from
paddlehub.module.module
import
serving
@
moduleinfo
(
name
=
"transformer_zh-en"
,
version
=
"1.
0.1
"
,
version
=
"1.
1.0
"
,
summary
=
""
,
author
=
"PaddlePaddle"
,
author_email
=
""
,
...
...
@@ -85,15 +87,14 @@ class MTTransformer(nn.Layer):
self
.
max_length
=
max_length
self
.
beam_size
=
beam_size
self
.
tokenizer
=
MTTokenizer
(
bpe_codes_file
=
bpe_codes_file
,
lang_src
=
self
.
lang_config
[
'source'
],
lang_trg
=
self
.
lang_config
[
'target'
])
self
.
src_vocab
=
Vocab
.
load_vocabulary
(
filepath
=
src_vocab_file
,
self
.
tokenizer
=
MTTokenizer
(
bpe_codes_file
=
bpe_codes_file
,
lang_src
=
self
.
lang_config
[
'source'
],
lang_trg
=
self
.
lang_config
[
'target'
])
self
.
src_vocab
=
Vocab
.
load_vocabulary
(
filepath
=
src_vocab_file
,
unk_token
=
self
.
vocab_config
[
'unk_token'
],
bos_token
=
self
.
vocab_config
[
'bos_token'
],
eos_token
=
self
.
vocab_config
[
'eos_token'
])
self
.
trg_vocab
=
Vocab
.
load_vocabulary
(
filepath
=
trg_vocab_file
,
self
.
trg_vocab
=
Vocab
.
load_vocabulary
(
filepath
=
trg_vocab_file
,
unk_token
=
self
.
vocab_config
[
'unk_token'
],
bos_token
=
self
.
vocab_config
[
'bos_token'
],
eos_token
=
self
.
vocab_config
[
'eos_token'
])
...
...
@@ -101,8 +102,7 @@ class MTTransformer(nn.Layer):
//
self
.
vocab_config
[
'pad_factor'
]
*
self
.
vocab_config
[
'pad_factor'
]
self
.
trg_vocab_size
=
(
len
(
self
.
trg_vocab
)
+
self
.
vocab_config
[
'pad_factor'
]
-
1
)
\
//
self
.
vocab_config
[
'pad_factor'
]
*
self
.
vocab_config
[
'pad_factor'
]
self
.
transformer
=
InferTransformerModel
(
src_vocab_size
=
self
.
src_vocab_size
,
self
.
transformer
=
InferTransformerModel
(
src_vocab_size
=
self
.
src_vocab_size
,
trg_vocab_size
=
self
.
trg_vocab_size
,
bos_id
=
self
.
vocab_config
[
'bos_id'
],
eos_id
=
self
.
vocab_config
[
'eos_id'
],
...
...
@@ -184,3 +184,20 @@ class MTTransformer(nn.Layer):
results
.
append
(
trg_sample_text
)
return
results
def
create_gradio_app
(
self
):
import
gradio
as
gr
def
inference
(
text
):
results
=
self
.
predict
(
data
=
[
text
])
return
results
[
0
]
examples
=
[[
'今天是个好日子'
]]
interface
=
gr
.
Interface
(
inference
,
"text"
,
[
gr
.
outputs
.
Textbox
(
label
=
"Translation"
)],
title
=
"transformer_zh-en"
,
examples
=
examples
,
allow_flagging
=
'never'
)
return
interface
modules/text/machine_translation/transformer/zh-en/utils.py
浏览文件 @
e3ee127f
...
...
@@ -11,25 +11,24 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import
codecs
import
logging
import
re
from
typing
import
List
import
codecs
import
jieba
jieba
.
setLogLevel
(
logging
.
INFO
)
from
sacremoses
import
Moses
Tokenizer
,
Moses
Detokenizer
from
sacremoses
import
MosesDetokenizer
from
subword_nmt.apply_bpe
import
BPE
class
MTTokenizer
(
object
):
def
__init__
(
self
,
bpe_codes_file
:
str
,
lang_src
:
str
=
'zh'
,
lang_trg
:
str
=
'en'
,
separator
=
'@@'
):
self
.
moses_detokenizer
=
MosesDetokenizer
(
lang
=
lang_trg
)
self
.
bpe_tokenizer
=
BPE
(
codes
=
codecs
.
open
(
bpe_codes_file
,
encoding
=
'utf-8'
),
self
.
bpe_tokenizer
=
BPE
(
codes
=
codecs
.
open
(
bpe_codes_file
,
encoding
=
'utf-8'
),
merges
=-
1
,
separator
=
separator
,
vocab
=
None
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录