实体命名识别之嵌套实体识别哪家强
嵌套实体识别
- 嵌套实体识别是实体命名识别中一个子问题,何为嵌套实体即“北京天安门”中“北京”是地点实体,“北京天安门”同样也是地点实体,两者存在嵌套关系。使用CRF等传统标注方法无法对嵌套实体进行区分,因此存在一定的局限性。
- 目前流行构建实体矩阵,即用一个矩阵 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的实体。通过这样的标注方式我们可以对任何嵌套实体进行标注,从而解决训练和解码的问题。
- 本文笔者将对比目前接触到的部分实体矩阵的构建方法在CMeEE数据集(医学NER,有一定嵌套实体)上的表现。
实体矩阵构建框架
- 为了方便后续对比说明,这里定义几个同一的变量与符号,上文中 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)就表示我们所需要对比的实体矩阵构建头(姑且这么称呼)。
- 在对比实验中,除了不同实体矩阵构建头对应的batch_size,learning_rate不同,所使用的encoder、损失函数、评估方式以及训练轮次均保持一致。
- 本文选取了GlobalPointer、TPLinker(Muti-head selection)、Tencent Muti-head、Deep Biaffine(双仿射)共四种实体矩阵构建方法进行比较。
方法比较
GlobalPointer
- GlobalPointer出自苏神的博客GlobalPointer:用统一的方式处理嵌套和非嵌套NER
- 计算公式: 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,ths+b