【无标题】

首发地址: https://zhuanlan.zhihu.com/p/451144980

读了复旦大学发的文章《Template-free Prompt Tuning for Few-shot NER》,是用小样本思路prompt做ner的新方法,就是没开源代码很遗憾,导致有的小问题就是不明白,通过给作者发邮件弄明白了。

目录:
1、原有的prompt做ner的方式,及弊端;
2、该文章的思路;
3、该文章的思路的主要问题的解决思路;
4、我对该文章的思考。

1、原有的prompt做ner的方式,及弊端:

经典的prompt方式,将原文本是新文本模板中的一个槽位,用语言模型去预测另一个槽位,该槽位的取值是事先定好的很能代表label的词,多为一个英文词或比较少(如2个字)的中文。由于是用语言模型预测,依赖预训练的数据,所以理论上可以完全不训练,或者用少样本训练。故而成为小样本学习,或零样本学习。
本文之前的prompt做ner的思路也是如此,如图。
【无标题】_第1张图片

与prompt做分类的区别是:

  • prompt-ner需要把候选的槽位组合也当做一个槽位放入模板,从而确定文本中的实体到底是哪些词;
  • 由于上一条,导致每种可能的实体选择都样分别放入模板,分别做一次预测。(如果按照n-gram的说法,相当于把“1~文本长度”-gram
    都试一遍)巨大的复杂度将引起巨量的预测,耗时肯定是实际工作中无法承受的。——弊端

所以改进方式就需要摆脱“把候选的槽位组合也当做一个槽位放入模板”的思路,即“候选的槽位组合不能是模板的一个槽位”。

2、该文章的思路:

【无标题】_第2张图片

  • 压根不用模板,而是语言模型做mask的方式去分别预测每个词;
  • 预测出来的词并非是原文本中的词,而是在预设的n个label word中选一个;该label word和槽位类型一一对应;
  • 耗时:n个词构成的文本要做n次预测(这一点文章没提,我想的)。这个时间实际工作中你能接受吗?
  • 文章示例是单个词构成的实体,如果多个词构成的实体,预测时要预测几个mask位?——询问作者后,作者回复:
    【无标题】_第3张图片

3、该文章的思路的主要问题的解决思路:

经典prompt有2个问题:模板如何构建,和label word怎么设置。该文章没用模板,所以只涉及label word怎么设置。
需要注意的是,由于是小样本,所以任务数据集的样本量很小,为了找到更合适的label word,所以从“开放数据”中选择“相应类型”的词和文本。这就导致如果开放数据中没有这种类型,则无法用下述方式找label word。比如,“地点”、“人名”等通用类型的数据好找;但如果是垂类下特有的实体类型,甚至是业务上自己定义的实体类型,则没有相关的开放数据对应,则下述方法无效。
开放数据是指:
【无标题】_第4张图片

文章采用“数据集分布”+“语言模型预测”两种相结合的方式选取label word。
【无标题】_第5张图片

大致思路是:

  • “数据集分布”是指:该实体类型下,词频最高的词;
  • “语言模型预测”是指:用语言模型对该槽位类型的词做mask后做预测,预测出来的词中选高频词;
  • 实际选用的是二者结合,具体思路是通过选合适的label word让上述两项的概率都高。(就不列公式了。)

4、我对该文章的思考:

优点:

  • 计算次数比之前的技术方案少很多,勉强可以用在实际工作中;
  • 不用弄模板,工作量相对下降;
  • 用开源数据提升效果。
  • 选label word的思路是独立于“无模板做prompt”的主思路的,所以选label
    word的思路完全可以被替换,甚至我就人肉设定也未尝不可。

缺点:

  • n个词构成的文本,要预测n次,计算时间还是太长,实时计算不友好。——但是对于真实工作中只有少量请求是小样本的实体的情况,仅少量请求消耗比较长的时间,仿佛还好;
  • 对于垂类任务,缺少相关的开源实体的数据,无法在大规模开源数据中选更好的label word。——但由于选label
    word的思路是独立于主思路的,所以这一点在垂类数据中可以用因地制宜的类似方案作为替代。

不确定的点:

  • 多个词构成的实体,每个mask位都预测同样的label word。有没有更好的方法?
  • 还是对于上一条的情况,对于中文怎么弄?——不能把中文人名也预测成一个中国字吧?——或者2、3个字的mask也未尝不可。——我不能确定英文方案就不行。但我能想到的另一种方式是依赖分词。但还不能直接用,因为对于非实体的词被mask之后,应该预测为什么呢?还没想好。

欢迎评论,欢迎指出我的错误,感谢!

你可能感兴趣的:(NLP,自然语言处理,命名实体识别,小样本学习,槽位填充,prompt)