1、pet(pattern exploit training)
Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference
classification_pet_seq2seq: toolkit4nlp/classification_pet_seq2seq.py at master · xv44586/toolkit4nlp · GitHub
classification_tnews_pet: toolkit4nlp/classification_tnews_pet.py at master · xv44586/toolkit4nlp · GitHub
“房地产行业现状”,【这是关于[mask]的新闻】
添加的前缀/后缀句子称为Pattern, 而label description可以有多种方式,比如,对于“房产”这个label,我们也可以用“地产”来表达,对于“娱乐”label,也可以用“八卦”来表达,所以需要一个token到label的映射,这个映射可以是多对一的,这个被称为Verbalizer。所以在预测时可以将多个token的概率结合起来判断其对应的label。
由于是few-shot,为了提高性能,作者采用了与Knowledge Distillation类似的思路,具体方案如下:
对每个Pattern利用多个pre-train model 进行fine-tuning,得到多个模型.其中 ;
将多个模型的结果进行融合,得到一个融合模型Teacher Model;
利用Teacher Model在大量unlabed数据上进行预测,得到对应的soft labels;
利用soft labels数据,训练一个常规的分类模型(非MLM模型)。
此外,该论文中还提到了一个改进:iPET。其中的区别是:在ipet中,得到mlm的多个model后,增加一个迭代:每次会从训练mlm的model中抽取一个 ,然后从剩余的model中选取一部分对unlabeled data进行预测,将其中预测结果确定(不是准确,此时意味着结果的熵很小)的部分打上一个fake label,让
进行训练。重复多次后,融合模型对unlabeled data进行预测,得到一个soft labels data,在此基础上训练一个常规分类器。
可以看到,PET的方式主要适用label description为有限空间,即选择题,此外,每个样本的label description需要长度相同,而且由于mask之间相互独立,所以长度也不能太长。
2、TemplateNer
TemplateBased Named Entity Recognition Using BART
https://github.com/Nealcly/templateNER
NER看作一种语言模型排序问题,seq2seq框架
原始句子和模板分别作为源序列和模板序列,由候选实体span填充
推理:根据相应的模板分数对每个候选span分类
3、EntLM
Template-free Prompt Tuning for Few-shot NER
- 虽然标题叫做template-free prompt,实际上是有template的,并利用prompt思想中的 answer与label的映射关系挖掘PLM的Ner能力
- 贡献:
- 提出Entity-oriented LM (EntLM) fine-tunin,一种优雅的方式,将NER任务重构成一个LM任务,减少pre-train和fine-tuning的gap
- 在few-shot上比bert-tagger效果好
- 比template-base方案的ner,推理速度快。因为template-base ner方案需要n-gram遍历
- 具体做法:
- 从sequence labeling的角度看(此过程也可以看做template)
- 若当前位置不是一个entity,则返回本身
- 若当前位置是一个entity,则返回代表这个entity的token。此时 answer与label的映射就是该token与label的映射