随着大数据时代的到来, 数据的规模不断增大, 信息过载的问题日益严重. 因此快速准确地抽取关键信息有着重大意义. 关系抽取在信息抽取中有着举足轻重的作用, 目的是提取自然语言句子中实体对之间的语义关系. 实体关系抽取作为自然语言处理的一项基本任务, 是知识图谱、自动问答、机器翻译, 自动文摘等领域的关键模块. 随着深度学习的不断发展, 引起了人们对NRE的兴趣, 现在大多使用神经网络来自动学习语义特征.
1 相关工作作为先驱, Liu等提了一个基于CNN的关系抽取模型[1]. 在此基础上, Zeng等提出一个带有最大池化层的CNN模型[2], 并且引入了位置嵌入来表示位置信息, 然后他们设计了PCNN模型[3], 但是PCNN模型在句子选择方面存在问题. 为了解决这一问题, Lin等[4]将注意力机制应用于其中. 尽管PCNN模型有着不错的效果, 但是它不能像RNN类型的模型一样挖掘上下文的信息. 因此, 带有注意力机制的LSTM网络也被应用于关系抽取任务中[5,6].
尽管NRE不需要进行特征工程, 但是它们忽略了不同语言输入粒度对模型的影响, 特别是对于中文关系抽取. 根据输入的粒度的不同, 现有的中文关系抽取方法可以分为基于字符的关系抽取和基于词的关系抽取的两种.
对于基于字符的关系抽取, 它将每个输入语句看作一个字符的序列. 这种方法的缺点是不能充分利用词语级别的信息, 想比较于基于词语的方法捕获到的特征少. 对于基于词语级别的关系抽取, 首先要进行分词, 导出一个词序列, 然后将其输入到神经网络模型中. 但是, 基于词的模型的性能会受到分割质量的显著影响[7].
比如说, 一句中文语句“乔布斯设计部分苹果”有两个实体, “乔布斯”和“苹果”, 它们之间的关系为“设计”. 在这种情况下, 对于这句话的分词为: “乔布斯/设计/部分/苹果”. 但是, 随着对语句切分的变化, 句子的含义可能变得完全不同. 如果该句话分割为: “乔布斯设计部/分/苹果”, 那么这句话的实体就变为“乔布斯设计部”和“苹果”, 它们之间的关系转变为“分发”. 因此, 无论是基于字符的方法还是基于词语的方法都不能充分利用数据中的语义信息. 因此, 要从纯文本中发现高层实体关系, 需要不同粒度的综合信息的帮助. 此外, 中文的词语存在大量的多义词, 这限制了模型挖掘深层次语义信息的能力. 例如, 词语“苹果”含有两种不同的含义, 即一种水果和电子产品. 但是, 如果没有语义信息的加入, 就很难从纯文本中学习到这种信息.
本文提出了一种能够综合利用句子内部的多粒度信息以及外部知识的网络框架(PL-Lattice)来完成中文关系抽取任务. (1) 该模型采用基于Lattice-LSTM模型的结构, 将基于词语级别的特征动态的集成到基于字符级别的特征中. 因此, 可以利用句子中的多粒度信息而不受到分词错误的影响. (2) 为了解决中文中多义词的现象, 改模型加入了HowNet[8]这一外部知识库对词语的多种语义进行标注, 在训练阶段结合语义信息, 提高模型的挖掘能力.
2 问题描述与建模给定一个中文句子和其中的两个标记实体, 中文关系抽取的任务就是提取两个标记实体之间的语义关系. 本文提出用于中文关系抽取的PL-Lattice模型, 该模型的整体结构如图1所示.
(1) 输入层: 给定一个以两个目标实体为输入的中文语句, 该部分表示语句中的每个单词和字符. 该模型可以同时提取和利用字级和词级的信息.
(2) PL-Lattice编码器: 这一部分使用Lattice-LSTM网络结构为基础, 改进了字级别和词级别的输入的循环结构, 并且将外部语义知识融入到网络里面来实现语义的消歧.
(3) 注意力机制: 使用词级注意力机制和句级注意力机制.
(4) 关系分类层: 通过Softmax函数输出关系类型.
2.1 输入层本文模型的输入是一个带有两个标记实体的中文句子. 为了利用多粒度信息, 本文在句子中同时使用字级和词级信息.
(1) 字符集向量表示
本文将每个输入的中文语句看作一个字符序列. 给定一个由M个字符组成的句子s, 表示为
此外, 在关系抽取任务中, 句子中的字到命名实体的距离能够影响关系抽取的结果. 所以, 本文采用位置特征来指定句子中的字符, 即当前字符到第一个命名实体和第二个命名实体的相对距离[2]. 具体来说, 第i个字符
$ p_i^1 = \left\{ {\begin{array}{*{20}{l}} {i - {b^1}} &{i < {b^1},} \\ {\rm{0}}, &{{b^1} \leqslant i \leqslant{e^i}} \\ {i - {e^1}},&{i > {e^1}} \end{array}} \right. $ | (1) |
其中,
(2) 词级向量表示
虽然模型有字符特征作为输入, 但是为了充分捕捉句子中的多粒度特征, 本文还需要提取句子中的所有潜在的词级的特征, 潜在词为是由字符组成的句子中的任意子序列. 这些子序列与构建在大型原始文本上的字典D相匹配得到真正的词级特征.
用
但是, Word2Vec模型只是将词语映射为一个嵌入向量, 忽略了一词多义这一事实. 本文使用SAT模型来解决这一问题, SAT模型是基于Skip-gram模型改进出来的, 它可以同时学习词语以及意义之间的关系, 并将其转换为词向量.
给定一个词语
本文的编码器是在Lattice-LSTM的基础上, 进行改进, 加入词的意义这一特征, 改进了基于字符级别和基于词级别的循环单元的网络结构; 通过改进结构, 减轻了Lattice-LSTM编码器中对词的特征的提取导致的字符级别的特征被削弱的现象; 并且使用了双向循环单元的结构, 使编码器能够同时捕捉学习正向和反向的信息, 能够显著提高模型的准确率以及合理性.
(1) Lattice-LSTM 编码器
LSTM神经网络是循环神经网络的变种, 主要思想就是引入一种自适应门控机制来控制LSTM单元保留以前状态的同时学习当前数据输入的特征. LSTM神经网络有3个门: 输入门
$ \left\{ {\begin{array}{*{20}{l}} {i_j^c = \sigma \left( {{W_i}x_j^c + {U_i}h_{j - 1}^c + {b_i}} \right)} \\ {o_j^c = \sigma \left( {{W_o}x_j^c + {U_o}h_{j - 1}^c + {b_o}} \right)} \\ {f_j^c = \sigma \left( {{W_f}x_j^c + {U_f}h_{j - 1}^c + {b_f}} \right)} \\ {\tilde c_j^c = \tanh \left( {{W_c}x_j^c + {U_c}h_{j - 1}^c + {b_c}} \right)} \end{array}} \right. $ | (2) |
$ c_j^c = f_j^c \odot c_{j - 1}^c + i_j^c \odot \tilde c_j^c $ | (3) |
$ h_j^c = o_j^c \odot \tanh \left( {c_j^c} \right) $ | (4) |
其中,
在输入语句中给定一个词语
$ x_{b,e}^w = {e^w}\left( {{w_{b,e}}} \right) $ | (5) |
其中, b和e表示词语在句子中的开始与结束的索引,
$ \left\{ {\begin{array}{*{20}{l}} {i_{b,e}^w = \sigma \left( {{W_i}x_{b,e}^w + {U_i}h_b^c + {b_i}} \right)} \\ {f_{b,e}^w = \sigma \left( {{W_f}x_{b,e}^w + {U_f}h_b^c + {b_f}} \right)} \\ {\tilde c_{b,e}^w = \tanh \left( {{W_c}x_{b,e}^w + {U_c}h_b^c + {b_c}} \right)} \end{array}} \right. $ | (6) |
$ c_{b,e}^w = f_{b,e}^w \odot c_b^c + i_{b,e}^w \odot \tilde c_{b,e}^w $ | (7) |
其中,
第
$ i_{b,e}^w = \sigma \left( {Wx_e^c + Uc_{b,e}^w + {b^l}} \right) $ | (8) |
第e个字符的细胞状态计算方法如下:
$ c_e^c = \sum\limits_{b \in \left\{ {b'|{w_{b',e}} \in D} \right\}} {\alpha _{b,e}^c \odot c_{b,e}^w + \alpha _e^c \odot \tilde c_e^c} $ | (9) |
其中,
$ \alpha _{b,e}^c = \dfrac{{\exp \left( {i_{b,e}^c} \right)}}{{\exp \left( {i_e^c} \right) + \displaystyle\sum\nolimits_{b' \in \left\{ {b''|{w_{b'',e}} \in D} \right\}} {\exp \left( {i_{b',e}^c} \right)} }} $ | (10) |
$ \alpha _e^c = \dfrac{{\exp \left( {i_e^c} \right)}}{{\exp \left( {i_e^c} \right) + \displaystyle\sum\nolimits_{b' \in \left\{ {b''|{w_{b'',e}} \in D} \right\}} {\exp \left( {i_{b',e}^c} \right)} }} $ | (11) |
最终, 使用式(5)来计算序列中每个字符的最终隐藏状态
(2) PL-Lattice 编码器
虽然Lattice-LSTM编码器能够利用字符和词的信息, 但是它不能充分考虑中文的一词多义的特征. 例如, 如图1所示,
为了解决这两个缺点, 本文改进了模型. 首先在模型中加入了感知层, 将外部语义融入其中, 如1.1.2节中所示, 本文使用
并且本文采用了双向循环网络的结构, 使编码器能同时提取句子上下文的关系与信息对于字符级的循环神经网络单元, 本文改进的前向传播的计算方法如下:
$ \left\{ {\begin{array}{*{20}{l}} {i_j^c = \sigma \left( {{W_i}x_j^c + {U_i}h_{j - 1}^c + {V_i}C_{j - 1}^c + {b_i}} \right)} \\ {f_j^c = \sigma \left( {{W_f}x_j^c + {U_f}h_{j - 1}^c + {V_i}C_{j - 1}^c + {b_f}} \right)} \\ {\tilde c_j^c = \tanh \left( {{W_c}x_j^c + {U_c}h_{j - 1}^c + {b_c}} \right)} \end{array}} \right. $ | (12) |
$ c_j^c = f_j^c \odot c_{j - 1}^c + i_j^c \odot \tilde c_j^c $ | (13) |
$ o_j^c = \sigma \left( {{W_o}x_j^c + {U_o}h_{j - 1}^c + {V_o}c_j^c + {b_o}} \right) $ | (14) |
$ h_j^c = o_j^c \odot \tanh \left( {c_j^c} \right) $ | (15) |
其中,
这种结构将上一个单元的细胞状态
对于词级的循环神经网络单元, 本文的改进的前向传播的计算方法如下:
$ \left\{ {\begin{array}{*{20}{c}} {i_{b,e,k}^{sen} = \sigma \left( {{W_i}x_{b,e,k}^{sen} + {U_i}h_b^c + {b_i}} \right)} \\ {\tilde c_{b,e,k}^{sen} = \tanh \left( {{W_c}x_{b,e,k}^{sen} + {U_c}h_b^c + {b_c}} \right)} \end{array}} \right. $ | (16) |
$ c_{b,e,k}^{sen} = i_{b,e,k}^{sen} \odot c_b^c + \left( {1 - i_{b,e,k}^{sen}} \right) \odot \tilde c_{b,e,k}^{sen} $ | (17) |
其中,
然后, 将所有的意义的细胞状态结合起来, 得到
$ c_{b,e}^{sen} = \sum\limits_k {\alpha _{b,e,k}^{sen} \odot c_{b,e,k}^{sen}} $ | (18) |
$ \alpha _{b,e,k}^{sen} = \frac{{\exp \left( {i_{b,e,k}^{sen}} \right)}}{{\displaystyle\sum\limits_{k'}^K {\exp \left( {i_{b,e,k'}^{sen}} \right)} }} $ | (19) |
所有感知层的细胞状态都被合并为
$ c_e^c = \sum\limits_{b \in \left\{ {b'|w_{b',e}^d \in D} \right\}} {\alpha _{b,e}^{sen} \odot c_{b,e}^{sen} + \alpha _e^c \odot \tilde c_e^c} $ | (20) |
隐含状态h的计算方法与式(5)相同.
最终将每一个单元前向传播与后向传播得到的隐含状态结合起来, 计算方法如下:
$ {h_i} = \left[ {{{\vec h}_i} \oplus {{\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\leftarrow}$}}{h} }_i}} \right] $ | (21) |
其中,
(3) 注意力机制与关系分类
近年来, 注意力机制在深度学习的各个领域取得了成功. 从本质上讲, 深度学习中的注意力机制和人类的选择性注意力类似, 都是从众多的信息中选择出对当前任务目标更重要的信息. 本文采用了双重注意力机制.
由双向PL-Lattice网络训练产生的输出向量组成矩阵
基于词级的注意力机制的句子表示的计算方法如下所示:
$ H = \tanh \left( h \right) $ | (22) |
$ \alpha = Softmax \left( {{\omega ^{\rm{T}}}H} \right) $ | (23) |
$ {h^*} = h{\alpha ^{\rm{T}}} $ | (24) |
其中,
为了计算每种关系相对于句子的权重, 使用句子级的注意力机制, 将句子
$ o = relu(W{h^*} + b) $ | (25) |
$ P\left( {y|s} \right) = Softmax \left( o \right) $ | (26) |
其中,
最终, 给定所有的训练样本
$ J\left( \theta \right) = \sum\limits_{i = 1}^T {\log p\left( {{y^{\left( i \right)}}|{S^{\left( i \right)}},\theta } \right)} $ | (27) |
其中,
由于公开的中文关系抽取语料库的匮乏, 目前还没有较为通用且权威的中文远程监督关系抽取数据集.
本文使用的数据为中文的散文数据[10]. 该数据集收录837篇中文文章, 包含9中关系类型, 其中训练集695篇, 测试集84篇, 验证集58篇.
3.2 性能评估指标与参数设定本文实验采用3种评估指标. 召回率, F1以及AUC.
召回率(Recall)是度量的是多个正例被分为正例:
$ {{Re}} call = \frac{{TP}}{{TP + FN}} $ | (28) |
式中, TP表示将正类预测为正类的数量, FN表示将正类预测为负类的数量.
F1是分类问题的一个衡量指标, 数值在0~1之间:
$ F1 = \frac{{2 \times TP}}{{2 \times TP + FP + FN}} $ | (29) |
式中, FP表示将负类预测为正类的数量.
本文实验参数的设定如表1所示.
4 实验结果与分析
为了验证PL-Lattice模型在中文实体关系抽取方面的效果, 本文设置了5组实验:
(1) BLSTM[5]: 提出了一种双向的LSTM用于关系抽取.
(2) Att-BLSTM[6]: 在双向LSTM的基础上加入了词级注意力机制.
(3) PCNN[3]: 提出来一种具有多实例的分段CNN模型.
(4) PCNN+Att[4]: 利用注意力机制改进了PCNN.
(5) Lattice-LSTM[7]: 使用基础的Lattice-LSTM模型加注意力机制作为对比实验.
实验结果如表2所示.
各模型的召回率随训练次数的变化如图2所示.
PL-Lattice模型的F1值和AUC随训练次数的变化如图3所示.
从实验结果可以看出, 注意力机制的加入能够使模型关注到句子中更重要的部分, 从而提升模型的表现能力. 由于LSTM模型相对于CNN模型在处理序列数据上拥有天然的优势, 所以会表现出更好的水平.
本文提出的PL-Lattice模型在各方面都优于其他5种模型. 经过分析, 认为主要的原因是本文对于分词更加精准, 模型使用了多粒度的信息, 使词向量的表示更加合理化, 并且加入了双重注意力机制, 从多个方面提升了模型的可解释性和能力.
5 结论与展望
本文提出了一种用于中文关系的PL-Lattice模型, 该模型同时使用了字符级别和词级别的信息, 并且引入了外部语义库来表示词向量, 使其拥有更深层次的语义信息, 避免了一词多义的现象. 加入了基于词级和基于句子级别的双重注意力机制, 关注了词和句子的多个方面. 在散文数据集上与其他5种模型进行了对比, 表现出更好的优越性.
在未来, 可以将更多粒度的语料信息融入到模型中, 这些信息可能会由于模型挖掘更深层次的意义特征.
[1] |
Liu CY, Sun WB, Chao WH, et al. Convolution neural network for relation extraction. Proceedings of the 9th International Conference on Advanced Data Mining and Applications. Hangzhou, China. 2013. 231–242.
|
[2] |
Zeng DJ, Liu K, Lai SW, et al. Relation classification via convolutional deep neural network. Proceedings of the 25th International Conference on Computational Linguistics. Dublin, Ireland. 2014. 2335–2344
|
[3] |
Zeng DJ, Liu K, Chen Y, et al. Distant supervision for relation extraction via piecewise convolutional neural networks. Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing. Lisbon, Portugal. 2015. 1753–1762.
|
[4] |
Lin YK, Shen SQ, Liu ZY, et al. Neural relation extraction with selective attention over instances. Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics. Berlin, Germany. 2016. 2124–2113.
|
[5] |
Zhang DX, Wang D. Relation classification via recurrent neural network. arXiv preprint arXiv: 1508.01006, 2015.
|
[6] |
刘鉴, 张怡, 张勇. 基于双向LSTM和自注意力机制的中文关系抽取研究. 山西大学学报(自然科学版), 2020, 43(1): 8-13. |
[7] |
Zhang Y, Yang J. Chinese NER using lattice LSTM. Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics. Melbourne, Australia. 2018. 1554–1564.
|
[8] |
Qi FC, Yang CH, Liu ZY, et al. OpenHowNet: An open sememe-based lexical knowledge base. arXiv preprint arXiv: 1901.09957, 2019.
|
[9] |
Mikolov T, Sutskever I, Chen K, et al. Distributed representations of words and phrases and their compositionality. Proceedings of the 26th International Conference on Neural Information Processing Systems. Red Hook, NY, USA. 2013. 3111–3119.
|
[10] |
Xu JJ, Wen J, Sun X, et al. A discourse-level named entity recognition and relation extraction dataset for Chinese literature text. arXiv preprint arXiv: 1711.07010, 2019.
|