KnowPrompt用于关系抽取任务,通过学习模板词和答案词,将实体和关系的知识注入模型,并在知识约束下协同优化它们的表示
先将知识注入提示,然后用提示调优模型实现知识抽取。具体实现如下:使用集合实体嵌入初始化的实体周围的类型标记,作为可学习的虚拟模板词来注入实体类型知识;同时使用标签计算平均嵌入作为虚拟答案来注入关系知识。在这个结构中,实体和关系相互约束,虚拟模板词应与上下文相关联,因此我们引入协同优化来校正模板和答案词。
本模型用于关系抽取任务,抽取后的信息可供更多下游NLP任务使用,比如:信息检索、对话生成和问答。具体使用方式请参考代码示例。
需要安装如下包
numpy==1.20.3
tokenizers==0.10.3
pytorch_lightning==1.3.1
regex==2021.4.4
torch
transformers==4.7.0
tqdm==4.49.0
activations==0.1.0
dataclasses==0.8
file_utils==0.0.1
flax==0.3.4
PyYAML==5.4.1
utils==1.0.1
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
kp_pipeline = pipeline(Tasks.information_extraction, 'jeno11/KnowPrompt')
kp_pipeline(input={"token": ["the", "treatment", "includes", "an", "aromatherapy", "mask", "and", "moisturizer", "."], "h": {"name": "treatment", "pos": [1, 2]}, "t": {"name": "mask", "pos": [5, 6]}})
模型训练数据中的关系标签是有限的,只能在一定程度上概括真实世界中的关系
采用了SemEval数据集
Dataset | Train | Val | Test | Rel |
---|---|---|---|---|
SemEval | 6,507 | 1,493 | 2,717 | 19 |
训练分为两个阶段,第一阶段对虚拟模板词和模拟答案词进行协同优化,第二阶段基于被优化的虚拟模板词和模拟答案词为语言模型调参,用较小的学习率优化所有参数。针对不同数据集,超参设置不同,具体可见源码中的脚本文件。以SemEval为例,超参设置如下:
max_epochs=10
max_sequence_length=256
batch_size=16
learning_rate=3e-5
batch_size=16
t_lambda=0.001
在基础配置上,同其他模型的对比结果如下表所示:
Methods | Precision |
---|---|
Fine-tuning | 87.6 |
KnowBERT | 89.1 |
MTB | 89.5 |
PTR | 89.9 |
KnowPrompt | 90.2 (+0.3) |
低资源配置上,使用LM-BFF提出的 8-, 16-, 32- 方法采样,从初始训练和验证集中抽取每个类的k个实例,以形成few-shot的训练和验证集。同其他模型的对比结果如下表所示:
Split | Methods | Precision |
---|---|---|
k=8 | Fine-tuning | 41.3 |
GDPNet | 42.0 | |
PTR | 70.5 | |
KnowPrompt | 74.3 (+33.0) | |
k=16 | Fine-tuning | 65.2 |
GDPNet | 67.5 | |
PTR | 81.3 | |
KnowPrompt | 82.9 (+17.7) | |
k=32 | Fine-tuning | 80.1 |
GDPNet | 81.2 | |
PTR | 84.2 | |
KnowPrompt | 84.8 (+4.7) |
可见,标注样例越少,KnowPrompt相对其它模型的效果越好。
@inproceedings{DBLP:conf/www/ChenZXDYTHSC22,
author = {Xiang Chen and
Ningyu Zhang and
Xin Xie and
Shumin Deng and
Yunzhi Yao and
Chuanqi Tan and
Fei Huang and
Luo Si and
Huajun Chen},
editor = {Fr{\'{e}}d{\'{e}}rique Laforest and
Rapha{\"{e}}l Troncy and
Elena Simperl and
Deepak Agarwal and
Aristides Gionis and
Ivan Herman and
Lionel M{\'{e}}dini},
title = {KnowPrompt: Knowledge-aware Prompt-tuning with Synergistic Optimization
for Relation Extraction},
booktitle = {{WWW} '22: The {ACM} Web Conference 2022, Virtual Event, Lyon, France,
April 25 - 29, 2022},
pages = {2778--2788},
publisher = {{ACM}},
year = {2022},
url = {https://doi.org/10.1145/3485447.3511998},
doi = {10.1145/3485447.3511998},
timestamp = {Tue, 26 Apr 2022 16:02:09 +0200},
biburl = {https://dblp.org/rec/conf/www/ChenZXDYTHSC22.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
```bash
git clone https://www.modelscope.cn/jeno11/knowprompt_demo.git