内容一览:中文文本过错的品种之一为拼写过错,本篇文章为运用 BART 预训练方法实现中文文本纠错功用的模型布置教程。

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

本文首发自微信大众号:HyperAI超神经

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

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

1. 拼写过错:

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

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

2. 语法过错:

指因为输入法、手写疏忽、OCR 辨认乱序等导致的字词缺失、冗余、乱序或调配不当等,如「虚心使使人前进–虚心使人前进」。

3. 语义过错:

因为对某些知识不了解,或语言组织能力短缺导致的知识及逻辑过错,如「一年有 3 个季度–一年有 4 个季度」。

本文中,咱们将以最常见的拼写过错为例,演示怎么凭借 BART 模型,进行中文文本纠错模型布置。

直接运转教程请拜访:

openbayes.com/console/ope…

BART:「采众长」的 SOTA 模型

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

论文详见: arxiv.org/pdf/1910.13…

BART 模型吸纳借鉴了 BERT 和 GPT 的长处,运用规范的 Transformer 结构作为基础:

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

  • 编码器模块差异于 BERT: 舍弃了前馈神经网络模块,精简了模型参数

  • 编解码器联接部分参阅了 Transformer: 解码器的每一层都要对编码器最终一层的输出信息进行穿插留意力核算(也便是编解码留意力机制)

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

本教程中,咱们凭借 nlp_bart_text-error-correction_chinese 模型进行模型布置。

更多信息可拜访:

modelscope.cn/models/damo…

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

环境预备

在 jupyter 终端中履行以下命令装置依靠:

pip install "modelscope[nlp]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html
pip install fairseq

模型下载

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

git clone http://www.modelscope.cn/damo/nlp_bart_text-error-correction_chinese.git

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

快速运用

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

模型布置

Serving 服务编写

编写 predictor.py 文件:

  • 导入依靠库:除了事务中用到的库之外,需要额定依靠 openbayes-serving。
import openbayes_serving as serv
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
  • Predictor 类:无需继承其他类,至少供给 init 和 predict 两个接口。
  • __init__ 中指定模型路径,加载模型

  • predict 中进行推理,回来结果

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
  • 运转:启动服务
if __name__ == '__main__':
    serv.run(Predictor)

测验

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

留意:在容器中进行测验时,flask 版本大于 2.1 或许呈现重复注册报错,降低版本即可运转。

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

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

错字修改 | 布署1个中文文文本拼蟹纠错模型
留意:关于不同的 OpenBayes 算力容器,外部可拜访的 URL 各不相同,直接运用本教程中的链接是无效的,需用终端中提示的链接进行替换

result = requests.post('https://openbayes.com/jobs-auxiliary/open-tutorials/t23g93jjm95d', json=text)
result.json()

布置

测验成功后,停止此算力容器,等候同步数据完结。

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

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

更多模型布置相关信息可参阅:

openbayes.com/docs/servin…

至此,一个支持在线测验的中文文本纠错模型就训练+布置完结啦!

检查并运转完好教程,拜访以下链接:

openbayes.com/console/ope…

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

—— 完 ——

参阅链接:

[1] www.51cto.com/article/715…

[2] arxiv.org/pdf/1910.13…