system: [SYSTEM]

user: 3. 模型设计 实体关系提取的端到端模型能够减少错误信息的传播和对外部自然语言处理工具的依赖，并且端到端模型对自然语言处理任务的落地应用也有着巨大的价值。端到端模型能够同时识别实体和实体对之间的关系。由于文本的复杂性，输入当中经常会存在包含多个实体对以及特定实体与多个实体同时存在关系的问题，为此我们拼接实体识别和关系提取的模型，在得出实体的基础上预测实体对及它们之间的关系，分别计算特定实体与对应实体和关系类型的得分与概率，从而判定该实体对的关系类型。模型的基本结构如下图2所示。包括字向量表示层，双向序列LSTM (BiLSTM)层，CRF层，sigmoid评分层。 图2. 端到端实体关系提取模型结构 图3. 模型工作流程图 我们的模型的输入是一个字符序列，然后将其表示为单词向量。BiLSTM层能够为每个通过LSTM结构合并上下文的单词提取更复杂的表示。然后CRF和sigmoid层就能够生成命名实体识别和关系提取这两个任务的输出，其中CRF分类每个字符所属实体的类型BI0，B代表的是实体的第一个字符，I表示的是实体中除开头字符的其它字符，O表示不属于实体的的字符，经过CRF层之后就可以识别出句子中的实体。我们用实体中最后一个字符表示这个实体，然后将该实体经过BiLSTM层提取的特征与其它每一个实体经过BiLSTM层提取的特征融合，并计算它与每一个预定义标签的得分，经过sigmoid层得到每个标签的概率，标签概率最大且超过阈值就说明该标签是这两个实体的之间的关系。每个字符的输出是双重的：一个实体识别标签和一组元组组成的标记实体和它们之间的关系的类型。由于我们假设了基于标记的编码，所以我们只将实体的最后一个标记作为另一个标记对应的实体，从而消除了冗余关系。该模型的工作流程如图3所示。 3.1. 数据预处理 本文的数据是通过搜集互联网上面的中文文本数据，主要包括百度百科，新浪微博和搜狐等媒体。我们对数据进行清洗、筛选出比较合理以及富含实体和语义的文本，并在已经预训练好的字向量表上再一次加载训练该文本。对文本进行实体标注和关系标注之后完成了数据预处理的工作。 3.2. 字向量表示层 在输入中文句子以前，我们需要将句子转化为一个标记序列。当给定一个句子 W = w 1 ， ⋯ w t ， w t + 1 ， ⋯ w n 作为输入序列时，嵌入层将句子中的每个字符映射为一个向量。目前常用的工具是word2vec。word2vec是一种浅层神经网络模型，它可以从大量的语料库中以无监督的方式学习语义知识，为语料库中的单词产生一个能表达语义的向量。word2Vec其实就是通过学习文本来用词向量的方式表征词的语义信息，即通过一个嵌入空间使得语义上相似的单词在该空间内距离很近。嵌入其实就是一个映射，将单词从原先所属的空间映射到新的多维空间中。 在中文文本里，为了避免引入外部自然语言处理工具，造成错误的传播，本文将使用字嵌入向量。 当输入一个句子 W = w 1 ， ⋯ w t ， w t + 1 ， ⋯ w n 时，我们根据已经预训练好的word2vec跳跃表，获得句子中每个字符对应的字向量。输入标记序列中有丰富的语料信息，为后续的各层提供上下文信息。 3.3. BiLSTM编码层 当输入的句子经过嵌入层向量化之后，就要对字向量的信息进行编码。我们用的是BiLSTM模型。一个单词序列可以表示为 W = w 1 ， ⋯ w t ， w t + 1 ， ⋯ w n ，n为给定句子的长度。在字嵌入层之后，有两个并行的LSTM层：前向LSTM层和后向LSTM层。对于每个单词的w t ，前向层通过考虑从w 1 到w t 的上下文单词信息对w t 进行编码，并将其标记为h t 。同样的，后向层将根据上下文单词信息从w n 到w t 进行编码，标记为h t 。 LSTM模型能够很好的捕获较长距离的依赖。LSTM主要包括细胞状态，临时细胞状态，隐层状态，遗忘门，记忆门和输出门。LSTM主要通过对细胞状态中信息遗忘和记忆新的信息来进行信息的传递，有用的信息保留，无用的信息遗忘。LSTM模型适合对时序数据的建模。但是LSTM无法编码从后到前的信息，所以采用BiLSTM可以更好的编码上下文信息。LSTM模型的运行细节如下公式所示： f t = σ ( W f ⋅ [ h t ， x t ] + b f ) (1) i t = σ ( W i ⋅ [ h t − 1 ， x t ] + b ) i (2) C ˜ t = tanh ( W C ⋅ [ h t − 1 ， x t ] + b C ) (3) C t = f t * C t − 1 + i t * C ˜ (4) o t = σ ( W o ⋅ [ h t − 1 ， x t ] + b o ) (5) h t = o t * tanh ( C t ) (6) 在每个时间步，lstm内存块是用来计算当前隐藏向量h t 基于前面的隐藏向量h t 1 ，前面的细胞向量c t 1 和当前输入字嵌入w t ，就可以表示为： h t − = l s t m ( h t 1 ， c t 1 ， w t ) 和 h t + = l s t m ( h t + 1 ， c t + 1 ， w t ) 。最后，我们可以整 合h t- 和h t+ 来表示第t个单词的编码信息，表示为 h t = [ h t − ， h t + ] 。 3.4. 实体识别层 经过BiLSTM编码之后，要识别出句子中的实体。 实体识别任务可以描述为一个序列标记问题，标记主要分为BIO。B代表每个实体的开头，I代表每个实体的非开头部分，O代表这个字符不属于实体。我们为句子中的每个字符分配一个标记，每个实体由句子中的多个连续标记组成。本文主要进行人名实体、地名实体和组织实体的识别。 在BiLSTM对嵌入层表示的句向量矩阵进行提取特征信息之后，连接一个softmax层，输出各个标记的概率，预测每个字符的实体类型。但是softmax只能预测出文本序列与标记的关系，但是文本序列标记之间有很强的依赖性，要符合标记之间的规则。比如说标记I-ORG后不能跟一个I-PER标记。这个时候CRF中的转移矩阵可以用来表示标记之间的依赖关系，当违反转移矩阵之间的关系时，得分就会很低，即概率很小，那么这种标记就会被舍弃。线性链CRF的得分公式被定义为如下： S ( w 1 ( e ) ， ⋯ ， w n ( e ) ) = ∑ i = 0 n s i ， w i ( e ) e + ∑ i = 1 n − 1 T w i ( e ) ， w i + 1 ( e ) (7) CRF得分主要由两部分组成，一部分是LSTM预测标签得分，另一部分是表示从一个标签到另一个标签的CRF转移矩阵得分，用softmax分类器计算各个实体标签的概率，得到交叉熵损失函数L ner ，通过最小化损失函数优化实体识别模型的参数。 3.5. 关系提取层 在本层，关系提取主要解决的是多实体对的关系提取问题。当提取出句子中的实体之后，下一步是预测实体之间的关系。除了将句子原本的信息输入以外，为了加强实体和关系的联系，实体标记的信息也要输入到关系提取层。 在一般的句子中，一个实体可能有多个实体关系对。给定输入的序列以及预定义好的关系标签集合，我们的目标是识别序列中每个字符向量中可能的对应实体以及最可能的对应的关系标签，我们选取结合对应实体和关系标签对应的概率超过阈值则是我们想要获取的结果，是提取出的一个实体关系对。我们预测三元组是预测每一个字符的对应的实体及它们对应的关系。计算字符w i 和w j 之间的关系标签r k 得分公式如下： s ( r ) ( w i ， w j ， r k ) = V ( r ) f ( U ( r ) w i + W ( r ) w j + b ( r ) ) (8) 上标 ( r ) 是用于关系标签的表示法。f是激励函数。然后将公式的计算得分经过sigmoid函数处理，可以得到字符w i 与字符w j 之间关系为r k 的概率P： P ( h e a d = w i ， l a b e l = r k | w j ) = σ ( s ( r ) ( w i ， w j ， r k ) ) (9) 在训练的过程中，我们最小化句子中关系提取的交叉熵损失函数，来优化模型的参数： L r c = ∑ i = 0 n ∑ j = 0 m − log P ( h e a d = w i ， j ， r e l = r i ， j | w i ) (10) m是关系标签集中的关系数量。经过训练后，让实体w i 对应的实体w j 和关系标签r k 的估计联合概率超过阈值，我们可以预测多个关系对。对于端到端实体关系提取任务，我们计算的目标函数是L ner + L rc 。