目前流行构建实体矩阵,即用一个矩阵 W t s e ( t y p e , l e n , l e n ) W_{tse}(type,len,len) Wtse(type,len,len)来代表语料中的所有实体及其类型,其中任一元素 N t , e , s N_{t,e,s} Nt,e,s表示类行为 t t t,起点为 s s s,结尾为 e e e的实体。通过这样的标注方式我们可以对任何嵌套实体进行标注,从而解决训练和解码的问题。
为了方便后续对比说明,这里定义几个同一的变量与符号,上文中 N t e s N_{tes} Ntes表示类行为 t t t,起点为 s s s,结尾为 e e e的实体。在本实验中,我们均适用bert-base-chinese作为encoder, h i h_i hi表示最后一层隐藏层中第 i i i个token的embedding,则 h s h_s hs和 h e h_e he分别表示经过encoder之后实体Start和End token的embedding,则我们有公式 N t , e , s = p ( h s , h e , t ) N_{t,e,s} = p(h_s,h_e,t) Nt,e,s=p(hs,he,t),其中 p ( x ) p(x) p(x)就表示我们所需要对比的实体矩阵构建头(姑且这么称呼)。
计算公式: p ( h s , h e , t ) = q s , t T k e , t p(h_s,h_e,t) =q_{s,t}^Tk_{e,t} p(hs,he,t)=qs,tTke,t,其中 q s , t = W s , t h s + b s , t q_{s,t} =W_{s,t}h_s+b_{s,t} qs,t=Ws,th