文章目录
1 词汇挖掘与实体识别
1.1 概述
对领域词汇的识别与理解是机器理解一个领域的前提和基础。从图模型的角度来看,构建知识图谱的第一步是获取图谱中的实体。知识图谱中实体的获取主要分为两大步:从文本语料中挖掘出尽可能多的高质量词汇;从这些词汇中筛选出目标知识图谱所需的实体。
1.2 领域短语挖掘
1.2.1 问题描述
邻域短语挖掘的输入是领域语料,输出是该领域中的高质量短语(High Quality Phrase)。
在给定的文档中,一个高质量短语是指连续出现的单词序列,也就是
w
1
w
2
⋯
w
n
w_1w_2\cdots w_n
w1w2⋯wn,其本质上是一个 N-Gram。对于中文短语挖掘,
w
i
w_i
wi 可以是词,也可以是字符。一个高质量的短语通常独立描述了一个完整、不可分割的语义单元。对于短语的质量,一般从以下几个角度来评估:频率,一致性,信息量,完整性。
1.2.2 领域短语挖掘方法
近年来,利用短语的统计指标特征来挖掘词汇成为主流方法之一,可以分为无监督学习和监督学习两大类。无监督学习适用于缺乏标注数据的场景,监督学习适用于有标注数据的场景。
- 无监督方法
无监督方法主要通过计算候选短语的统计指标特征来挖掘领域短语。
(1)候选短语生成:这里的候选短语就是高频的 N-Gram。首先设定 N-Gram 出现的最低阈值,通过频繁模式挖掘得到出现次数大于或等于阈值的 N-Gram 作为候选短语。
(2)统计特征计算:根据语料计算候选短语的统计指标特征,如 TF-IDF(频率-逆文档频率)、PMI(点互信息)、左邻字熵以及右邻字熵等。
(3)质量评分:将这些特征的值融合(如加权求和等)得到候选短语的最终分数,用该分数来评估短语的质量。
(4)排序输出:对所有候选短语按照分数由高到低排序,通常取前 K 个短语或者取根据阈值筛选出的短语作为输出。 - 监督方法
基于监督学习的领域短语挖掘在无监督方法的基础上增加了样本标注和分类器学习。
(1)样本标注:其具体实现可以是人工标注或者远程监督标注(利用在线知识库)两种常见形式。
(2)分类器学习:根据正负样本,学习一个二元分类器。分类器模型可以是决策树、随机森林或者支持向量机。对于每个样本,使用统计指标(TF-IDF、C-value、NC-value 以及 PMI 等)构造相应的特征向量。
上述方法根据原始词频的相关统计特征来判定候选短语的质量,会导致子短语的词频一定大于父短语,因此需要修正与优化。考虑到在建了高质量候选短语的判定模型之后,可以尝试利用模型来识别高质量短语,再根据已经发现的高质量短语对语料进行切割,在切割的基础上重新统计词频,改进词频统计的精度。
基于监督学习的领域短语挖掘方法经过优化后,采取迭代式计算框架,在迭代的每一轮先后进行语料切割和统计指标更新。语料切割与高质量短语识别两者之间相互增强。经过多次迭代,直至候选短语得分收敛。最终,根据每个候选短语的最后得分识别语料中的高质量短语。
1.2.3 统计指标特征
- TF-IDF
TF-IDF(Term Frequency-Inverse Document Frequency,词频-逆文档频率)一般用来评价一个短语在语料中的重要性。一些通用词汇过于普遍,并不适合用来刻画该领域语料的特征,但其出现频率也相当高。考虑到通用词汇通常在外部文档中也以很高的频率出现,如果某个短语在领域语料中频繁出现但是在外部文档中很少出现,则该短语很可能是该领域的高质量短语。
对于某个词汇 u u u,其 TF 值定义为语料中该词汇出现的频次( f ( u ) f(u) f(u))除以该语料中所有词汇的累计词频:
tf ( u ) = f ( u ) ∑ u ′ f ( u ′ ) \text{tf}(u)=\frac{f(u)}{\sum_{u'}f(u')} tf(u)=∑u′f(u′)f(u)
IDF 定义为外部文档总数除以包含该词汇的外部文档数(通常使用比值的对数形式);为避免外部文档中从未出现某个词汇所导致的分母为 0 的异常情况,一般会在 IDF 公式的分子和分母上加上一个非零正常数 δ \delta δ 进行平滑处理:
idf ( u ) = log ∣ D ∣ + δ ∣ { j : u ∈ d j } ∣ + δ \text{idf}(u)=\log \frac{\vert D \vert+\delta}{\vert \{ j:u \in d_j \} \vert+\delta} idf(u)=log∣{j:u∈dj}∣+δ∣D∣+δ
其中, d j d_j dj 是第 j j j 篇外部文档, ∣ D ∣ \vert D \vert ∣D∣ 是外部文档的总数。
TF-IDF 形式化地表示为 TF 乘以 IDF。一个词的重要程度与其在该语料中出现的频次(TF)呈正向关系,与其在外部文档中出现的频次(DF)呈反向关系(也就是与 IDF 呈正向关系)。 - C-value
C-value 在词频基础上还考虑了短语的长度,以及父子短语对于词频统计的影响:
C-value ( u ) = { log 2 ∣ u ∣ ⋅ f ( u ) , u 没有父短语 log 2 ∣ u ∣ ( f ( u ) − 1 ∣ T u ∣ ∑ b ∈ T u f ( b ) ) , u 有父短语 \text{C-value}(u)=\begin{cases} \log_2 \vert u \vert \cdot f(u),&u没有父短语 \\ \log_2 \vert u \vert(f(u)-\frac{1}{\vert T_u \vert} \sum_{b \in T_u}f(b)),&u有父短语 \end{cases} C-value(u)={log2∣u∣⋅f(u),log2∣u∣(f(u)−∣Tu∣1∑b∈Tuf(b)),u没有父短语u有父短语
其中 T u T_u Tu 是 u u u 的所有父短语。
C-value首先考虑候选短语长度对其质量的影响。一般而言,在很多专业领域越长的短语越有可能是专有名词, log 2 ∣ u ∣ \log_2 \vert u \vert log2∣u∣ 就是用于奖励较长的短语的。其次,C-value 考虑了统计候选短语频率时父短语的重复统计对于短语频次估计所带来的偏差。如果父短语是高质量短语,其任何子短语就不应再重复计数。公式的第二个式子中减去了短语 u u u 的父短语出现的平均频次,以消除因父短语重复计数所带来的偏差。 - NC-value
NC-value 在C-value 的基础上,考虑候选短语 u u u 的上下文单词 b ∈ C u b \in C_u b∈Cu。上下文单词的选择对最终结果有显著影响,通常将其限定为名词、形容词和动词。
为了避免上下文单词中混入噪声,先通过 C-value 值对候选短语进行初步排序,再选取前 5% 候选短语的上下文中所出现的单词作为 b b b,上下文单词 b b b 的重要性值定义为:
weight ( b ) = t ( b ) n \text{weight}(b)=\frac{t(b)}{n} weight(b)=nt(b)
其中 n n n 是前 5% 候选短语的数量, t ( b ) t(b) t(b) 是前 5% 候选短语与单词 b b b 在文本中共同出现的次数。 weight ( b ) \text{weight}(b) weight(b) 越大,说明 b b b 越倾向于出现在高质量短语的上下文中,因此越有助于找到高质量短语。于是 NC-value 定义为:
NC-value ( u ) = 0.8 ⋅ C-value ( u ) + 0.2 ⋅ ∑ b ∈ C u f u ( b ) weight ( b ) \text{NC-value}(u)=0.8 \cdot \text{C-value}(u)+0.2 \cdot \sum_{b \in C_u}f_u(b) \text{weight}(b) NC-value(u)=0.8⋅C-value(u)+0.2⋅b∈Cu∑fu(b)weight(b)
其中 f u ( b ) f_u(b) fu(b) 指 b b b 作为 u u u 的上下文出现的次数。 - PMI
PMI(Pointwise Mutual Information,点互信息)值刻画了短语组成部分之间的一致性(Concordance)程度。假设某个短语 u u u 由 u l u_l ul 与 u r u_r ur 两部分组成, u l u_l ul 与 u r u_r ur 的 PMI 值越大, u u u 越可能是 u l u_l ul 与 u r u_r ur 的一个有意义的组合。PMI 定义为:
PMI ( u l , u r ) = log p ( u ) p ( u l ) p ( u r ) \text{PMI}(u_l,u_r)=\log \frac{p(u)}{p(u_l)p(u_r)} PMI(ul,ur)=logp(ul)p(ur)p(u)
如果 u l u_l ul 与 u r u_r ur 在语料中的出现是相互独立的,那么 p ( u ) = p ( u l ) p ( u r ) p(u)=p(u_l)p(u_r) p(u)=p(ul)p(ur)。如果 p ( u ) p(u) p(u) 远大于 p ( u l ) p ( u r ) p(u_l)p(u_r) p(ul)p(ur),也就是联合出现的概率远大于两者在独立情况下随机共现的概率,说明这两个部分的共现是一个有意义的搭配。同一个候选短语在不同的拆分方式下得到的 PMI 值往往不同,因此需要枚举所有可能的拆分方式,一般取最小的 PMI 值作为该短语的最终 PMI 值。 - 左邻字熵与右邻字熵
一个好的短语应该有着丰富的左右搭配;反之,如果左右邻字总是某一词汇,则预示着其自身不是好的短语。左邻字熵与右邻字熵用来刻画短语的自由运用程度,即用来衡量一个词的左邻字集合与右邻字集合的丰富程度。一般用左(右)邻字熵来衡量左(右)邻字集合的随机性,左(右)邻字熵越大,则某个短语的左(右)邻字越丰富多样,该短语越有可能是一个高质量短语。
给定某候选短语 u u u,其左(右)邻字熵为:
H ( u ) = − ∑ x ∈ χ p ( x ) log p ( x ) H(u)=-\sum_{x \in \chi}p(x) \log p(x) H(u)=−x∈χ∑p(x)logp(x)
其中, p ( x ) p(x) p(x) 为某个左(右)邻字 x x x 出现的概率, χ \chi χ 是 u u u 的所有左(右)邻字的集合。一般而言,我们希望候选短语的左邻字熵和右邻字熵都较大,最后可以选择两者中的较小值来衡量该短语的质量。
1.3 同义词挖掘
1.3.1 概述
同义词是指意义相同或相近的词。同义词的主要特征是它们在语义上相同或相似,至少包含以下几类:不同国家的语言互译,具有相同含义的词,人、动植物、药品等的别名或俗称,简称。
1.3.2 典型方法
- 基于同义词资源的方法
已有的同义词资源主要来自字典、网络字典以及百科词条。对于字典和网络字典,通过查询一个词在这些字典中收录的同义词,便可以挖掘其同义词,这种方法简单有效,但挖掘出的词条偏向书面用语。类似的,通过爬取一个词汇的百科词条页面,并解析其 Infobox 中的信息,便可获取同义词,这种方法挖掘出来的同义词质量较高且覆盖面很全。 - 基于模式匹配的方法
基于模式匹配的方法利用同义词在句子中被提及的文本模式从句子中挖掘同义词。首先需要定义同义词抽取的模式(Pattern),常见的中文模式有「又称」、「亦称」和「括号」等。例如,可以定义模式为「X 又称 Y」,X 和 Y 为同义词对。在定义好模式后输入语料,将语料中的文本与模式进行匹配,若匹配成功,则可识别出同义词。这种方法通常具有较高的准确率,但在召回率方面存在局限性。 - 自举法
自举法(Bootstrapping)是对基于模式匹配的方法的改进,从一些种子样本或者预定义模式出发,不断地从语料中学习同义词在文本中的新表达模式,从而提高召回率。自举法是一个循环迭代的过程,每轮循环发现新模式、召回新同义词对,循环往复直至达到终止条件。
在「模式发现」步骤中,对每一个新的同义词在语料中进行搜索,以寻找新的模式。例如,给定同义词对(西红柿,番茄),在语料中搜索不难匹配「西红柿(番茄)」,「西红柿,又名番茄」等等,于是可将发现的新模式加入现有的模式库中。
自举法可以自动挖掘新模式,召回了更多的同义词对,因此提高了召回率。但是自动学习获得的新模式的质量难以得到保证,导致挖掘出的同义词对的准确率有所下降。一种直接的解决方法是对模式质量进行评估。 - 其他方法
(1)借助序列标注模型自动挖掘同义词的文本描述模式
比如,定义 ENT 表示实体,S_B 表示模式开始的位置,S_I 表示模式继续的位置,O 表示其他成分。基于标注好的文本数据,通过序列标注模型学习出新的模式。之后,可以基于这些模式挖掘出更多的同义词对。
(2)基于图模型挖掘同义词
基于词与词之间的各种相似性可以构建一张词汇关联图。同义词在图上往往呈现出「抱团」的结构特性,也就是同义词之间关联紧密。因此,可以将同义词发现问题建模为图上的社团发现问题。它将词语组成的语义关联图作为输入并返回图上的社团,每个社团对应一组同义词。
上述思路的第一步是构造由词语组成的语义关联图。一种典型的方式是计算每对词语相应的词向量之间的余弦相似度,如果相似度大于特定阈值,在图中添加边。给定了图结构,下一个关键步骤就是计算图上的划分,可以通过最大化模块度(Modularity)进行划分:
Q = 1 2 m ∑ i , j [ A i j − k i k j 2 m ] δ ( c i , c j ) , δ ( c i , c j ) = { 1 , c i = c j 0 , c i ≠ c j Q=\frac{1}{2m} \sum_{i,j} [ A_{ij}-\frac{k_i k_j}{2m} ] \delta(c_i,c_j), \; \delta(c_i,c_j)=\begin{cases} 1,&c_i=c_j \\ 0,&c_i \ne c_j \end{cases} Q=2m1i,j∑[Aij−2mkikj]δ(ci,cj),δ(ci,cj)={1,0,ci=cjci=cj
其中 A i j A_{ij} Aij 是节点 i i i 和节点 j j j 之间边的权重, k i = ∑ j A i j k_i=\sum_j A_{ij} ki=∑jAij 表示 i i i 的度数, c i c_i ci 表示节点 i i i 所属的社团, m = 1 2 ∑ i j A i j m=\frac{1}{2} \sum_{ij} A_{ij} m=21∑ijAij 表示所有边的数目。 A i j − k i k j 2 m A_{ij}-\frac{k_i k_j}{2m} Aij−2mkikj 表达了节点 i i i 和节点 j j j 之间存在一条边在统计意义下的显著性。Louvain 就是基于模块度的社团发现算法而实现的同义词挖掘工具。
(3)基于平台(如搜索引擎)挖掘同义词
基于搜索日志的同义词挖掘方法:对于搜索引擎上两个不同的搜索短语 A 和 B,如果用户总是倾向于点击返回结果网页中的相同网页,则 A 和 B 很可能是同义词。
利用远程监督自动标注样本并依据这些样本训练的同义词挖掘模型:远程监督的方法借助已有的知识(例如知识图谱、字典、百科词条)自动标注同义词对。借助在线知识库生成大量的同义词标注数据,不难学习相应的同义词挖掘模型并展开预测。
1.4 缩略词抽取
1.4.1 缩略词的概念与形式
缩略词指的是一个词或者短语的缩略形式,通常由原词中的一些部分构成,同时保持原词的含义。缩略词的检测与抽取在方法上与同义词类似,但是在文本中出现的规则往往更简单。
在不同的语言中,缩略词的形式有所不同。表音文字在缩略词的形式上往往有相同之处。以拉丁语系为例,缩略词的形式包括 contractions(简称)、crasis(元音融合)。acronyms(首字母缩写)和 initialisms(首字母缩写)。acronyms 和 initialisms 的区别在于 acronyms 构成缩略词后可以拥有新的发音。
表意文字(如中文)的缩略词形式更复杂,常常不存在词边界,在自然语言处理中依赖分词算法来对其词边界进行划分。此外,中文缩略词的实体或短语常常由多个词组成,缩略词往往是从每个词中选取一个或多个字组成。
1.4.2 缩略词的检测与抽取
缩略词的检测及抽取方法以模式匹配为主。但是,自动抽取出的结果常常包含大量噪声,所以一些研究者利用统计信息结合各类机器学习方法来对抽取结果进行清洗。
- 基于文本模式的抽取
由于缩略词本质上是同义词的一种形式,因此缩略词抽取中使用的规则与同义词抽取很相似。常见的基于文本模式的抽取规则使用的模式有 X(Y),X.*(Y),Y is the abbreviation of X,X, also known as Y,X and Y are synoyms 等,其中 X 表示原词,Y 表示缩略词。 - 抽取结果的清洗和筛选
对缩略词搜索结果的清洗和筛选主要分为两种。一种是利用数据集有关缩写的统计指标进行识别,如频率、卡方检验、互信息以及最大熵等。另一种是使用机器学习模型构建二元分类模型,以此判断抽取出的缩略词正确与否。这类算法常常需要事先构建一定规模的标注数据集,同时依赖人为设计的特征,这些特征既包括统计指标,也包括字符匹配程度、词性特征等文本特征。 - 枚举并剪枝
枚举并剪枝是针对中文缩略词提出的一种有效方法。中文缩略词中常常仅包含原词中的字符,并且字符间保持原有顺序。枚举并剪枝方法的输入是语料以及某个给定实体。首先穷举目标实体名称所有子序列,进一步排除没有在文本中出现过或出现次数太少的候选缩略词。由于缩略词和原词往往会出现在相似的语境中,因此可以通过构建候选缩略词与高频词的共现图来对候选缩略词打分。可以利用随机游走方法来对候选缩略词排序,也就是按照从原词出发随机游走到某个缩略词的概率进行排序。
1.4.3 缩略词的预测
缩略词抽取方法虽然能够获取大量的缩略词对,但受限于语料大小,其对于新登录词往往效果较差。目前一些相关研究着眼于分析缩略词的规则,自动习得缩略词形式并进行预测。
- 基于规则的方法
缩略词生成规则大致可以分为两种。第一种是针对特定字符和词语形式的局部规则,大致包括如下规则:基于词性,基于位置,基于词之间的相互关联。第二种是依赖语言环境的全局规则。例如,「南大」一般指的是「南京大学」,因此在预测「南开大学」时需要避开结果「南大」。在尽可能地统计出这些规则以后,可以运用马尔可夫逻辑网等方法来整合这些特征进行缩略词预测。 - 条件随机场(CRF)
绝大多数的缩略词都由全称中包含的字符组成,并且字符间的顺序往往会保留,这一特性使得序列标注模型成为可能。全称中的每个字符分别被打上 1 或 0 的标签,分别表示当前字符在结果缩略词中是否出现。CRF 应用在序列标注问题中的优点是,每次标注时都会充分考虑已有的标注结果的影响。给定输入字符序列 C = c 1 c 2 ⋯ c T C=c_1c_2\cdots c_T C=c1c2⋯cT,输出标签序列 L = l 1 l 2 ⋯ l T L=l_1l_2\cdots l_T L=l1l2⋯lT 的计算过程为:
P ( L ∣ C ) = 1 Z ( C ) exp ( ∑ t = 1 T ∑ k λ k f k ( l t , l t − 1 , C , t ) ) P(L\vert C)=\frac{1}{Z(C)}\exp (\sum_{t=1}^T\sum_k\lambda_kf_k(l_t,l_{t-1},C,t)) P(L∣C)=Z(C)1exp(t=1∑Tk∑λkfk(lt,lt−1,C,t))
其中, f k f_k fk 表示定义在观测序列的两个相邻标签位置上的状态转移函数,并用于刻画相邻标签变量之间的相关关系以及输入序列 C C C 对它们的影响。 λ k \lambda_k λk 为第 k k k 个特征的权重参数, Z ( C ) Z(C) Z(C) 是规范化因子。
基于 CRF 构建缩略词预测模型常用到以下特征(对应于公式中的 f k f_k fk):字符级特征,词级别特征,位置特征,词的关联特征。 - 深度学习
在很多序列标注任务中,深度学习方法取得了超越传统依赖人工提取特征的机器学习模型。在神经网络方法中,词或字符被表示为一个低维稠密空间中的向量。基于这些向量表示,可使用典型的网络结构(如 CNN 和 RNN)抽取字词之间的组合特征。 深度神经网络模型常常需要使用预训练好的词向量来提升模型的性能。基于深度学习的缩略词预测的主要缺陷在于其不可解释性。
1.5 实体识别
1.5.1 概述
命名实体是一个词或短语,它可以在具有相似属性的一组事物中清楚地标识出某一个事物。命名实体识别(Named Entity Recognition,NER)则是指在文本中定位命名实体的边界并分类到预定义类型集合的过程。
NER 的输入是一个句子对应的单词序列
s
=
<
w
1
,
w
2
,
⋯
,
w
N
>
s=<w_1,w_2,\cdots,w_N>
s=<w1,w2,⋯,wN>,输出是一个三元组集合,其中每个元组形式为
<
I
s
,
I
e
,
t
>
<I_s,I_e,t>
<Is,Ie,t>,表示
s
s
s 中的一个命名实体,其中
I
s
∈
[
1
,
N
]
I_s \in [1,N]
Is∈[1,N] 和
I
e
∈
[
1
,
N
]
I_e \in [1,N]
Ie∈[1,N] 分别表示命名实体在
s
s
s 中的开始和结束位置,而
t
t
t 是实体类型。
粗粒度命名实体识别(Coarse-grained Entity Typing):实体类型包括人物、机构、地点、货币、时间和百分比表达式,并且为每个命名实体只分配一种类型;细粒度命名实体识别(Fine-grained Entity Typing)任务:通常预定义一个较大的实体类型集合(例如,包含演员、医生、运动员等多个类型标签),一个实体可以被分类到多个类型标签。
1.5.2 传统的 NER 方法
- 基于规则、词典和在线知识库的方法
这类方法是早期常见的 NER 方法。它们基于规则、词典和在线知识库,依赖语言学专家手工构造规则。通常每条规则都被赋予权值,当遇到规则冲突的时候,选择权值最高的规则来判别命名实体的类型。
比较著名的基于规则的 NER 系统包括 LTG 等,这些系统主要基于人工制定的语义和句法规则来识别实体。基于规则的实体识别系统往往还需要借助实体词典,对候选实体进行进一步的确认。
基于 WordNet 的实体分类方法:计算某个词或实体与 WordNet 中的概念或者实例的语义相似性,将目标词挂载到相应的概念或者实例的上位词下,从而完成实体分类。 - 监督学习方法
当应用监督学习方法时,NER 被建模为序列标注问题。NER 任务常使用 BIO 标注法,其中 B 表示实体的起始位置,I 表示实体的中间或结束位置,O 表示相应字符不是实体。基于序列标注的建模接收文本作为输入,产生相应的 BIO 标注为输出。常见的序列标注问题的建模模型包括 HMM(Hidden Markov Model)和 CRF。
HMM 是一种生成式模型,即直接建模输入文本 X X X 和输出标签序列 Y Y Y 的联合概率 P ( Y , X ) P(Y,X) P(Y,X)。HMM 将待预测的标签序列 Y Y Y 视作隐变量,将输入文本 X X X 视作由这些隐变量经由马尔可夫随机过程生成的结果。因此,对输入文本求解最优标签序列的过程可以建模为 Y ^ = arg max Y P ( Y , X ) \hat{Y}=\argmax_Y P(Y,X) Y^=argmaxYP(Y,X)。基于 HMM 的建模假定了标签序列之间具有较强的马尔可夫性,限制了其实际应用的效果。
CRF 是一种判别式模式,直接建模并求解使 P ( Y ∣ X ) P(Y\vert X) P(Y∣X) 最大的 Y Y Y。每个 y i y_i yi 不仅取决于 y i − 1 y_{i-1} yi−1,还取决于整个输入 X X X。
特征工程在基于监督学习的 NER 系统中至关重要。NER 系统常会用到以下几类典型特征:单次级别的特征(如词法、词性标签)、列表查找特征(如维基百科地名录、DBpedia 地名词典)以及文档和语料特征(如语法、共现)。 - 半监督学习方法
半监督学习(Semi-Supervised Learning,SSL)的一类典型方法是自举法,通常从少量标注数据、大量未标注数据和一小组初始假设或分类器开始,迭代生成更多的标注数据,直至到达某个阈值。
基于协同训练(Co-training)的 NER 方法:旨在学习两套不同的实体识别规则。在学习过程中,每一类规则为另一类规则的学习提供弱监督。该算法中的分类规则包括拼写规则和上下文规则。过程如下图所示。
1.5.3 基于深度学习的 NER 方法
相比于基于传统机器学习的 NER 模型,基于深度学习的 NER 方法无须人工制定规则或者烦琐的特征,易于从输入提取隐含的语义信息,灵活且便于迁移。在 NER 任务中,常用的深度神经网络有 RNN 和 CNN,其中 CNN 主要用于向量特征学习,RNN 则可以同时用于向量特征学习和序列标注。
一个典型的基于深度学习的 NER 框架如下图所示,其主要包含输入的分布式表示(Distributed Representation)、上下文编码器(Context Encoder)和标签解码器(Tag Decoder)三个模块,是一个典型的编码器-解码器(Encoder-Decoder)框架。
目前,BiLSTM-CRF 是基于深度学习的 NER 方法中最常见的架构,主要由分布式表示层、双向 LSTM 层,以及 CRF 层构成。
1.5.4 近期的一些方法
- 注意力机制
NER 模型将输入句子编码成一个固定长度的向量表示,当输入句子非常长时,输入的表示学习就很困难。但对实际任务而言,对结果有显著影响的往往只是输入句子中的部分数据,因此人们引入注意力机制(Attention Mechanism),使得神经网络专注于其输入的特定子集。它使用一个隐藏层和 Softmax 函数来计算输入句子中每个字(词)的重要程度,通常用概率进行表达。 - 迁移学习
迁移学习(Transfer Learning)旨在将从源域(通常样本丰富)学到的知识迁移到目标域(通常样本稀缺)上执行机器学习任务。源任务和目标任务通常通过共享深度神经网络参数和特征表示实现知识迁移,利用神经网络的通用性来提高目标任务的性能。
2 关系抽取
2.1 概述
2.1.1 关系抽取的问题和方法分类
关系抽取的问题定义是,给定句子 S,从 S 中抽取其包括的所有三元组 <主体,谓词,客体>。关系抽取的子问题基本上可以分为两大类:一类是关系实例抽取,也就是给定关系获取关系实例(主体与客体对);另一类是给定实体对获取相应的关系,按照关系是否符合预定义的规范化描述,又可细分为关系分类和开放关系抽取。
- 关系实例抽取
给定目标关系,从语料中抽取相应的实例。 - 关系分类(Relation Classification)
根据实体对的文本描述,将实体对的关系进行归类(通常需要预定义关系类型)。为了处理无法归到已知类别的情形,通常需要引入未知(Unknown)类。为了从大规模语料中获取关系实例,使用关系分类模型之前,往往需要枚举语料中提及的所有可能实体对。 - 开放关系抽取
有时也被称为开放信息抽取(Open Information Extraction,OpenIE),旨在从开放域(Open Domain)文本中抽取三元组实例。OpenIE 侧重于从文本中抽取出关系的文本描述,其所指代的关系可以是未定义的,也可以进一步映射到已定义的关系。
除了上述基本任务,实际任务还衍生出一些相关任务。比如,给定实体列表,通常需要为这些实体获取大量的三元组。为此,需要首先获取实体的适用谓词(属性或者关系),比如,对于一本书,配偶关系就不适用。然后,对于特定实体及其适用谓词(属性或者关系),从语料中抽取客体或相应取值。在实际的关系抽取中,往往需要组合上述问题的相应模型进行综合抽取。例如,有很多工作将实体识别与关系抽取联合建模进行求解。
针对上述关系抽取问题,研究人员提出了各种方法。
- 基于模式或规则的抽取方法
将模式或者规则与文本进行匹配,进而识别出文本所提及的三元组的主体、客体和谓词。通常,模式和规则需要由人工定义,也可以从语料中自动学习获得。 - 基于序列标注的监督学习方法
基于序列标注的关系抽取模型接收一段文本作为输入,然后输出文本中每个词是否是某个关系对应实体的标注结果。这类方法通常采用监督学习模型,例如深度神经网络模型。 - 基于文本分类的监督学习方法
这类方法主要针对的是关系分类问题。基于预先给定的关系集合,将每个关系视为一个类别。该问题的输入是包含实体对的句子,输出是实体对的关系标签。可以利用文本分类算法来进行关系抽取。
2.1.2 关系抽取常用数据集
英文关系抽取任务目前有多个常用的评估数据集,最常使用的包括 ACE 2005 数据集、SemEval-2010 Task 8 数据集。为了克服人工构造的评测数据集的规模瓶颈,可用远程监督思想自动构造关系抽取的数据集,例如 NYT 和 KBP 数据集。
2.1.3 关系抽取评估方法
- 自动评估
自动评估即基于「留出法」的评估(Held-out Evaluation),通过比较模型在测试集中所抽取出的实体对关系与真实的标注关系,得到抽取模型的性能指标。
关系抽取评估的常见度量指标包括精确率(Precision)、准确率(Accuracy)、召回率(Recall)和 F1 值等。其中,准确率(Accuracy)定义了模型预测结果与标注集的一致程度;精确率(Precision)度量了模型预测为正类的样本中的准确率;召回率(Recall)度量了模型能将多少比例的正类样本准确预测为正类。
一般而言,精确值和召回率相互冲突,单纯考察其中任一指标都是不全面的。F1 值就是一种融合了精确率和召回率的综合指标。此外,还可以通过绘制 Precision-Recall 曲线(PR 曲线,描述了不同参数下的精确率和召回率)来评估模型的性能。 - 人工评估
自动评估通常依赖于自动构建的测试集,其质量难以保证,往往会带来评估偏差,因此一般还需要进行人工评估。人工评估是指对模型预测得到的事实进行人工打分。人工评估经常依赖多人打分并进行融合,最常见的融合机制是众数投票(Majority Voting)。此外,许多评估过程也可以将人工评估定义为众包任务给众包平台。
2.2 基于模式的抽取
2.2.1 基于字符模式的抽取
最直接的方式是将自然语言视作字符序列,构造字符模式,实现抽取。表达特定关系的字符模式通常被表示为一组正则表达式,随后通过对输入的文本进行匹配,即可实现关系抽取。例如,模式「《$arg1》,是现代文学家 $arg2 的散文集」可用于抽取「作品-作者」这一关系。
这类基于字符模式的抽取方法对文本与模式的相似性有着较高的要求,因此往往被用于抽取有着固定的描述模式的内容,以及由固定模板生成的网页。在实际应用时,这类方法由于需要耗费大量的人工来定制合理的字符模式,难以适用于广泛而多样的文本。
2.2.2 基于语法模式的抽取
通过引入文本所包含的语法信息(包含词法和句法等)来描述抽取模式,可以显著增强模式的表达能力,进而提升抽取模式的准确率和召回率。例如,「NP 著有 (NP、)*」可用于抽取「作品-作者」这一关系。模式不仅可以指定匹配的文本实例,还可以进一步约定抽取规则。
相比于单纯的字符模式,语法模型表达能力更强,同时仍能保证模式匹配的正确性。语法模型仅仅依赖人类的语法知识,大部分人都可以轻易构造此类模式,因此语法模式的获取代价相对较低。
2.2.3 基于语义模式的抽取
语法模式通过引入词性标签等信息增强了描述能力,但仍然是一种相对粗糙的描述。优化语法模式的一种重要手段就是引入语义元素(如概念)。近年来,大量的知识图谱与知识库逐渐完善成熟,提供了丰富的概念以及概念的实例,这使得将概念引入模式的描述中且定义基于概念约束的模式成为可能。
概念的引入可以更精确地表达模式适配的范围。比如,战争的胜负关系模式「$国家 战胜 $国家」约定不仅要匹配文本「战胜」,其前后的短语也必须是国家,因此「小明战胜了自己」等错误匹配将被筛除,从而避免了错误的抽取。
2.2.4 自动化模式获取:自举法
为了降低人工模式定义的成本以及提升召回率,在实际应用中,往往通过自动化方法生成和选择高质量的模式。自动化模式获取通常通过自举法(Bootstrapping)算法框架来实现。考虑某个特定类型的关系实例的获取任务,自举法的基本思想为:为该关系类型标注少量初始种子实体对,找到实体对在文本语料库中所出现的句子集合,基于这些句子提取表达关系的模式(模式提取),然后使用新发现的模式去语料中抽取新的实体对(实例抽取)。上述模式提取+实例抽取的过程循环迭代,直至不再发现新的关系实例。
自举法的一个重要研究问题是质量控制。一方面,模式有可能发生语义漂移,导致抽取错误。另一方面,这类系统多着眼于提升抽取的召回率,因此倾向于使用来自互联网的海量语料作为抽取来源,而互联网语料含有噪声。此外,多数系统都需要额外的 NLP 工具,这可能导致工具引入的错误被传播到后续的知识抽取环节。
2.2.5 基于模式抽取的质量评估
- 实例与模式的匹配程度
在衡量匹配程度的过程中,常常使用模糊匹配,可以通过计算 Jaccard 相似度、编辑距离、加权匹配等分数来实现,由此可以得到实例( r r r)与模式( p p p)的匹配程度 Match ( r , p ) \text{Match}(r,p) Match(r,p)。
Jaccard ( R , P ) = ∣ R ∩ P ∣ ∣ R ∪ P ∣ \text{Jaccard}(R,P)=\frac{\vert R \cap P \vert}{\vert R \cup P \vert} Jaccard(R,P)=∣R∪P∣∣R∩P∣
其中 R R R 和 P P P 分别对应实例 r r r 与模式 p p p 所含有的字符的集合。
EditSim ( r , p ) = 1 − EditDist ( r , p ) max ( ∣ r ∣ , ∣ p ∣ ) \text{EditSim}(r,p)=1-\frac{\text{EditDist}(r,p)}{\max(\vert r \vert,\vert p \vert)} EditSim(r,p)=1−max(∣r∣,∣p∣)EditDist(r,p)
其中 EditDist ( r , p ) \text{EditDist}(r,p) EditDist(r,p) 表示 r r r 和 p p p 之间的编辑距离(即 r r r 通过增/删/改的方式变成 p p p 的最少步数)。
WeightedSim ( r , p ) = ∑ w i Sim ( r i , p i ) \text{WeightedSim}(r,p)=\sum w_i \text{Sim}(r_i,p_i) WeightedSim(r,p)=∑wiSim(ri,pi)
其中 Sim ( r i , p i ) \text{Sim}(r_i,p_i) Sim(ri,pi) 可以为任意的相似度度量函数。加权匹配通过将模式分割成多个部分,即令 p = { p 1 , p 2 , ⋯ } p=\{p_1,p_2,\cdots\} p={p1,p2,⋯},并将分割后的模式部分与对应的实例部分逐个匹配,最终利用预分配的权重 w i w_i wi 加权,从而得到匹配分数。 - 模式本身的置信度
通常可以用模式在抽取中的准确率作为置信度的度量:
Conf ( p i ) = # 正确匹配的实例 # 匹配的全部实例 \text{Conf}(p_i)=\frac{\#正确匹配的实例}{\#匹配的全部实例} Conf(pi)=#匹配的全部实例#正确匹配的实例
对于某一条关系实例,其置信度可以通过与之匹配的全部模式进行统计,按照如下方式进行评估:
Conf ( r ) = 1 − ∏ p i ∈ P ( 1 − Match ( r , p i ) ⋅ Conf ( p i ) ) \text{Conf}(r)=1-\prod_{p_i \in P}(1-\text{Match}(r,p_i) \cdot \text{Conf}(p_i)) Conf(r)=1−pi∈P∏(1−Match(r,pi)⋅Conf(pi))
该公式表明:模式质量越好,匹配程度越高,则抽取实例的置信度越高。在迭代的每一个步骤中,每次只保留置信度足够高的实例和模式进入后续的计算步骤中,从而缓解低质量模式所带来的的语义漂移问题。
2.3 基于学习的抽取
在给定实体位置的条件下,通常采用分类模型进行建模。因此,接下来主要介绍基于分类的关系抽取算法。
2.3.1 基于监督学习的关系抽取
基于监督学习的关系抽取基于标注样本来训练抽取模型。传统的基于监督学习的关系抽取根据其所使用的分类模型可分为:基于核函数的方法、基于逻辑回归的方法、基于句法解析增强的方法和基于条件随机场的方法。
传统基于监督学习的关系抽取流程:给定训练样本(包括实体对、包含实体对的句子以及相应的关系标签),先对句子进行预处理,如句法分析、词性分析,然后将预处理的结果直接输入分类模型(如核函数、逻辑回归模型等)来构建关系分类模型。
在基于监督学习的关系抽取中,核心问题是如何从标注样本中抽取有效的特征。下面给出关系抽取模型中的常用特征。
- 词汇特征
词汇特征主要指实体对之间或周围的特定词汇,这些背景词在语义上能够帮助判断实体对的关系类别。
(1)两个实体之间的词袋信息。例如,给定包含实体对 <柏拉图,亚里士多德> 和句子 「柏拉图和老师苏格拉底、学生亚里士多德并称希腊三贤」中的词袋信息为 {和,老师,苏格拉底,学生}。
(2)上述词袋的词性标注。上例的词性标注为 {CONJ,NP,NP,NP}。
(3)实体对在句子中出现的顺序信息。
(4)以左实体为中心开设的大小为 k 的窗口,其中所包含的词袋及其词性标注信息。在上例中,由于左实体「柏拉图」处于句子的最左端,因此该项特征为空。
(5)与(4)类似,但是左实体换成了右实体。例如,在上例中,右实体「亚里士多德」的窗口大小为 3 的词袋及其词性标注信息为 {学生:NP,亚里士多德:NP,并称:Verb}。 - 句法特征
在实际应用中,经句法解析所得的实体对之间的最短依赖路径被广泛使用。通过依存分析器,如 MINIPAR 或 Stanford Parser 等,可获得句子的句法解析结果。依存分析的结果包括词汇集合以及词汇之间的有向语法依赖关系。
- 语义特征
关系两边的类型通常被作为候选实体对的匹配约束。例如,给定关系「出生于」,其主体一定是「人」,而其客体(宾语)则一定是「地点」。
2.3.2 基于远程监督学习的关系抽取
远程监督学习属于弱监督学习的一种,即利用外部知识对目标任务实现间接监督。
- 远程监督学习的基本过程
远程监督学习的基本假设是:给定一个三元组 <s,r,o>,则任何包含实体对 (s,o) 的句子都在某种程度上描述了该实体对之间的关系。因此,可以将包含实体对的句子作为正例。通过比对大规模知识库中的三元组和海量文本,可以为目标关系自动标注大规模语料,进而采用基于监督学习的关系抽取来实现。远程监督学习为某个关系自动标注样本的过程如下。
步骤 1:从知识库(如 Freebase)中为目标关系识别尽可能多的实体对。
步骤 2:对于每个实体对,利用实体链接从大规模文本中抽取提及该实体对的句子集合,并为每个句子标注相应的关系。
步骤 3:包含实体对的句子集合和关系类型标签构成了关系抽取的数据集,即实体对的训练数据为相应的句子,标签为知识库中的关系类型。 - 远程监督学习中的噪音问题
基于远程监督学习构造自动训练集会引入很多噪声,即很多没有表达目标关系的句子会被错误地标注为该关系。解决这一问题的基本思路是,对标注数据进行甄别与筛选。在基于深度学习的模型框架下,常使用注意力机制对标注样本进行选择。此外,还可以采用额外的模型对样本进行质量评估,从而挑选出高质量的样本并用于构建关系抽取模型。例如,可以采用强化学习的思路来训练一个策略选择器去选择高质量的样本。
2.3.3 基于深度学习的关系抽取
基于深度学习的关系抽取的关键在于输入的有效表示与特征提取。本节将主要介绍基于 RNN 和 CNN 的输入文本特征提取方法。此外,深度神经网络模型通常具有较多参数,因而需要大量有标注数据,而远程监督学习恰好可以提供大规模标注数据,因此常与深度神经网络模型联合使用。但是远程监督学习标注的样本仍然存在噪声问题,需要有效的样本选择机制,为此,下面也会介绍基于注意力机制的样本选择方法。
- 基于循环神经网络的关系抽取
模型结构如下图所示,包括输入层(Input Layer)、双向循环层(Recurrent Layer)和池化层(Pooling Layer)。
(1)输入层。旨在将输入句子的每个词变换为词向量。
(2)双向循环层。给定句中单词的向量表示,使用一个双向的 RNN 对句子进行建模。
h t fw = tanh ( W fw e t + U fw h t − 1 fw + b fw ) \boldsymbol{h}^{\text{fw}}_t=\tanh(\boldsymbol{W}_{\text{fw}}\boldsymbol{e}_t+\boldsymbol{U}_{\text{fw}}\boldsymbol{h}_{t-1}^{\text{fw}}+\boldsymbol{b}_{\text{fw}}) htfw=tanh(Wfwet+Ufwht−1fw+bfw)
h t bw = tanh ( W bw e t + U bw h t + 1 bw + b bw ) \boldsymbol{h}^{\text{bw}}_t=\tanh(\boldsymbol{W}_{\text{bw}}\boldsymbol{e}_t+\boldsymbol{U}_{\text{bw}}\boldsymbol{h}_{t+1}^{\text{bw}}+\boldsymbol{b}_{\text{bw}}) htbw=tanh(Wbwet+Ubwht+1bw+bbw)
h t = h t fw + h t bw \boldsymbol{h}_t=\boldsymbol{h}_t^{\text{fw}}+\boldsymbol{h}_t^{\text{bw}} ht=htfw+htbw
其中 e t \boldsymbol{e}_t et 为当前 t t t 时刻的词向量, h t − 1 fw \boldsymbol{h}_{t-1}^{\text{fw}} ht−1fw 和 h t + 1 bw \boldsymbol{h}_{t+1}^{\text{bw}} ht+1bw 分别为上一时刻和下一时刻的网络输出。将前向 RNN 在当前位置的输出 h t fw \boldsymbol{h}^{\text{fw}}_t htfw 和反向 RNN 在当前位置的输出 h t bw \boldsymbol{h}^{\text{bw}}_t htbw 合并,得到双向 RNN 在 t t t 时刻的输出 h t \boldsymbol{h}_t ht。其余参数为模型待学习的参数。
通过这种方式,得到了 RNN 每个时刻的输出 { h t = 1 , 2 , ⋯ , T } \{\boldsymbol{h}_t=1,2,\cdots,T\} {ht=1,2,⋯,T},其中, T T T 为句子序列的长度。
(3)池化层。对于关系抽取任务,不是所有的特征 { h t } \{\boldsymbol{h}_t\} {ht} 都有正面作用。因此,我们希望采用池化操作从 { h t = 1 , 2 , ⋯ , T } \{\boldsymbol{h}_t=1,2,\cdots,T\} {ht=1,2,⋯,T} 中提取最有用的特征。定义矩阵 H = [ h 1 , ⋯ , h T ] ∈ R M × T \boldsymbol{H}=[\boldsymbol{h}_1,\cdots,\boldsymbol{h}_T] \in \mathbb{R}^{M \times T} H=[h1,⋯,hT]∈RM×T,则池化操作考虑在 H \boldsymbol{H} H 的每一行提取出最大的元素:
m i = max { h i } , ∀ i = 1 , ⋯ , M m_i=\max \{ \boldsymbol{h}_i \}, \forall i=1,\cdots,M mi=max{hi},∀i=1,⋯,M
最终得到的池化结果为 m = [ m 1 , ⋯ , m M ] ⊤ ∈ R M \boldsymbol{m}=[m_1,\cdots,m_M]^\top \in \mathbb{R}^M m=[m1,⋯,mM]⊤∈RM。对于每一个训练句子,通过双向 RNN 获取其特征向量 m \boldsymbol{m} m,采用一个全连接层网络后接 Softmax 函数,即可得到每个关系的概率:
P ( r i ∣ s ; W 0 , b 0 ) = exp ( ( W 0 m + b 0 ) i ) ∑ k = 1 n r exp ( ( W 0 m + b 0 ) k ) P(r_i \vert s;\boldsymbol{W}_0,\boldsymbol{b}_0)=\frac{\exp((\boldsymbol{W}_0\boldsymbol{m}+\boldsymbol{b}_0)_i)}{\sum_{k=1}^{n_r} \exp((\boldsymbol{W}_0\boldsymbol{m}+\boldsymbol{b}_0)_k)} P(ri∣s;W0,b0)=∑k=1nrexp((W0m+b0)k)exp((W0m+b0)i)
其中, n r n_r nr 为训练集中的关系数量,其余为分类器待学习的参数。基于上述定义的分类器,目标函数为:
L ( θ ) = ∑ n ∈ N − log P ( r ( n ) ∣ s ( n ) , θ ) L(\theta)=\sum_{n \in N} -\log P(r^{(n)} \vert s^{(n)},\theta) L(θ)=n∈N∑−logP(r(n)∣s(n),θ)
其中, s ( n ) s^{(n)} s(n) 为第 n n n 个样本的句子, r ( n ) r^{(n)} r(n) 为对应的关系标签, θ \theta θ为该模型中所有参数的集合。 - 基于卷积神经网络的关系抽取
基于 CNN 的关系抽取的主要思想是:使用 CNN 对输入语句进行编码,基于编码结果并使用全连接层结合激活函数对实体对的关系进行分类。模型结构如下图所示。
除了词向量外,位置向量对于关系抽取也十分重要。位置向量旨在记录句中不同词与实体对之间的位置关系,其基本思想是:离实体越近的单词通常包含越多的对于关系分类有用的信息。单词与头尾实体的相对距离分别被编码成维度为 d p d_p dp 的向量。位置向量被随机初始化,在模型训练时进一步学习。将词向量和位置向量进行拼接,得到每个词的向量表示 w i ∈ R d \boldsymbol{w}_i \in \mathbb{R}^d wi∈Rd,其中 d = d w + 2 d p d=d_w+2d_p d=dw+2dp。进一步得到句子 X X X 的表示为 X = { w 1 , w 2 , ⋯ , w m } \boldsymbol{X}=\{\boldsymbol{w}_1,\boldsymbol{w}_2,\cdots,\boldsymbol{w}_m\} X={w1,w2,⋯,wm}。
CNN 的输入是矩阵 X \boldsymbol{X} X,采用标准的一维卷积网络结构。假定卷积核的维度为 l × d l \times d l×d,第 i i i 个窗口可以表示为: q i = w i : i + l − 1 ∈ R l × d , 1 ≤ i ≤ m − l + 1 \boldsymbol{q}_i=\boldsymbol{w}_{i:i+l-1} \in \mathbb{R}^{l \times d}, \; 1 \le i \le m-l+1 qi=wi:i+l−1∈Rl×d,1≤i≤m−l+1,则第 k k k 个卷积核 W k \boldsymbol{W}_k Wk 对第 i i i 个窗口作用的结果为:
p k , i = f ( W k q i + b ) ∈ R p_{k,i}=f(\boldsymbol{W}_k\boldsymbol{q}_i+b) \in \mathbb{R} pk,i=f(Wkqi+b)∈R
其中, f f f 为激活函数。对所有的窗口进行计算,第 k k k 个卷积核输出的结果为 p k = [ p k , 1 , ⋯ , p k , m − l + 1 ] ⊤ ∈ R m − l + 1 \boldsymbol{p}_k=[p_{k,1},\cdots,p_{k,m-l+1}]^\top \in \mathbb{R}^{m-l+1} pk=[pk,1,⋯,pk,m−l+1]⊤∈Rm−l+1。对所有卷积核的输出结果分别做最大池化操作 p k , max = max ( p k ) p_{k,\max}=\max(\boldsymbol{p}_k) pk,max=max(pk),并将输出结果拼接起来,经过非线性变换,得到句子的表示为 x ∈ R d c \boldsymbol{x} \in \mathbb{R}^{d_c} x∈Rdc。给定实体对的句子,预测实体对的关系的概率可以建模为:
O = M x + d , P ( r ∣ x , θ ) = exp ( o r ) ∑ k = 1 n r exp ( o k ) \boldsymbol{O}=\boldsymbol{M}\boldsymbol{x}+\boldsymbol{d}, \; P(r \vert \boldsymbol{x},\theta)=\frac{\exp(o_r)}{\sum_{k=1}^{n_r} \exp(o_k)} O=Mx+d,P(r∣x,θ)=∑k=1nrexp(ok)exp(or)
其中 o k o_k ok 为 O \boldsymbol{O} O 中的第 k k k 个元素, n r n_r nr 为关系类别的数量,其余为待学习的参数。使用交叉熵作为损失函数,则训练模型的目标函数为:
loss = − ∑ n = 1 N log P ( r ( n ) ∣ x ( n ) , θ ) \text{loss}=-\sum_{n=1}^N \log P(r^{(n)} \vert \boldsymbol{x}^{(n)},\theta) loss=−n=1∑NlogP(r(n)∣x(n),θ)
其中, N N N 为训练集的样本数, x ( n ) \boldsymbol{x}^{(n)} x(n) 为第 n n n 个样本的句子表示, r ( n ) r^{(n)} r(n) 为第 n n n 个样本的关系标签。 - 基于注意力机制的关系抽取
基于远程监督学习构建的训练集通常有较大的噪声,因此需要对噪声予以特别处理。基于句子级别的注意力机制(Attention)的关系抽取方法的主要思路是:为实体对的每个句子赋予一个权重,权重越大表明该句子表达目标关系的程度越高,反之则越可能是噪声。基于句子级别的注意力机制的句袋建模思路如下图所示。
首先使用 CNN 为每个句子编码,得到句子的表示 { x 1 , x 2 , ⋯ , x n } \{\boldsymbol{x}_1,\boldsymbol{x}_2,\cdots,\boldsymbol{x}_n\} {x1,x2,⋯,xn}。然后计算句子 x i \boldsymbol{x}_i xi 对于关系抽取的重要性:
e i = x i A r , α i = exp ( e i ) ∑ k exp ( e k ) , s = ∑ i α i x i e_i=\boldsymbol{x}_i\boldsymbol{A}\boldsymbol{r}, \; \alpha_i=\frac{\exp(e_i)}{\sum_k \exp(e_k)}, \; \boldsymbol{s}=\sum_i \alpha_i \boldsymbol{x}_i ei=xiAr,αi=∑kexp(ek)exp(ei),s=i∑αixi
其中, r \boldsymbol{r} r 是刻画关系抽取任务的特征向量, A \boldsymbol{A} A 为权重矩阵,都由模型学习得到。句子集合的最终表示为 s \boldsymbol{s} s,后续关系分类函数和模型损失函数与「基于卷积神经网络的关系抽取」部分完全相同。
2.4 开放关系抽取
在现实世界中,关系的种类复杂多样,难以穷举,因此,研究人员提出了开放关系抽取(也称开放信息抽取,OpenIE)。其输入为自然语言语料,输出则是由文本表示的关系主体、关系短语与关系客体的三元组,形如 <关系主体(arg1),关系短语(re1),关系客体(arg2)>。具有代表性的 OpenIE 系统有 TextRunner、ReVerb 以及 Ollie。OpenIE 需要满足三个特点:自动化(Automation),语料异质性(Corpus Heterogeneity),效率(Efficiency)。
2.4.1 TextRunner
TextRunner 系统采取了一种自监督的学习框架,包含三个核心模块:自动化语料标注与分类器学习、文本抽取,以及三元组评分计算。
- 自动化语料标注与分类器学习
步骤 1:依存路径分析。使用依存路径分析从启动数据中得到所有可能作为实体的名词短语。
步骤 2:识别名词短语。对每个名词短语,通过依存句法树中的路径找到潜在的关系短语。
步骤 3:识别潜在三元组。
步骤 4:基于启发式规则的正负例标注。例如,单纯的代词不能够作为实体,实体间的依存路径不能过长,实体间的依存路径不能跨越子句等。 - 文本抽取
首先基于较轻量化的语法分析手段,识别出文本中关系主体和关系客体所对应的名词短语,将文本中出现在两个名词短语之间的其他短语作为可能的候选关系。随后,使用在上一个模块中训练得到的分类器对这些三元组进行初步筛选,从而得到大量候选三元组。
- 三元组评分
该模块首先会对候选三元组中语义相同的三元组进行合并。然后,统计各个三元组在整个语料中以不同形式出现的频次,频次越大的三元组越有可能是正确的抽取。根据此思路计算各三元组的置信度评分,并最终选取得分较高的三元组作为最终抽取的结果。
2.4.2 ReVerb
TextRunner 系统虽然有效地实现了开放关系抽取,但存在一些问题:抽取出的三元组的关系短语损失了细节信息;抽取出的三元组的关系有错误且不连贯。为了解决这两类问题,ReVerb 系统通过引入基于词性的句法约束,对低质量关系短语进行过滤。
上图给出了 ReVerb 系统中对关系短语的句法约束。在 ReVerb 系统中,首先通过句法分析等手段抽取出可能的关系短语,然后基于上图的规则对关系短语进行限制,筛选满足规则的最长短语作为三元组中的关系短语。此外,为了避免抽取出太过具体的关系,ReVerb 系统也要求关系在全部候选关系中的实例数量大于给定阈值,即
∣
args(Relation)
∣
>
k
\vert \text{args(Relation)} \vert > k
∣args(Relation)∣>k,通常
k
k
k 取值为 20。
2.4.3 Ollie
虽然 ReVerb 系统提升了关系短语的质量,但也带来了较多的局限性:难以处理不包含动词的关系短语;无法识别需要满足前提条件的关系。为此,研究人员提出了 Ollie 系统方法,其本质是基于依存解析路径(Dependency Parse Paths)的自举法学习。
Ollie 系统利用依存树的信息来定位三元组的前提条件,从而识别需要前提条件的三元组。同时,基于自举法,它使用 ReVerb 系统得到的高质量种子三元组在语料中进行迭代,找出不包含动词的关系模式,实现对不含动词的关系短语的抽取。
为实现上述思路,Ollie 系统引入了一种新的包含依存路径的模式,如
{
arg1
}
↑
nsubj
↑
{
rel:postag=VBD
}
↓
dobj
↓
{
arg2
}
\{ \text{arg1} \} \uparrow \text{nsubj} \uparrow \{ \text{rel:postag=VBD} \} \downarrow \text{dobj} \downarrow \{ \text{arg2} \}
{arg1}↑nsubj↑{rel:postag=VBD}↓dobj↓{arg2},它表示关系主体 arg1 为关系短语的名词主语(nsubj),关系短语 re1 本身为被动形式的动词(postag=VBD),而关系客体 arg2 为关系短语的直接宾语(dobj)。这类模式拓展了关系短语的句法范围,增加了对不包含动词的关系短语(如 be co-founder of)的支持。