信息抽取,information extraction,简称IE,从无结构或者半结构的文本中抽取出结构化信息的任务

 

信息抽取方法分类

1根据抽取内容是否在原文中,分为 抽取式 和 生成式

抽取式:空腹血糖控制在 7mmol/L  ----->    空腹:7mmol/L 
生成式:肿瘤为隆起溃疡性,位于胃窦处 -----> Borrmann 分型:息肉型

2根据抽取结果分为 实体(entity)抽取、事件(event)抽取、关系(relation)抽取

实体抽取:疾病:间质性肺炎
关系抽取:疼痛 --疾病部位--> 双膝关节
事件抽取:病变事件:描述:类圆;病变大小 27*28 ;病变部位:左下肺背段

3根据训练数据的标记程度分为 有监督、半监督和无监督三类。

有监督学习,处理的基本单位是包含特定实体对的句子,每一个句子都有类别标注

优点:取能够有效利用样本的标记信息,准确率和召回率都比较高。缺点:需要大量的人工标记训练语料,代价较高。

半监督学习,句子作为训练数据的基本单位,只有部分是有类别标注的。此类方法让学习器不依赖外界交互,自动地利用未标记样本来提升学习性能。

无监督学习,完全不需要对训练数据进行标注,此类方法包含实体对标记、关系聚类和关系词选择三个过程。

4根据是 否限定关系抽取领域和关系类别 分为 预定义抽取和开放域抽取两类。

预定义关系抽取是指在一个或者多个固定领域内对实体间关系进行抽取,语料结构单一,这些领域内的目标关系类型也是预先定义的。

开放域关系抽取不限定领域的范围和关系的类别。现阶段,基于深度学习的关系抽取研究集中于预定义关系抽取

 

数据标注

模型的关键点是 解码设计,即 从标注标签 到 结构化信息 的转化过程,常见的解码设计有3种:

  • 序列标注:单类或者多类别标注,常用的有 BIO 解码或者 BMEO 解码
  • Pointer :标注抽取结果的 start 和 end
  • Token Pair:对句子中的字两两之间标注类别

BIO 、Pointer、TPlinker 这三个模型基本可以解决所有信息抽取任务,该领域是个大一统状态,一个复杂模型可以解决各种问题;

 

IOB 

IOB 标注法, 是 CoNLL 2003 采用的标注法, I 表示 inside, O 表示 Outside, B 表示 Begin。而标注的 label是 I-XXX 的, 表示这个字符, 在 XXX类命名实体的内部(inside)。B用于标记一个命名实体的开始。

BIOES

这是在 IOB方法上,扩展出的一个更复杂,但更完备的标注方法。其中 B表示这个词处于一个实体的开始(Begin), I 表示内部(inside), O 表示外部(outside), E 表示这个词处于一个实体的结束为止, S 表示,这个词是自己就可以组成一个实体(Single)

BIOES 是目前最通用的命名实体标注方法。

Markup

Makeup 是 OntoNotes 使用的标注方法, 思路比较简单, XML, 比如:

ENAMEX TYPE=”ORG”>DisneyENAMEX> is a global brand .

它用标签把 命名实体框出来, 然后,在 TYPE 上, 设置相应的类型。

当然, 还有很多其他的标注方法, 比如 IO, BMEWO 等等,感兴趣的读者可以 google一下。

大部分情况下,标签体系越复杂,准确率越高,但训练时间也更长,故应根据实际情况选择标签体系。

 

实体抽取

实体抽取,又叫 实体命名识别,NER:抽出目标文本,并识别为预定义的类别

原文:患者出现左侧胸背部持续疼痛,在中西医结合医院查胸部 CT 平扫。
结果:症状 --> 左侧胸背部持续疼痛  

1. 常用 解码设计使用 BIO;

2. 实际项目中的难点主要有两个:

  • 实体重叠嵌套,指的是文本中多个实体之间共享片段,如“患者出现左侧胸背部持续疼痛”中“左侧胸背部”是部位实体,“持续疼痛”是症状实体,如果要识别完整的“左侧胸背部持续疼痛”可能存在困难
  • 实体不连续,指的是一个实体由多个不连续片段组成,如“前胸、背部包块”我们如果想识别出“前胸包块”和“背部包块”两个实体也存在困难,因为没法通过常规的 BIO 标注
 

关系抽取

抽取 三元组,两个实体,以及他们的关系,实体和关系都是预定义的类别

默认情况下连接这对实体的关系是有方向的,称为头实体和尾实体;

原文:右下肺少许炎症
结果:(右下肺,部位疾病,炎症)

1. 关系抽取 通常分为两步,第一步实体抽取,第二步给定一组实体和一个句子进行关系分类,属于多分类问题;

分步抽取的方案叫做 流水线学习 Pipeline ,端到端的方案叫做 联合学习 Joint ;

2. 解码方法 常见的有 BIO 、Pointer 、TPLinker 等,后面的比前面的更加复杂,但是能力也会更强

3. 常见的难点有两个:

  • 关系重叠,指的是一个实体属于多个关系,如“右下肺少许炎症,见结节”,这里的“右下肺”既和“炎症”有关系,又和“结节”有关系。

  • 实体对组合,指的是实体对有多重组合方式,如“左肺和右肺,各见一小结节”和“左肺和右肺,各见一小结节和磨玻璃影”两句话中的实体对关系抽取方式不同,需要一个更加复杂的模型来 cover 各种不同方式的关系抽取。

4. 衍生问题如下:

  • 远监督噪音,因为一般情况不会有很多训练数据,所以可以用来构造训练数据

  • 文档级抽取,文档中的实体很多,但是会发生指代歧义等问题,所以难度也很大

  • 开放域关系抽取,开放领域中的关系都不是预先定义的,需要模型自动识别主谓宾三元组,往往用于构建知识图谱过程中。


事件抽取

1.定义:从一段文本中抽取出预定义的事件触发词和事件要素,组合为相应的结构化信息 ,

除了事件,实际应用中信息抽取的结果可能更加复杂,但都可以拆成关系抽取。

2.常见的解决方法就是把 事件 变成 关系抽取问题 进行解决

 

技术发展

BiLSTM-CRF 拉开了信息抽取 深度学习时代的序幕;

 

典型应用场景

 

 

 

 

参考资料: 

https://juejin.cn/post/6983215564722274335  信息抽取    包含代码链接

 

https://zhuanlan.zhihu.com/p/180556728  一文了解信息抽取(Information Extraction)【关系抽取】

https://zhuanlan.zhihu.com/p/67613067       信息抽取(Information Extraction:NER(命名实体识别),关系抽取)

https://zhuanlan.zhihu.com/p/376898772           【深度学习】信息抽取方法综述

信息抽取——关系抽取 - 西多士NLP - 博客园 (cnblogs.com) 

信息抽取实战:三元组抽取(限定领域 vs 开放领域)(附代码)-CSDN博客