限定领域的三元组抽取

在2019语言与智能技术竞赛的三元组抽取比赛

该比赛主要是从给定的句子中提取三元组,给定schema(本体)约束集合及句子sent,其中schema定义了关系P以及其对应的主体S客体O的类别,例如(S_TYPE:人物,P:妻子,O_TYPE:人物)、(S_TYPE:公司,P:创始人,O_TYPE:人物)等。比如下面的例子:


该比赛一共提供了20多万标注质量很高的三元组,其中17万训练集,2万验证集和2万测试集,实体关系(schema)50个。

本体思路:

首先是对拿到的数据进行数据分析,包括统计每个句子的长度及三元组数量,每种关系的数量分布情况。接着,对数据单独走序列标注模型和关系分析模型。最后在提取三元组的时候,用Pipeline模型,先用序列标注模型预测句子中的实体,再对实体(加上句子)走关系分类模型,预测实体的关系,最后形成有效的三元组。


项目结构图

数据分析

使用train_data_analysis.py进行分析

输出结果:
句子的平均长度为54,最大长度为300;每句话中的三元组数量的平均值为2.1,最大值为25

序列标注模型

我们将句子中的主体和客体作为实体,分别标注为SUBJ和OBJ,标注体系采用BIO。一个简单的标注例子如下:

序列标注的模型采用ALBERT+Bi-LSTM+CRF,结构图如下:

模型设置文本最大长度为128,利用ALBERT做特征提取。
利用seqeval模块做评估,在验证集上的F1值约为93.55%。

关系分类模型

需要对关系做一下说明,因为笔者会对句子(sent)中的主体(S)和客体(O)组合起来,加上句子,形成训练数据。
在句子历史评价李氏朝鲜的创立并非太祖大王李成桂一人之功﹐其五子李芳远功不可没,三元组为[{“predicate”: “父亲”, “object_type”: “人物”, “subject_type”: “人物”, “object”: “李成桂”, “subject”: “李芳远”}, {“predicate”: “国籍”, “object_type”: “国家”, “subject_type”: “人物”, “object”: “朝鲜”, “subject”: “李成桂”}]},在这句话中主体有李成桂,李芳远,客体有李成桂和朝鲜,关系有父亲(关系类型:2)和国籍(关系类型:22)。按照笔者的思路,这句话应组成4个关系分类样本,如下:
2 李芳远李成桂李成桂李成桂历史评价李氏朝鲜的创立并非太祖大王###一人之功﹐其五子###功不可没
0 李芳远朝鲜朝鲜朝鲜历史评价李氏##的创立并非太祖大王李成桂一人之功﹐其五子###功不可没
0 李成桂李成桂李成桂李成桂历史评价李氏朝鲜的创立并非太祖大王###一人之功﹐其五子李芳远功不可没
22 李成桂朝鲜朝鲜朝鲜历史评价李氏##的创立并非太祖大王###一人之功﹐其五子李芳远功不可没

因此,就会出现关系0(表示“未知”),这样我们在提取三元组的时候就可以略过这条关系,形成真正有用的三元组。
因此,关系一共为51个(加上未知关系:0)。关系分类模型采用ALBERT+Bi-GRU+ATT,结构图如下:

三元组提取

最后一部分,也是本次比赛的最终目标,就是三元组提取。
  三元组提取采用Pipeline模式,先用序列标注模型预测句子中的实体,然后再用关系分类模型判断实体关系的类别,过滤掉关系为未知的情形,就是我们想要提取的三元组了。

总结

本文标题为限定领域的三元组抽取的一次尝试,之所以取名为限定领域,是因为该任务的实体关系是确定,一共为50种关系。
  当然,上述方法还存在着诸多不足,参考苏建林的文章基于DGCNN和概率图的轻量级信息抽取模型,我们发现不足之处如下:

主体和客体的标注策略有问题,因为句子中有时候主体和客体会重叠在一起;
新引入了一类关系:未知,是否有办法避免引入;
其他(暂时未想到)
  从比赛的角度将,本文的办法效果未知,应该会比联合模型的效果差一些。但是,这是作为笔者自己的模型,算法是一种尝试,之所以采用这种方法,是因为笔者一开始是从开放领域的三元组抽取入手的,而这种方法方便扩展至开放领域。关于开放领域的三元组抽取,笔者稍后就会写文章介绍,敬请期待。
  本文的源代码已经公开至Github,网址为:
https://github.com/percent4/ccks_triple_extract 。

参考网址

NLP(二十五)实现ALBERT+Bi-LSTM+CRF模型:https://blog.csdn.net/jclian91/article/details/104826655
NLP(二十一)人物关系抽取的一次实战: https://blog.csdn.net/jclian91/article/details/104380371
基于DGCNN和概率图的轻量级信息抽取模型:https://spaces.ac.cn/archives/6671

开放领域看这个网站

https://blog.csdn.net/weixin_42691585/article/details/107617304#_487

