# 通用信息抽取 UIE(Universal Information Extraction) PyTorch版
**迁移[PaddleNLP](https://github.com/PaddlePaddle/PaddleNLP)中的UIE模型到PyTorch上**
* 2022-10-3: 新增对UIE-M系列模型的支持,增加了ErnieM的Tokenizer。ErnieMTokenizer使用C++实现的高性能分词算子FasterTokenizer进行文本预处理加速。需要通过`pip install faster_tokenizer`安装FasterTokenizer库后方可使用。
PyTorch版功能介绍
- `convert.py`: 自动下载并转换模型,详见[开箱即用](#开箱即用)。
- `doccano.py`: 转换标注数据,详见[数据标注](#数据标注)。
- `evaluate.py`: 评估模型,详见[模型评估](#模型评估)。
- `export_model.py`: 导出ONNX推理模型,详见[模型部署](#模型部署)。
- `finetune.py`: 微调训练,详见[模型微调](#模型微调)。
- `model.py`: 模型定义。
- `uie_predictor.py`: 推理类。
**目录**
- [1. 模型简介](#模型简介)
- [2. 应用示例](#应用示例)
- [3. 开箱即用](#开箱即用)
- [3.1 实体抽取](#实体抽取)
- [3.2 关系抽取](#关系抽取)
- [3.3 事件抽取](#事件抽取)
- [3.4 评论观点抽取](#评论观点抽取)
- [3.5 情感分类](#情感分类)
- [3.6 跨任务抽取](#跨任务抽取)
- [3.7 模型选择](#模型选择)
- [3.8 更多配置](#更多配置)
- [4. 训练定制](#训练定制)
- [4.1 代码结构](#代码结构)
- [4.2 数据标注](#数据标注)
- [4.3 模型微调](#模型微调)
- [4.4 模型评估](#模型评估)
- [4.5 定制模型一键预测](#定制模型一键预测)
- [4.6 实验指标](#实验指标)
- [4.7 模型部署](#模型部署)
<a name="模型简介"></a>
## 1. 模型简介
[UIE(Universal Information Extraction)](https://arxiv.org/pdf/2203.12277.pdf):Yaojie Lu等人在ACL-2022中提出了通用信息抽取统一框架UIE。该框架实现了实体抽取、关系抽取、事件抽取、情感分析等任务的统一建模,并使得不同任务间具备良好的迁移和泛化能力。为了方便大家使用UIE的强大能力,PaddleNLP借鉴该论文的方法,基于ERNIE 3.0知识增强预训练模型,训练并开源了首个中文通用信息抽取模型UIE。该模型可以支持不限定行业领域和抽取目标的关键信息抽取,实现零样本快速冷启动,并具备优秀的小样本微调能力,快速适配特定的抽取目标。
<div align="center">
<img src=https://user-images.githubusercontent.com/40840292/167236006-66ed845d-21b8-4647-908b-e1c6e7613eb1.png height=400 hspace='10'/>
</div>
#### UIE的优势
- **使用简单**:用户可以使用自然语言自定义抽取目标,无需训练即可统一抽取输入文本中的对应信息。**实现开箱即用,并满足各类信息抽取需求**。
- **降本增效**:以往的信息抽取技术需要大量标注数据才能保证信息抽取的效果,为了提高开发过程中的开发效率,减少不必要的重复工作时间,开放域信息抽取可以实现零样本(zero-shot)或者少样本(few-shot)抽取,**大幅度降低标注数据依赖,在降低成本的同时,还提升了效果**。
- **效果领先**:开放域信息抽取在多种场景,多种任务上,均有不俗的表现。
<a name="应用示例"></a>
## 2. 应用示例
UIE不限定行业领域和抽取目标,以下是一些零样本行业示例:
- 医疗场景-专病结构化
![image](https://user-images.githubusercontent.com/40840292/169017581-93c8ee44-856d-4d17-970c-b6138d10f8bc.png)
- 法律场景-判决书抽取
![image](https://user-images.githubusercontent.com/40840292/169017863-442c50f1-bfd4-47d0-8d95-8b1d53cfba3c.png)
- 金融场景-收入证明、招股书抽取
![image](https://user-images.githubusercontent.com/40840292/169017982-e521ddf6-d233-41f3-974e-6f40f8f2edbc.png)
- 公安场景-事故报告抽取
![image](https://user-images.githubusercontent.com/40840292/169018340-31efc1bf-f54d-43f7-b62a-8f7ce9bf0536.png)
- 旅游场景-宣传册、手册抽取
![image](https://user-images.githubusercontent.com/40840292/169018113-c937eb0b-9fd7-4ecc-8615-bcdde2dac81d.png)
<a name="开箱即用"></a>
## 3. 开箱即用
```uie_predictor```提供通用信息抽取、评价观点抽取等能力,可抽取多种类型的信息,包括但不限于命名实体识别(如人名、地名、机构名等)、关系(如电影的导演、歌曲的发行时间等)、事件(如某路口发生车祸、某地发生地震等)、以及评价维度、观点词、情感倾向等信息。用户可以使用自然语言自定义抽取目标,无需训练即可统一抽取输入文本中的对应信息。**实现开箱即用,并满足各类信息抽取需求**
```uie_predictor```现在可以自动下载模型了,**无需手动convert**,如果想手动转换模型,可以参照以下方法。
**下载并转换模型**,将下载Paddle版的`uie-base`模型到当前目录中,并生成PyTorch版模型`uie_base_pytorch`。
```shell
python convert.py
```
如果没有安装paddlenlp,则使用以下命令。这将不会导入paddlenlp,以及不会验证转换结果正确性。
```shell
python convert.py --no_validate_output
```
可配置参数说明:
- `input_model`: 输入的模型所在的文件夹,例如存在模型`./model_path/model_state.pdparams`,则传入`./model_path`。如果传入`uie-base`或`uie-tiny`等在模型列表中的模型,且当前目录不存在此文件夹时,将自动下载模型。默认值为`uie-base`。
支持自动下载的模型
- `uie-base`
- `uie-medium`
- `uie-mini`
- `uie-micro`
- `uie-nano`
- `uie-medical-base`
- `uie-tiny` (弃用,已改为`uie-medium`)
- `uie-base-en`
- `uie-m-base`
- `uie-m-large`
- `ernie-3.0-base-zh`*
- `output_model`: 输出的模型的文件夹,默认为`uie_base_pytorch`。
- `no_validate_output`:是否关闭对输出模型的验证,默认打开。
\* : 使用`ernie-3.0-base-zh`时不会验证模型,需要微调后才能用于预测
<a name="实体抽取"></a>
#### 3.1 实体抽取
命名实体识别(Named Entity Recognition,简称NER),是指识别文本中具有特定意义的实体。在开放域信息抽取中,抽取的类别没有限制,用户可以自己定义。
- 例如抽取的目标实体类型是"时间"、"选手"和"赛事名称", schema构造如下:
```text
['时间', '选手', '赛事名称']
```
调用示例:
```python
>>> from uie_predictor import UIEPredictor
>>> from pprint import pprint
>>> schema = ['时间', '选手', '赛事名称'] # Define the schema for entity extraction
>>> ie = UIEPredictor(model='uie-base', schema=schema)
>>> pprint(ie("2月8日上午北京冬奥会自由式滑雪女子大跳台决赛中中国选手谷爱凌以188.25分获得金牌!")) # Better print results using pprint
[{'时间': [{'end': 6,
'probability': 0.9857378532924486,
'start': 0,
'text': '2月8日上午'}],
'赛事名称': [{'end': 23,
'probability': 0.8503089953268272,
'start': 6,
'text': '北京冬奥会自由式滑雪女子大跳台决赛'}],
'选手': [{'end': 31,
'probability': 0.8981548639781138,
'start': 28,
'text': '谷爱凌'}]}]
```
- 例如抽取的目标实体类型是"肿瘤的大小"、"肿瘤的个数"、"肝癌级别"和"脉管内癌栓分级", schema构造如下:
```text
['肿瘤的大小', '肿瘤的个数', '肝癌级别', '脉管内癌栓分级']
```
在上例中我们已经实例化了一个`UIEPredictor`对象,这里可以通过`set_schema`方法重置抽取目标。
调用示例:
```python
>>> schema = ['肿瘤的大小', '肿瘤的个数', '肝癌级别', '脉管内癌栓分级']
>>> ie.set_schema(schema)
>>> pprint(ie("(右肝肿瘤)肝细胞性肝癌(II-III级,梁�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
PaddleNLP UIE模型的PyTorch版实现.zipPaddleNLP UIE模型的PyTorch版实现.zipPaddleNLP UIE模型的PyTorch版实现.zipPaddleNLP UIE模型的PyTorch版实现.zipPaddleNLP UIE模型的PyTorch版实现.zipPaddleNLP UIE模型的PyTorch版实现.zipPaddleNLP UIE模型的PyTorch版实现.zipPaddleNLP UIE模型的PyTorch版实现.zipPaddleNLP UIE模型的PyTorch版实现.zipPaddleNLP UIE模型的PyTorch版实现.zipPaddleNLP UIE模型的PyTorch版实现.zipPaddleNLP UIE模型的PyTorch版实现.zipPaddleNLP UIE模型的PyTorch版实现.zipPaddleNLP UIE模型的PyTorch版实现.zipPaddleNLP UIE模型的PyTorch版实现.zipPaddleNLP UIE模型的PyTorch版实现.zipPaddleNLP UIE模型的PyTo
资源推荐
资源详情
资源评论
收起资源包目录
PaddleNLP UIE模型的PyTorch版实现.zip (17个子文件)
PaddleNLP UIE模型的PyTorch版实现
utils.py 45KB
evaluate.py 7KB
ernie_m.py 43KB
export_model.py 8KB
tokenizer.py 27KB
LICENSE 9KB
uie_predictor.py 27KB
finetune.py 11KB
doccano.md 14KB
convert.py 24KB
model.py 16KB
ernie.py 48KB
doccano.py 8KB
requirements.txt 300B
labelstudio2doccano.py 4KB
.gitignore 1KB
README.md 40KB
共 17 条
- 1
资源评论
- bqbq13942024-04-26感谢大佬分享的资源,对我启发很大,给了我新的灵感。
白如意i
- 粉丝: 1w+
- 资源: 3209
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功