赞
踩
参考地址:知识抽取-实体及关系抽取 - 知乎
目录
知识抽取涉及的“知识”通常是清楚的、事实性的信息,这些信息来自不同的来源和结构,而对不同数据源进行的知识抽取的方法各有不同,从结构化数据中获取知识用D2R,其难点在于复杂表数据的处理,包括嵌套表、多列、外键关联等。从链接数据中获取知识用图映射,难点在于数据对齐,从半结构化数据中获取知识用包装器,难点在于wrapper的自动生成、更新和维护,这一篇主要讲从文本中获取知识,也就是广义上说的信息抽取。
信息抽取三个最重要/最受关注的子任务:
实体抽取:也就是命名实体识别,包括实体的检测(find)和分类(classify)
关系抽取:通常我们说的三元组(triple)抽取,一个谓词(predicate)带2个形参(argument),如 Founding-location(IBM,NewYork)
事件抽取:相当于一种多元关系的抽取
实体抽取或者说命名实体识别(NER)在信息抽取中扮演着重要角色,主要抽取的是文本中的原子信息元素,如人名、组织/机构名、地理位置、事件/日期、字符值、金额值等。实体抽取任务有两个关键词:find & classify,找到命名实体,并进行分类。
【蓝色为人名(Person),紫色为时间(Date),红色为机构(Organization)】
Training:
Testing:
看一下最常用的两种sequence labeling的编码方式,IO encoding简单的为每个token标注,如果不是NE就标为O(other),所以一共需要C+1个类别(label)。而IOB encoding需要2C+1个类别(label),因为它标了 NE boundary,B 代表 begining,NE 开始的位置,I 代表 continue,承接上一个 NE,如果连续出现两个 B,自然就表示上一个 B 已经结束了。
在 Stanford NER 里,用的其实是 IO encoding,有两个原因,一是 IO encoding 运行速度更快,二是在实践中,两种编码方式的效果差不多。IO encoding 确定 boundary 的依据是,如果有连续的 token 类别不为 O,那么类别相同,同属一个 NE;类别不相同,就分割,相同的 sequence 属同一个 NE。而实际上,两个 NE 是相同类别这样的现象出现的很少,如上面的例子,Sue,Mengqiu Huang 两个同是 PER 类别,并不多见,更重要的是,在实践中,虽然 IOB encoding 能规定 boundary,而实际上它也很少能做对,它也会把 Sue Mengqiu Huang 分为同一个 PER,这主要是因为更多的类别会带来数据的稀疏。
1、LSTM+CRF
最经典的 LSTM+CRF,端到端的判别式模型,LSTM 利用过去的输入特征,CRF 利用句子级的标注信息,可以有效地使用过去和未来的标注来预测当前的标注。
2、ELECTRA + CRF
详见笔者同事的博客:ELECTRA + CRF 实现中文命名实体识别_huangcy的博客-CSDN博客
3、BERT + CRF
笔者项目中最终采用的方案。哈哈,遇事不决用Bert。事实上是 我们团队比对了在同一份数据集上,用 Bert 的表现还是要比用 ELECTRA 好一点点。
评估 IR 系统或者文本分类的任务,我们通常会用到 precision,recall,F1 这种 set-based metrics,但是在这里对 NER 这种 sequence 类型任务的评估,如果用这些 metrics,可能出现 boundary error 之类的问题。因为 NER 的评估是按每个 entity 而不是每个 token 来计算的,我们需要看 entity 的 boundary。
以下面一句话为例:
First Bank of Chicago announced earnings...
正确的 NE 应该是 First Bank of Chicago,类别是 ORG,然而系统识别了 Bank of Chicago,类别 ORG,也就是说,右边界(right boundary)是对的,但是左边界(left boundary)是错误的,这其实是一个常见的错误。
- 正确的标注:
- ORG - (1,4)
-
- 系统:
- ORG - (2,4)
而计算 precision,recall 的时候,我们会发现,对 ORG - (1,4) 而言,系统产生了一个 false negative,对 ORG - (2,4) 而言,系统产生了一个 false positive!所以系统有了 2 个错误。F1 measure 对 precision,recall 进行加权平均,结果会更好一些,所以经常用来作为 NER 任务的评估手段。另外,专家提出了别的建议,比如说给出 partial credit,如 MUC scorer metric,然而,对哪种 case 给多少的 credit,也需要精心设计。
实体识别完成之后还需要进行归一化,比如万达集团、大连万达集团、万达集团有限公司这些实体其实是可以融合的。
主要步骤如下:
1、实体识别
命名实体识别,词典匹配
2、候选实体生成
表层名字扩展,搜索引擎,查询实体引用表
3、候选实体消歧
图方法,概率生成模型,主题模型,深度学习
*补充一些开源系统:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。