#简历:CCKS2021—通用百科知识图谱实体类型推断

项目介绍:(项目背景、项目难点、怎么做的、其中难点具体是怎么解决的,突出下解决思路以及实现的效果是怎么样的)

难点:

这个项目是对通用百科知识图谱中的实体类型进行判别,那么这个项目的难点其实在于一点标注数据都没有,以及类别边界定义模糊,类型非常多等挑战;在这个项目中,训练集有64万,验证集12万,测试集12万,在这个数据量的情况下,对于纯无标注的数据,即使通过人工标注的少量数据进行监督训练,效果可能也不太好,而且实体类型比较多的,所以使得监督任务变得比较困难。同时每一个实体可能对应一个或者多个标签,比如一个样本,实体为刘德华,同时会一个contents对刘德华进行文本描述,那么通过对文本的理解,从几十个类别中找到对应的类别标签。所以我把整个项目建模为多标签文本分类的任务,搭建了一个基于ERNIE的预训练-微调框架,解决这个项目的任务。
具体一个做法是:

怎么做的:

对于预训练部分:针对纯无标注的数据,结合业务理解构建种子词表;通过种子词表搭建了类型与实体之间的关系, 通过种子词表来挖掘少量的带有噪声的训练数据,通过挖掘出的数据对模型进行初步的预训练,同时我们也有人工标注一部分数据,在人工标注的数据集上进行微调,得到初代模型。
然后利用这个初代模型去提高预训练的数据质量,与此同时,我们也不断地增加微调部分的人工标注的数据量,通过不断提高预训练和微调部分的效果,从而进一步提高算法模型的效果。然后在不断地迭代刚才说的这个过程,最终得到一个分类效果较优的算法模型。

具体做法:

利用预训练-微调的手段+模型迭代的方式解决的。
当有监督数据很少的时候 模型不能很好的分类 本质原因 是模型的自身知识不够的 预训练就是能够提供一个粗的先验知识 比如非常流行的bert ,bert为什么能够成功 也是因为前面进行了大量的预训练 即使本身标注数据很少的话 也能够进行一个很好的预测 那么我们效仿预训练微调的框架 实行这个策略 。
这个预训练的不是nlp手段下bert的预训练,其实是我们通过规则和种子词的手段,去捞了很多规则数据,因为难点就是没有标注数据,那么希望这种手段可以,预训练的话可以能够识别到一些比较容易推断的实体类型,微调的话 我们通过少量的人工标注数据 大概一万多条。达到了还不错的效果。在此基础上,进行模型的迭代。
但是在群里交流的时候 发现前面几名都大量的标注数据。(5万多)但效果其实和我们差不多。

刚才提到了也使用了一些trick。

面向leader以及hr的回答方式:

背景:对知识图谱中实体类型类别进行判断。比如实体:刘德华,对这个身上的标签进行判断。官方有对应的标准标签。
建模方式:我们要做的就是 每个实体去找到匹配到的各个标签。
数据:没有任何标注数据。人工标注太过于耗费精力。所以我们挖掘一部分种子词来进行解决。
怎么做的:主要采用nlp常用的ERNIE模型,通过种子词挖掘的数据集进行预训练,同时我们也进行了一定量的人工标注数据,在人工标注的数据集上进行微调。并不断地进行模型的迭代,让模型有一个更好的效果。

刁钻问题:

1、评价指标:是什么,公式是什么?

  • 精准率和召回率。
    精准率公式:Precision = TP / (TP+FP)
    召回率公式:Recall = TP / (TP+FN)

2、预训练准确率多少,微调后多少。不用预训练多少(只用人工的多少)

  • 预训练的话:30%左右
  • 仅人工:77%左右
  • 预训练+微调后:78%多
  • 经过4轮迭代左右,第一次迭代 79多,接近80,第二次迭代80.5左右,直到第四次大概多81%多。

3、还试过其他模型吗?

  • bert,bert_CNN,bert_RNN,bert_RCNN,bert_DPCNN这些也有尝试。不过效果没有ERNIE好。

4、为什么没用集成模型?

  • 实验条件不够 没有那么多机器

5、其他队伍大概怎么做的,知道吗?

  • 目前了解到的话,有些队伍还是用监督学习做的。不过标注的数据更多些。

6、简单介绍下bert吗?ernie吗?这两个区别是什么吗?ernie最近出了3.0。(ernie现在出了3.0)秒杀所以中文任务。ernie论文也要看一下。

7、你能简单讲一下你们用的ERNIE和ernie3.0简单说一下吗?

8、现在nlp这么火,还可以介绍其他介绍模型吗?要是问ernie,就提bert。

9、针对题目,知识图谱问题:所有实体进行类型推断。数据来源是知识图谱来的,本身任务跟图谱没有多大关系。

10、使用ernie模型,输出维度是batch_size * sequence * embedding,你是怎么从这个维度得到你所需要的输出结果的维度?

  • bert和ernie第一个CLS token其实表示的是这句话的语义,只需要拿CLS token的embedding去过一个全连接,这个全连接层,其中的神经元的个数就是标签个数。

11、你是基于ernie进行训练的,你们预训练任务是怎么设计的?

  • 这里指的预训练并不是大家常说bert/ernie中随机mask的预训练任务,这里是构建的一个狭义的预训练任务,相当于给模型先验知识的一个感觉,提前让它看到一些数据,先学习一些简单的分类任务。

12、在人工标注的时候,一个样本标A可以,标B也可以,那么你们是怎么考虑的?如果标漏了,该怎么办?会对模型产生影响?(也是类别定义模糊的回答方式)

  • 先讲评价指标,的确是您说的,标签之间定义有些模糊,对于官方任务中,如果一个标签漏了,这个样本都会算模型预测算了。
  • 的确存在标签之间定义模糊的情况,所以在这个任务下,在标注的时候,遇到情况,我们会先把这部分数据拿出来,几个人一起看下,来定义一下,同时,我们也会和该任务下的负责人进行沟通,类似和需求方进行一定沟通,来定义这一部分的数据类别,当我们看到的数据越来越多的时候,我们也会更加理解实体所对应的类别。通过这些方式来尽量缓解这种标签定义模糊的现象。

13、如果要你再优化,你有考虑如何进行优化吗?

  • 我觉得可以利用标签之间的层级关系,层级信息可以利用,会包含更多的有用的信息。具体怎么用还没想好。假设真的要用的话,就会去看一些论文,看看学术界以及工业界的一些用法。

Transformer精简版
Transformer知识点总结

Bert知识点总结
和bert相关的面试题
紧接着上面——常用激活函数面试要点

ERNIE知识点总结

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值