Page 352 - 《软件学报》2024年第6期
P. 352
2928 软件学报 2024 年第 35 卷第 6 期
x j ; j ∈ 0,...,n . 对于每一个
其都可能为单一或多个实体的边界首字, 且拥有与其匹配的一个或多个实体边界尾字
x i , 我们需要预测出与其对应的 (r ij , x j ) 组合, 其中 r ij 为边界首字和尾字分别为 x i 和 x j 所组成的实体的类别. 对于
长度为 n 的输入序列 X, 我们需要计算序列中每一个字与其他字直接可能组成实体头尾边界的情况下实体类别的
得分, 因此我们将系统的编码层和实体边界识别部分给出的每个字 x i 的特征表示 z i 分别输入两个全连接层以获得
其分别作为边界首字和尾字的状态表示, 用如下公式计算 x i 和 x j 之间实体类别为 r k 的组合得分.
g(z i ,z j ,r ij ) = V f(Wz i +Uz j +b) (5)
W,U ∈ R dr×(ds+dh) V,b ∈ R dr f(·) 使用非饱和激活函数 ds 为 span embedding dh 为编码层隐层
其中, ; ; ReLU; 维度;
维度. 我们使用 Logistic 函数对分数 g(z i ,z j ,r k ) 进行处理, 即可得到 x j 作为 x i 的 r k 类型实体尾边界字的条件概率
Pr(type = r k ,tail = x j |head = x i ) 为:
Pr(r k , x j |x i ) = Logistic(g(z i ,z j ,r k )) (6)
具体到实际操作过程中对张量的计算, 如图 3 中红色虚线框中所示, 在通过全连接层 (图 3 中 W, U) 分别得到
对头字和尾字的状态表示后, 我们将其中一方进行转置操作, 然后利用张量维度广播机制将两个张量进行加和操
作, 从而得到维度为 [seq_len, seq_len, hidden_size] 的输出张量, 其中 seq_len 表示待识别文本序列的长度 n,
体数量分布往往并不平衡, 仅依靠深度学习并不能将所有的实体嵌套规则训练得很好, 因此我们需要结合规则过
hidden_size 表示全连接层隐层维度 dr. 然后再将其通过全连接层 V 生成维度为 [seq_len, seq_len, label_size] 的输
出张量 G, 其中 label_size 为实体类别的数目. G 即为所有 g(z i ,z j ,r k ) 所组成的得分矩阵. 将得分矩阵 G 通过 Logistic
函数计算后即可得到输入文本序列中所有实体首字和尾字与不同实体类别所得概率组合矩阵, 即如图 3 右侧部分
x j ,
所示蓝色张量. 需要注意的是, 在实际情况中, 对于任意一个实体边界首字 x i 和其对应的实体边界尾字
都应该存在限制条件 ij (单字实体情况下 i = j ). 因此, 我们对所有不符合上述限制条件的概率组合进行 mask 操
作, 得到最终的概率得分. 在训练过程中, 我们通过最小化交叉熵损失函数来对模型的参数进行优化.
n ∑ m ∑
loss MTS = −logPr( ˆx j ,r ij |x i θ) (7)
i j
其中, m 为 x i 所对应的实体尾边界字的实际数量; ˆ x j 和 r ij 分别为 x i 的 ground truth 尾边界字和相对应的实体类别
θ 为参数集合. 最后, 系统使用联合训练来同时优化实体边界识别任务和实体边界首尾字匹配任务, 其最终
标签;
的目标函数为:
(8)
loss joint = loss span +loss MTS
3.4 嵌套规则过滤方法
与实体关系抽取或依存句法分析任务不同, 实体边界首尾字匹配问题对首尾字之间的相对位置有着一定的限
制条件, 例如第 3.3 节中已提及的边界首字和尾字之间存在 ij 的限制条件等. 我们通过对中文医疗命名实体抽取
数据库 (CMeEE) 的数据分析, 将嵌套实体对中的外层实体和内层被嵌套实体两两之间应满足的边界首尾字归纳
为如表 1 所示 6 种相对位置关系. 这里我们使用 H 1 ,T 1 分别表示嵌套实体对的外层实体 (entity1) 的边界首字和边
界尾字; H 2 ,T 2 分别表示嵌套实体对的内层嵌套实体 (entity2) 的边界首字和边界尾字; S 2 表示以单字组成的内层
被嵌套实体. 特别地, 我们具体统计了数据集中所出现的嵌套实体对的内外层实体类别 (统计结果见表 2), 可以发
现, 对于中文医疗文本范畴, 其所包含的嵌套实体之间的类别从属也有着一定的特殊性和限制性. 例如当外层实体
是“身体部位”类型的情况下, 其嵌套的内层实体类型不可能出现“科室名称”类型. 而由于数据集中不同类型的实
滤的方式在模型解码过程中将不符合嵌套规则的识别结果自动地过滤出去. 如表 1 中第 4 列所示, 我们依照 6 种
实体边界相对位置关系分别列举了我们在数据集中所统计到的所有嵌套实体所出现的实体类别. 其中“e1”和“e2”
分别代表内层实体和外层实体, “:”后边为其对应的实体类别. 基于上述限制信息, 我们在解码过程中对模型所预
测得到的实体边界字匹配的条件概率矩阵结果进行如算法 1 所示过滤: 首先根据公式 (6) 中所得的实体类型 r k 不
为 None 的所有实体首尾边界组合按照条件概率 Pr(r k , x j |x i ) 进行从高到低排序; 按次序对于实体首尾边界组合进
行两两之间比较, 依照表 1 所列 6 种首尾边界规则进行匹配, 如无嵌套关系则跳过, 如不符合表 1 中所列边界规则