UCAS - AI学院 - 自然语言处理专项课 - 第13讲 - 课程笔记
信息抽取
概述
- 互联网和社交媒体快速发展
- 高效准确的信息获取手段成为必需
- (文本)信息抽取技术应运而生
- 非结构化文本数据占据约80%
- 信息抽取
- 从非结构化、半结构化的自然语言文本中抽取实体、实体属性、实体间的关系以及事件等事实信息,并形成结构化数据输出的一种文本数据挖掘技术
- 信息抽取 vs 信息检索
- 信息检索:查询——文档——检索相关结果
- 信息抽取:文档——相关信息抽取和整理(关系、事件、属性)
- 主要任务
命名实体识别
定义
- 命名实体识别
- 信息抽取的一项基础任务
- 自动识别出文本中指定类别的实体,包括人名、地名、机构名、日期、时间和货币等七类
- 时间、日期、货币和百分比规则性强,利用模板或正则表达式基本可处理
- 人名、地名和组织机构名是关注重点
- 任务
- 实体检测:检测出文本中哪些词串属于实体,即发现实体的左边界和右边界
- 实体分类:判别检测出的实体具体属于哪个类别
典型方法
-
基于规则的方法
- 人名:可借助姓氏和名字用字词典,结合称谓等线索词识别大部分的人名
- 地名和组织结构名:右边界明显,但左边界模糊,往往收集一个机构名库和地名库
- 不足
- 一个实体属于多个类别
- 既是普通词也是实体
- 实体缩写变化多、嵌套情形复杂
- 新的命名实体层出不穷
-
基于有监督的机器学习方法
- 训练数据的格式化:BIOS格式化,格式为实体类别+位置类别(LOC-I)
- 测试:每一个字符打上标签,同时包含实体类别和位置类别
- 基于隐马尔科夫模型的命名实体识别
- 问题形式化
- 句子观测 X = x 0 , … , X T X = x_0, \dots, X_T X=x0,…,XT
- 搜索标签序列 Y = y 0 … , y T Y = y_0 \dots, y_T Y=y0…,yT
- 目标为最大后验概率 P ( Y ∣ X ) = P ( Y ) P ( X ∣ Y ) = ∏ t = 0 T P ( y t ∣ y t − 1 ) p ( x t ∣ y t ) P(Y|X) = P(Y) P(X|Y) = \prod_{t = 0}^T P(y_t| y_{t - 1}) p(x_t | y_t) P(Y∣X)=P(Y)P(X∣Y)=∏t=0TP(yt∣yt−1)p(xt∣yt)
- p ( y t ∣ y t − 1 ) = count ( y t − 1 , y t ) count ( y t − 1 ) p(y_t | y_{t - 1}) = \frac {\operatorname{count}(y_{t - 1}, y_t)}{\operatorname{count}(y_{t - 1})} p(yt∣yt−1)=count(yt−1)count(yt−1,yt)
- p ( x t ∣ y t ) = count ( x t , y t ) count ( y t ) p(x_t|y_t) = \frac{\operatorname{count}(x_t, y_t)}{\operatorname{count}(y_t)} p(xt∣yt)=count(yt)count(xt,yt)
- 测试
- 给定待标注句子 X X X,利用Viterbi算法搜索标签序列 Y Y Y
- δ t ( y ) = max y ′ [ δ t − 1 ( y ′ ) p ( y ∣ y ′ ) ] p ( x t ∣ y ) \delta_t(y) = \max_{y^\prime} [\delta_{t - 1}(y^\prime) p(y|y^\prime)] p(x_t | y) δt(y)=maxy′[δt−1(y′)p(y∣y′)]p(xt∣y)
- φ t ( y ) = arg max y ′ [ δ t − 1 ( y ′ ) p ( y ∣ y ′ ) ] p ( x t ∣ y ) \varphi_t(y) = \arg\max_{y^\prime} [\delta_{t - 1}(y^\prime) p(y|y^\prime)] p(x_t | y) φt(y)=argmaxy′[δt−1(y′)p(y∣y′)]p(xt∣y)
- 基于条件随机场的命名实体识别
- P ( Y ∣ X ) = 1 Z exp { ∑ t = 1 T ∑ k λ k f k ( y t − 1 , y t , X t ) } P(Y|X) = \frac 1Z \exp\left\{ \sum_{t = 1}^T \sum_k \lambda_k f_k(y_{t - 1}, y_t, X t) \right\} P(Y∣X)=Z1exp{∑t=1T∑kλkfk(yt−1,yt,Xt)}
- 根据训练数据构造特征函数,同时训练权重
- 词汇化特征、标签特征、标签词汇组合特征、词典特征
- 基于深度神经网络的命名实体识别
自动评价
- 选择一个无关测试文本 D T D_T DT,人工标注视为GT D R D_R DR,得到的系统输出为 D S D_S DS
- count ( c o r r e c t ) \operatorname{count}(correct) count(correct): D R D_R DR和 D S D_S DS中完全一致的实体数目
- count ( s p u r i o u s ) \operatorname{count}(spurious) count(spurious): D S D_S DS中识别出但 D R D_R DR中没有的实体数目
- count ( m i s s i n g ) \operatorname{count}(missing) count(missing): D R D_R DR中存在出但 D S D_S DS中没有的实体数目
- p r e c i s i o n = count ( c o r r e c t ) count ( c o r r e c t ) + count ( s p u r i o u s ) precision = \frac {\operatorname{count}(correct)}{\operatorname{count}(correct) + \operatorname{count}(spurious)} precision=count(correct)+count(spurious)count(correct)
- r e c a l l = count ( c o r r e c t ) count ( c o r r e c t ) + count ( m i s s i n g ) recall = \frac {\operatorname{count}(correct)}{\operatorname{count}(correct) + \operatorname{count}(missing)} recall=count(correct)+count(missing)count(correct)
- F 1 = 2 × p r e c i s i o n × r e c a l l p r e c i s i o n + r e c a l l F1 = \frac {2 \times precision \times recall}{precision + recall} F1=precision+recall2×precision×recall
实体消歧
定义
- 一篇文档中同一实体可能有多种不同的指称(Mention)——共指消解
- 不同文档中相同名称的实体也可能表示不同的含义——实体链接
- 共指消解
- 指称类型:普通名词短语、专有名词和代词
- 目标:将文档中所有指称进行聚类,将指向同一实体的所有指称归为一类
- 实体链接
- 无论对于关系抽取还是事件抽取,都需要对多个文档中相同指称进行消岐
- 确定实体指称所对应的真实世界实体
典型方法
共指消解
-
问题形式化
- 假设文本中所有指称都已经正确识别,并构成候选指称集合 M = { m 1 , … , m N } M = \{m_1, \dots, m_N\} M={m1,…,mN}
- 共指消解问题可视为集合 M M M上的划分问题,每个等价类中的所有元素指向同一个实体
-
基于规则的共指消解——多遍过滤法
- 用强规则对候选指称集合 M M M进行划分和聚类,得到新集合 M ′ = { m 1 k 1 , … , m 2 k N } M^\prime = \{m_1^{k_1}, \dots, m_2^{k_N}\} M′={m1k1,…,m2kN},上标 k i k_i ki相同的指称具有共指关系,合并为一个聚类(共指链),算作一个元素, ∣ M ′ ∣ < ∣ M ∣ |M^\prime| \lt |M| ∣M′∣<∣M∣
- 在 M ′ M^\prime M′的基础上,逐渐利用准确率稍低的规则对其进行划分,不断放松约束归并具有共指关系的指称集合
- 集合中的元素个数随着各层筛子的应用不断减少,总体上正确率不断下降,召回率不断上升
- 第一遍,精确匹配规则:如果两个指称在字符层面完全匹配,那么这两个指称指向同一个实体,将其聚为一类
- 第二遍,精确结构规则:如果两个指称满足P50中条件之一,则认为这两个指称指向同一个实体
- 第三遍,严格的中心词匹配规则:指称或指称聚类满足P51所有条件才能将其归为某个聚类
- 第四~六遍,更加宽松的匹配规则
- 第七遍,代词匹配规则:消解代词时,要求先行语和该代词在单复数、性别、人称、动物性(是否为生命体)和实体类别上保持一致
-
数据驱动的共指消解
-
假设存在一批正确标注了共指关系的语料库,希望从标注数据中学习共指消解模型,自动对测试数据中的候选指称集合进行划分
-
输入:候选之臣集合 M M M、训练样本(已标记)、测试样本(未标记)
-
核心模块:正负指称对构建、特征提取、指称对分类训练模型
-
模型判别结构:
-
正负指称对:对 M M M的任意指称 m j m_j mj,若与之最近的具有共指关系的指称是 m i ( i < j ) m_i\ (i< j) mi (i<j),则 ( m i , m j ) (m_i, m_j) (mi,mj)构成正例,任意 m k ( i < k < j ) m_k\ (i < k< j) mk (i<k<j)与 m j m_j mj构成负例
-
特征提取
- 指称自身以及上下文共同构成特征
- 特征函数 f ( m i , m j ) f(m_i, m_j) f(mi,mj)
-
分类模型:朴素贝叶斯、最大熵、支持向量机等
-
自动评价
- 人工标注集合 G G G和系统生成集合 S S S
- P = ∑ i = 1 N g ( ∣ G i ∣ − ∣ p ( G i ) ∣ ) ∑ i = 1 N g ( ∣ G i ∣ − 1 ) P = \frac {\sum_{i = 1}^{N_g} (|G_i| - |p(G_i)|)}{\sum_{i = 1}^{N_g} (|G_i| - 1)} P=∑i=1Ng(∣Gi∣−1)∑i=1Ng(∣Gi∣−∣p(Gi)∣), p ( G i ) p(G_i) p(Gi)为在标准等价类内系统的划分结果
- R = ∑ i = 1 N g ( ∣ S i ∣ − ∣ p ( S i ) ∣ ) ∑ i = 1 N g ( ∣ S i ∣ − 1 ) R = \frac {\sum_{i = 1}^{N_g} (|S_i| - |p(S_i)|)}{\sum_{i = 1}^{N_g} (|S_i| - 1)} R=∑i=1Ng(∣Si∣−1)∑i=1Ng(∣Si∣−∣p(Si)∣), p ( S i ) p(S_i) p(Si)为在系统等价类内实际的划分结果
实体链接
- 目标:学校一个映射函数 f : M × K → E f: M \times K \to E f:M×K→E,将 M M M中每一个实体指称准确连接到实体概念集合 E E E中某个对应实体,通常参考背景 K K K
- 主要步骤
- 候选实体概念的确定:对于给定的实体指称 m m m,从 E E E中找出可能的候选集合 E m E_m Em
- 候选实体概念的排序:对候选集合 E m E_m Em中的所有实体进行打分排序,排在最前面的实体概念就是答案
- 确定候选实体概念
- 确定结果直接影响实体链接的候选空间
- 方法:构造 指称-实体概念 词典
- 以维基百科为知识源,最终形成
的键值对
- 利用Wikipedia页面的各种特性
- 候选实体概念排序
- 方法分类(是否独立预测)
- 基于局部的实体排序:假设文档中多个指称之间相互独立,对某个指称的候选实体排序仅仅关注该指称的上下文以及候选实体概念的语义信息
- 基于全局的实体排序:假设文档中指称相关,一定程度上属于同一个主题,因此在实体链接过程中相互影响(相关图)
- 自动评价
- 类似于分类任务,直接使用P、R进行评价
- 对于文档 D D D,人工标注的指称和链接结果集合为 M ∗ M^\ast M∗和 E ∗ E^\ast E∗,系统产生为 M M M和 E E E
- 二者的交集为 M ′ = { m k ∗ ∣ ∀ k , m k ∗ = m k } M^\prime = \{m^\ast_k | \forall k, m^\ast_k = m_k\} M′={mk∗∣∀k,mk∗=mk}和 E ′ = { e k ∗ ∣ ∀ k , m k ∗ ∈ M ′ , e k = e k ∗ } E^\prime = \{e^\ast_k | \forall k, m^\ast_k \in M^\prime, e_k = e^\ast_k \} E′={ek∗∣∀k,mk∗∈M′,ek=ek∗}
- P = ∣ E ′ ∣ ∣ E ∣ P = \frac {|E^\prime|}{|E|} P=∣E∣∣E′∣
- R = ∣ E ′ ∣ E ∗ R = \frac{|E^\prime|}{E^\ast} R=E∗∣E′∣
- F 1 = 2 P R P + R F_1 = \frac {2PR}{P + R} F1=P+R2PR
关系抽取
定义
- 关系抽取:识别文本中的实体并判别实体间关系
- n-元关系: t = ( e 1 , … , e n , r ) t = (e_1, \dots, e_n, r) t=(e1,…,en,r),一般关注2-元关系,构成三元组 t = ( e 1 , e 2 , r ) t = (e_1, e_2, r) t=(e1,e2,r)’
典型方法
- 问题形式化
- 假设句子中的实体已经给定,目标在于识别实体之间的关系
- 以下探讨限定领域给定关系类别集合下的关系识别任务
- 实体关系训练数据 D t r a i n = { s i , ( e i 1 , e i 2 , r i ) } i = 1 N D_{train} = \{s_i, (e_{i1}, e_{i2}, r_i)\}_{i = 1}^N Dtrain={si,(ei1,ei2,ri)}i=1N,关系类别集合 R = { r k } k = 1 K R = \{r_k\}_{k = 1}^K R={rk}k=1K
- 测试数据 D t e s t = { s j , ( e j 1 , e j 2 ) } j = 1 M D_{test} = \{s_j, (e_{j1}, e_{j2})\}_{j = 1}^M Dtest={sj,(ej1,ej2)}j=1M
- 基于分布式表示的关系分类
- 方法关键:如何根据实体所在的上下文准确判别一对实体之间的关
- 核心思想
- 所有特征采用分布式表示,以克服数据稀疏与语义鸿沟问题
- 采用局部表示捕捉实体对周围的上下文词汇化特征
- 采用CNN捕捉实体对所在句子的全局信息
- 输入:经过分词的句子 S = ( w 1 w 2 … w n ) S = (w_1 w_2 \dots w_n) S=(w1w2…wn),并标注了待识别关系的两个实体 e 1 e_1 e1和 e 2 e_2 e2
- 首先将每个词语映射为词向量 w i → x i ∈ R d w_i \to x_i \in \R^d wi→xi∈Rd,形成词向量列表 X = ( x 1 x 2 … x n ) X = (x_1 x_2 \dots x_n) X=(x1x2…xn)
- 核心模块
- 学习词汇化分布式特征表示 X l e x ∈ R d 1 X_{lex} \in \R^{d_1} Xlex∈Rd1
- 学习句子级分布式特征表示 X s e n ∈ R d 2 X_{sen} \in \R^{d_2} Xsen∈Rd2
- 最终表示 X f i n a l = [ X l e x : X s e n ] ∈ R d 1 + d 2 X_{final} = [X_{lex}: X_{sen}] \in \R^{d_1 + d_2} Xfinal=[Xlex:Xsen]∈Rd1+d2
- 分类:线性映射 + softmax
- 词汇化分布式表示
- 实体自身
- 实体的上下文词汇
- 实体对在语义知识库的上位词
自动评价
- 人工表示实体关系集合 R R R,自动标注结果 O O O
- P = ∣ O ∩ R ∣ ∣ O ∣ P = \frac{|O \cap R|}{|O|} P=∣O∣∣O∩R∣
- R = ∣ O ∩ R ∣ ∣ R ∣ R = \frac{|O \cap R|}{|R|} R=∣R∣∣O∩R∣
- F 1 = 2 P R P + R F_1 = \frac {2PR}{P + R} F1=P+R2PR
事件抽取
定义
- 针对特定领域的事件进行事件元素的抽取
- 事件
- 事件类型
- 参与者(人名、机构名)
- 通用事件属性(地点、时间、时长)
- 事件相关属性(由具体的事件类型决定)
- 每个事件属性视为一种角色
- 不同类型的事件对应不同的组织结构
- 事件抽取旨在抽取表明事件类型的触发词及其对应的事件元素
- 每种类型的事件可以通过一个模板表示,该模板可以是通用模板,也可以是事件类型相关的特定模板
典型方法
-
基于联合模型的事件抽取方法
- 多个事件联合抽取
- 形式化
- 触发词标记集合 L ∪ { ∅ } L \cup \{\empty\} L∪{∅}
- 事件元素角色结合 R ∪ { ∅ } R \cup \{\empty\} R∪{∅}
- 输入:句子 x = ( x 1 … x n ) x = (x_1 \dots x_n) x=(x1…xn),候选事件元素列表 ϵ = { e k } k = 1 m \epsilon = \{e_k\}_{k = 1}^m ϵ={ek}k=1m
- 输出: y = ⟨ t 1 , ( a 11 , … , a 1 m ) , … , t n , ( a n 1 , … , a n m ) ⟩ y = \langle t_1, (a_{11}, \dots, a_{1m}), \dots, t_n, (a_{n1}, \dots, a_{nm}) \rangle y=⟨t1,(a11,…,a1m),…,tn,(an1,…,anm)⟩, t i ∈ L ∪ { ∅ } t_i \in L \cup \{\empty\} ti∈L∪{∅}为 x i x_i xi的触发词标记, a i j ∈ R ∪ { ∅ } a_{ij} \in R \cup \{\empty\} aij∈R∪{∅}为 e j e_j ej输入事件类型 t i t_i ti的角色标记
- 目标:给定任意 x x x,准确输出标注结果 y y y,该问题可通过 y = arg max y ′ ∈ y ( x ) W ⋅ F ( x , y ′ ) y = \arg\max_{y^\prime \in \mathcal y(x)} W \cdot F(x, y^\prime) y=argmaxy′∈y(x)W⋅F(x,y′)求解
- 优化:在线更新 W ← W + F ( x , z ) − F ( x , y ) W \gets W + F(x, z) - F(x, y) W←W+F(x,z)−F(x,y),其中 z z z为标注结果, y y y为预测结果
- 算法:P109(BeamSearch)
-
基于分布式模型的事件抽取方法
- 词向量表示
- 词汇特征的分布式表示
- 句子特征 + 卷积
- 角色分类
自动评价
- 触发词识别
- 事件角色分类
- 正确事件
- 正确定位触发词
- 正确预测事件类型
- 正确识别触发词关联属性
- 正确预测事件角色