关系抽取有基于字符模式的抽取、基于语法模式的抽取、基于语义模式的抽取、自动化模式抽取和基于学习的抽取。基于学习的抽取是目前的主流方法,因此主要介绍基于学习的抽取。
基于学习的抽取分为基于监督学习、基于弱监督学习和基于远程学习的抽取。从模型的角度来看,无论是采用哪种方法,都可以采用序列标注方式或者序列分类模型进行,如果已经给定了实体位置,使用分类模型更方便。
1. 基于监督学习的关系抽取
监督学习是利用标注数据进行学习的一种方法,在监督学习的关系抽取中,核心问题是如何从标注样本中抽取有用的特征,常用的特征有:
1.1 词汇特征:
词汇特征指实体对之间或周五的特定词汇,这些背景词在语义上能够帮助判断实体对的关系类别。如
2. 基于远程监督学习的关系抽取
基本假设是给定一个三元组
3.基于深度学习的关系抽取
3.1基于循环神经网络的关系抽取
典型的模型结构:输入层(Input layer)双向循环层(Recurrent Layer)池化层(Pooling Layer)。关于双向循环层,可以见RNN的网络结构和参数更新方式和长短时记忆网络
3.2 基于卷积神经网络的关系抽取
基本思想:使用CNN对输入语句进行编码,基于编码的结果并使用全连接层结合激活函数对实体对的关系进行分类。典型框架:句子->Embedding->卷积层->卷积疏忽->最大池化->非线性层->句子表示。
Embedding:embedding中主要是处理位置关系,位置关系有助于帮助网络跟踪输入句子中每个单词与实体对的距离。其基本思想是:离实体月经的单词通常包含越多的关于关系分类的有用信息。
给定句子”Bill is the founder of Microsoft”,”founder”和”bill”的相对距离是3,与尾部实体”Microsoft”的距离是-2,每个相对位置编为d p d_p d p 的向量,将词向量与位置向量进行拼接,得到每个词的向量表示w i ∈ R d w_i \in R^d w i ∈R d,其中d = d w + 2 d p d=d_w+2d_p d =d w +2 d p ,进一步得到句子的整体表示。
CNN使用一个固定的卷积核对输入的内容进行处理,在序列处理中,采用标准的一维卷积网络结构,对输入的Embedding进行窗口截取,假设卷积核为l × d l\times d l ×d,其中l l l为窗口大小,则第i i i个窗口可以表示为:
q i = w i , i + 1 ∈ R l × d q_i=w_{i,i+1} \in R^{l \times d}q i =w i ,i +1 ∈R l ×d
在CNN中,第d c d_c d c 个卷积核组成的集合可以表示为一个张量W ∈ R d c × l W \in R^{d_c \times l}W ∈R d c ×l,则第k k k个卷积核W k W_k W k 对第i i i个窗口的作用结果为:
p k , i = f ( W k q i + b ) ∈ R p_{k,i}=f(W_kq_i+b) \in R p k ,i =f (W k q i +b )∈R
其最大输出p k p_k p k 使用最大池化max pooling获取p k p_k p k 的最大值,即p k , m a x = m a x ( p k ) p_{k,max}=max(p_k)p k ,m a x =m a x (p k ),然后将p k , m a x p_{k,max}p k ,m a x 连接起来,经过非线性变换,得到句子的表示x ∈ D d c x \in D^{d_c}x ∈D d c ,然后对句子表示预测概率:
O = M x + d , P ( r ∣ x , θ ) = e x p ( o r ) ∑ k = 1 n r e x p ( o k ) O=Mx+d,P(r|x,\theta)=\frac{exp(o_r)}{\sum_{k=1}^{n_r}exp(o_k)}O =M x +d ,P (r ∣x ,θ)=∑k =1 n r e x p (o k )e x p (o r )
其中M M M为待学习的权重矩阵,d d d为待学习的偏置项,o k o_k o k 表示O O O中第k k k个元素,n r n_r n r 为关系类别的数量。
损失函数使用交叉熵损失,公式为:
l o s s = − ∑ n = 1 N l o g P ( r ( n ) ∣ x ( n ) , θ ) loss = -\sum_{n=1}^NlogP(r^(n)|x(n),\theta)l o s s =−∑n =1 N l o g P (r (n )∣x (n ),θ)
3.3 基于注意力机制的关系抽取
其思想是:为实体对的每一个句子赋值一个权重,权重越大表示该句子表达目标关系的程度越高,反之可能是噪声。
其思路是:使用CNN为句子编码,得到句子表示x = x 1 , x 2 , . . . x n x={x_1,x_2,…x_n}x =x 1 ,x 2 ,…x n ,然后计算a i a_i a i :
e i = x i A r e_i = x_iAr e i =x i A r
a i = e x p ( e i ) ∑ k e x p ( e k ) a_i=\frac{exp(e_i)}{\sum_kexp(e_k)}a i =∑k e x p (e k )e x p (e i )
s = ∑ i a i x i s=\sum_ia_ix_i s =∑i a i x i
其中r r r是刻画关系抽取任务的特征向量,该向量由模型学习得到;
A A A为待学习的权重矩阵;s s s是学习到的注意力分数。
得到s s s之后,使用前面的句子表示和损失计算,将x x x换为s s s:
O = M x + d , P ( r ∣ x , θ ) = e x p ( o r ) ∑ k = 1 n r e x p ( o k ) O=Mx+d,P(r|x,\theta)=\frac{exp(o_r)}{\sum_{k=1}^{n_r}exp(o_k)}O =M x +d ,P (r ∣x ,θ)=∑k =1 n r e x p (o k )e x p (o r )
l o s s = − ∑ n = 1 N l o g P ( r ( n ) ∣ x ( n ) , θ ) loss = -\sum_{n=1}^NlogP(r^(n)|x(n),\theta)l o s s =−∑n =1 N l o g P (r (n )∣x (n ),θ)
Original: https://blog.csdn.net/weixin_45885232/article/details/124644925
Author: 加油上学人
Title: 知识图谱-关系抽取
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/556695/
转载文章受原作者版权保护。转载请注明原作者出处!