前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >错字修改 | 布署1个中文文文本拼蟹纠错模型

错字修改 | 布署1个中文文文本拼蟹纠错模型

作者头像
HyperAI超神经
发布2022-11-29 16:35:49
5150
发布2022-11-29 16:35:49
举报
文章被收录于专栏:HyperAI超神经HyperAI超神经

By 超神经

内容一览:中文文本错误的种类之一为拼写错误,本篇文章为利用 BART 预训练方法实现中文文本纠错功能的模型部署教程。

关键词:BART 中文拼写纠错 NLP

中文文本错误3大障碍:拼写、语法、语义

中文文本纠错是当前自然语言处理领域的一个重要分支,旨在针对中文文本错误等进行检测与纠正。常见的中文文本错误包括拼写错误、语法错误以及语义错误。

1. 拼写错误:

指由于输入法、语音转文字软件等原因导致的用字或用词错误,主要表现为错误使用了同音字、形近字、混消音等,如「天气晴郎--天气晴朗」「时侯--时候」。

中文拼写纠错示例

该任务通常不涉及添/删字词,只涉及替换

输出的句子一般是等长的

2. 语法错误:

指由于输入法、手写疏忽、OCR 识别乱序等导致的字词缺失、冗余、乱序或搭配不当等,如「虚心使使人进步--虚心使人进步」。

3. 语义错误:

由于对某些知识不了解,或语言组织能力欠缺导致的知识及逻辑错误,如「一年有 3 个季度--一年有 4 个季度」。

本文中,我们将以最常见的拼写错误为例,演示如何借助 BART 模型,进行中文文本纠错模型部署。

直接运行教程请访问:

https://openbayes.com/console/open-tutorials/containers/YvkMjHySdef

BART:「采众长」的 SOTA 模型

BART 全称 Bidirectional and Auto-Regressive Transformers,是一个为预训练 seq2seq 模型而设计的去噪自编码器,适用于自然语言生成、翻译及理解任务,由 Meta(原 Facebook)在 2019 年提出。

论文详见:

https://arxiv.org/pdf/1910.13461.pdf

BART 模型吸纳借鉴了 BERT 和 GPT 的优点,使用标准的 Transformer 结构作为基础:

* 解码器模块参考 GPT:将 ReLU 激活函数替换为 GeLU 激活函数

* 编码器模块区别于 BERT:舍弃了前馈神经网络模块,精简了模型参数

* 编解码器衔接部分参考了 Transformer:解码器的每一层都要对编码器最后一层的输出信息进行交叉注意力计算(也就是编解码注意力机制)

BART 与 BERT 对比示意图

本教程中,我们借助 nlp_bart_text-error-correction_chinese 模型进行模型部署。

更多信息可访问:

https://modelscope.cn/models/damo/nlp_bart_text-error-correction_chinese/summary

教程详解:创建一个在线文本纠错Demo

环境准备

在 jupyter 终端中执行以下命令安装依赖:

代码语言:javascript
复制
pip install "modelscope[nlp]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html
pip install fairseq

模型下载

在终端中执行以下命令下载模型:

代码语言:javascript
复制
git clone http://www.modelscope.cn/damo/nlp_bart_text-error-correction_chinese.git

模型下载需要较长时间,此容器中已有下载好的模型,可直接使用,位于 nlp_bart_text-error-correction_chinese 目录下。

快速使用

模型部署

Serving 服务编写

编写 predictor.py 文件:

* 导入依赖库:除了业务中用到的库之外,需要额外依赖 openbayes-serving。

代码语言:javascript
复制
import openbayes_serving as serv
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks

* Predictor 类:无需继承其他类,至少提供 __init__predict 两个接口。

- 在 __init__ 中指定模型路径,加载模型

- 在 predict 中进行推理,返回结果

代码语言:javascript
复制
class Predictor:
    def __init__(self):
        self.model_path = './nlp_bart_text-error-correction_chinese'
        self.corrector = pipeline(Tasks.text_error_correction, model=self.model_path)


def predict(self, json):
    text = json["input"].lower()
    result = self.corrector(text)
    return result

* 运行:启动服务

代码语言:javascript
复制
if __name__ == '__main__':
    serv.run(Predictor)

测试

在终端中执行 python predictor.py,成功开启服务后,在此 Notebook 中执行下列代码进行测试。

注意:在容器中进行测试时,flask 版本大于 2.1 可能出现重复注册报错,降低版本即可运行。

代码语言:javascript
复制
import requests
text = {"input": "这洋的话,下一年的福气来到自己身上。"}
result = requests.post('http://localhost:8080', json=text)
result.json()
{'output': '这样的话,下一年的福气就会来到自己身上。'}

除了通过本地访问地址 http://localhost:8080还可以通过终端中提示的外部可访问的 URL 进行测试。

注意:对于不同的 OpenBayes 算力容器,外部可访问的 URL 各不相同,直接使用本教程中的链接是无效的,需用终端中提示的链接进行替换。

代码语言:javascript
复制
result = requests.post('https://openbayes.com/jobs-auxiliary/open-tutorials/t23g93jjm95d', json=text)
result.json()

部署

测试成功后,停止此算力容器,等待同步数据完成。

在「算力容器--模型部署」中点击「创建新部署」,选择与开发时相同的镜像,绑定此算力容器,点击「部署」,即可进行在线测试。

部署完成后输入 JSON 数据进行在线测试

更多模型部署相关信息可参考:

https://openbayes.com/docs/serving/

至此,一个支持在线测试的中文文本纠错模型就训练+部署完成啦!

查看并运行完整教程,请点击文末阅读原文,或访问以下链接:

https://openbayes.com/console/open-tutorials/containers/YvkMjHySdef

快来试试你的中文纠错模型吧!

参考链接:

[1] https://www.51cto.com/article/715865.html

[2] https://arxiv.org/pdf/1910.13461.pdf

—— 完 ——

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HyperAI超神经 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档