限定领域的三元组抽取相关推荐

  1. NLP(二十六)限定领域的三元组抽取的一次尝试

      本文将会介绍笔者在2019语言与智能技术竞赛的三元组抽取比赛方面的一次尝试.由于该比赛早已结束,笔者当时也没有参加这个比赛,因此没有测评成绩,我们也只能拿到训练集和验证集.但是,这并不耽误我们在这 ...

  2. 信息抽取实战:三元组抽取(限定领域 vs 开放领域)(附代码)

    信息抽取实战:三元组抽取 目录 信息抽取实战:三元组抽取 一.限定领域的三元组抽取 比赛介绍 数据分析 序列标注模型 关系分类模型 三元组提取 总结 二.开放领域的三元组抽取 标注平台 序列标注 文本 ...

  3. 工程实践:基于规则句法的事件关系与主谓宾三元组抽取项目实现

    目前,知识图谱在学术界如火如荼地进行,但受限于知识图谱各个环节中的性能问题,还尚未能够在工业界大规模运用.而与知识图谱中以实体为知识节点,实体关系为实体关系边对知识进行组织不同,以事件作为节点,事件关 ...

  4. 细粒度情感三元组抽取任务及其最新进展

    ©作者 | 邴立东.彭海韵.许璐.谢耀赓 单位 | 阿里巴巴达摩院自然语言智能实验室 研究方向 | 自然语言处理 ABSA 和 ASTE 任务简介 情感分析作为自然语言理解里最重要也是最有挑战的主要任 ...

  5. Ch2r_ood_understanding 本文档为论文限定领域口语对话系统中超出领域话语的对话行为识别的部分实验代码。代码基于Python,需要用到的外部库有: Keras(搭建神经网络) S

    Ch2r_ood_understanding 本文档为论文限定领域口语对话系统中超出领域话语的对话行为识别的部分实验代码.代码基于Python,需要用到的外部库有: Keras(搭建神经网络) Sci ...

  6. 论文浅尝 - COLING2020 | 桥接文本和知识的多原型嵌入在少样本关系三元组抽取中的研究...

    本文转载自公众号:浙大KG. 论文题目:Bridging Text and Knowledge with Multi-Prototype Embedding for Few-Shot Relation ...

  7. 论文浅尝 - ACL2020 | 用于关系三元组抽取的级联二进制标记框架

    论文笔记整理:王中昊,天津大学. 来源:ACL2020 链接:https://arxiv.org/pdf/1909.03227.pdf 摘要 从非结构化文本中提取关系三元组是构建大规模知识图的关键.然 ...

  8. 王者荣耀s15服务器维护,王者荣耀S15战令系统最新调整 经验等级重置 限定皮加入宝箱抽取...

    原标题:王者荣耀S15战令系统最新调整 经验等级重置 限定皮加入宝箱抽取 众所周知,S14已经逐渐接近了尾声,关于新赛季的筹划以及更新任务也在进行中,近日峡谷又传来了最新消息,同样是关于新赛季更新内容 ...

  9. 基于Bert-NER构建特定领域中文信息抽取框架

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 知识图谱(Knowledge Graph)主要由实体.关系和属性构成,而信息抽取(Inform ...

最新文章

  1. C++STL 优先队列priority_queue使用
  2. Microbiome:城环所杨军组揭示随机过程主导亚热带河流微型真核浮游生物群落构建
  3. JSP中实现网页访问统计的方法
  4. 计算机基础知识关于进制,计算机基础知识-- 进制和编码
  5. Jmeter将JDBC Request查询结果作为下一个接口参数方法
  6. mysql 记录更新 内部_MySQL 入门(1):查询和更新的内部实现
  7. 信息学奥赛一本通(1256:献给阿尔吉侬的花束)
  8. 脱单盲盒|交友盲盒系统
  9. leetcode - 46. 全排列(对vector容器的元素进行搜索,判断是否存在vector中)
  10. go依赖管理-govendor
  11. java基础第五篇封装与面向对象
  12. 九宫格数独模型设计(随机生成题目)
  13. 海南大学研究生计算机分数线,海南大学研究生录取分数线
  14. 什么是嵌入式人工智能
  15. Vue 使用特殊字体
  16. 固定摄像头检测行人投射到gps坐标
  17. 门禁服务器业务导航不显示,门禁一卡通管理软件重大问题解决办法
  18. 谷歌弃用20多年的OKR,再创内卷神器?
  19. Java 并发编程解析 | 如何正确理解Java领域中的多线程模型,主要用来解决什么问题?
  20. MTK的OS是Nucleus

热门文章

  1. python iloc iat_关于python:大熊猫.iloc和.iat之间的区别?
  2. 安全生产预警智慧信息化管理系统软件
  3. ESP32设备驱动-HMC5983磁力计驱动
  4. java基于微信小程序的在线考试系统 uniapp 小程序
  5. 自研ISP芯片背后:手机厂商的目光在影像之外
  6. 中国历史上的这几款跑车,你还记得它们么?
  7. 设计模式06——行为型模式
  8. java记事本课程设计_Java课程设计记事本的功能实现课程论文附代码
  9. Java面试题基础版
  10. 2022年计算机软件水平考试软件评测师(中级)练习题及答案