# auto_punc
|模型名称|auto_punc|
| :--- | :---: |
|类别|文本-标点恢复|
|网络|Ernie-1.0|
|数据集|WuDaoCorpora 2.0|
|是否支持Fine-tuning|否|
|模型大小|568MB|
|最新更新日期|2021-12-24|
|数据指标|-|
## 一、模型基本信息
### 模型介绍
Ernie是百度提出的基于知识增强的持续学习语义理解模型,该模型将大数据预训练与多源丰富知识相结合,通过持续学习技术,不断吸收海量文本数据中词汇、结构、语义等方面的知识,实现模型效果不断进化。
["悟道"文本数据集](https://ks3-cn-beijing.ksyun.com/resources/WuDaoCorpora/WuDaoCorpora__A_Super_Large_scale_Chinese_Corporafor_Pre_training_Language_Models.pdf)
采用20多种规则从100TB原始网页数据中清洗得出最终数据集,注重隐私数据信息的去除,源头上避免GPT-3存在的隐私泄露风险;包含教育、科技等50+个行业数据标签,可以支持多领域预训练模型的训练。
- 数据总量:3TB
- 数据格式:json
- 开源数量:200GB
- 数据集下载:https://resource.wudaoai.cn/
- 日期:2021年12月23日
auto_punc采用了Ernie1.0预训练模型,在[WuDaoCorpora 2.0](https://resource.wudaoai.cn/home)的200G开源文本数据集上进行了标点恢复任务的训练,模型可直接用于预测,对输入的对中文文本自动添加7种标点符号:逗号(,)、句号(。)、感叹号(!)、问号(?)、顿号(、)、冒号(:)和分号(;)。
更多详情请参考
- [WuDaoCorpora: A Super Large-scale Chinese Corpora for Pre-training Language Models](https://ks3-cn-beijing.ksyun.com/resources/WuDaoCorpora/WuDaoCorpora__A_Super_Large_scale_Chinese_Corporafor_Pre_training_Language_Models.pdf)
- [ERNIE: Enhanced Representation through Knowledge Integration](https://arxiv.org/abs/1904.09223)
## 二、安装
- ### 1、环境依赖
- paddlepaddle >= 2.1.0
- paddlehub >= 2.1.0 | [如何安装PaddleHub](../../../../docs/docs_ch/get_start/installation.rst)
- ### 2、安装
- ```shell
$ hub install auto_punc
```
- 如您安装时遇到问题,可参考:[零基础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
model = hub.Module(
name='auto_punc',
version='1.0.0')
texts = [
'今天的天气真好啊你下午有空吗我想约你一起去逛街',
'我最喜欢的诗句是先天下之忧而忧后天下之乐而乐',
]
punc_texts = model.add_puncs(texts)
print(punc_texts)
# ['我最喜欢的诗句是:先天下之忧而忧,后天下之乐而乐。', '今天的天气真好啊!你下午有空吗?我想约你一起去逛街。']
```
- ### 2、API
- ```python
def add_puncs(
texts: Union[str, List[str]],
max_length=256,
device='cpu'
)
```
- 对输入的中文文本自动添加标点符号。
- **参数**
- `texts`:输入的中文文本,可为str或List[str]类型,预测时,中英文和数字以外的字符将会被删除。
- `max_length`:模型预测时输入的最大长度,超过时文本会被截断,默认为256。
- `device`:预测时使用的设备,默认为`cpu`,如需使用gpu预测,请设置为`gpu`。
- **返回**
- `punc_texts`:List[str]类型,返回添加标点后的文本列表。
## 四、服务部署
- PaddleHub Serving可以部署一个在线的文本标点添加的服务。
- ### 第一步:启动PaddleHub Serving
- ```shell
$ hub serving start -m auto_punc
```
- 这样就完成了一个文本标点添加服务化API的部署,默认端口号为8866。
- **NOTE:** 如使用GPU预测,则需要在启动服务之前,请设置CUDA_VISIBLE_DEVICES环境变量,否则不用设置。
- ### 第二步:发送预测请求
- 配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果
- ```python
import requests
import json
# 输入的中文文本,中英文和数字之外的字符在模型预测前会被删除
texts = [
'今天的天气真好啊你下午有空吗我想约你一起去逛街',
'我最喜欢的诗句是先天下之忧而忧后天下之乐而乐',
]
# 以key的方式指定text传入预测方法的时的参数,此例中为"texts"
data = {"texts": texts}
# 发送post请求,content-type类型应指定json方式,url中的ip地址需改为对应机器的ip
url = "http://127.0.0.1:8866/predict/auto_punc"
# 指定post请求的headers为application/json方式
headers = {"Content-Type": "application/json"}
r = requests.post(url=url, headers=headers, data=json.dumps(data))
print(r.json())
```
## 五、更新历史
* 1.0.0
初始发布
```shell
$ hub install auto_punc
```