命名实体识别

我们首先了解面试中常问的HMM和CRF,随后再对工业界的技术方案进行介绍。

基础知识

HMM

在使用HMM解决命名实体识别这种序列标注问题时,我们所能观测到的是字组成的序列(观测序列),观测不到的是每个字对应的标注(状态序列)。

HMM全称是Hidden Markov Model,它是一个生成模型,包含三个参数:$\pi$,$A$,$B$分别代表初始概率矩阵(就是每一个可能的标注作为句子第一个字的标注的概率),状态转移概率矩阵(就是由某一个标注转移到另一个标注的概率)和发射概率矩阵(观测概率矩阵,也就是在某一个标注下,生成某个词的概率);两个假设:马尔科夫假设,即当前时刻的状态变量只与前一时刻有关,与别的变量无关;观测独立假设,即当前的观测变量只与当前时刻的状态变量有关,而和其它无关。

三个需要解决的问题:

  1. 求值问题:已经知道三个参数的情况下,观测序列出现的概率

  2. 如何求得参数:EM算法或者如果有观测序列和对应的状态序列可以直接统计,现实情况是我们很难获取标注序列,此时需要使用EM算法去预估

  3. 解码问题:给定观测序列我们需要找到一个状态序列,使得$I=argmax(P(I|O))$,可使用维特比算法解码

关于维特比:在每一个时刻,计算当前时刻落在每种隐状态的最大概率,并记录这个最大概率是从哪一个时刻的隐状态转移过来的;最后从结尾达到最大概率的那个隐状态回溯,就会找到最优路径。

CRF

刚刚提到HMM模型存在两个假设,但是在命名实体识别的场景下,往往需要更多的特征,比如词的上下文,词性等,当前时刻的标注应该与前一时刻以及后一时刻的标注都相关。由于这两个假设的存在,HMM模型在解决命名实体识别的问题上是存在缺陷的。

条件随机场就没有这种问题,它通过引入自定义的特征函数,不仅可以表达观测之间的依赖,还可以表示当前观测和前后多个状态之间的复杂依赖,可以有效克服HMM模型面临的问题。

CRF层可以加入一些约束来保证最终预测结果是有效的,比如B标签一定会在I标签之前,这些约束可以在训练时被CRF层自动学习得到。

首先介绍两类分数:

  • 发射分数(状态分数)
    发射分数通常来自前一层神经网络的输出,比如BERT或者Bi-LSTM层。
  • 转移分数
    会建立一个所有类别之间的转移分数矩阵,同时为了使转移分数矩阵更具鲁棒性,还会建立<START><END>两类标签。转移矩阵会学习到一些有用的约束条件。

CRF中包括转移分数和发射分数,都是分数而不是概率,并且做了log操作以后,在计算某个路径的分数的时候并不是概率相乘而是分数相加(转移分数+发射分数)。

CRF的损失函数由两部分组成,一部分是真实路径的分数,另一部分是所有路径的总分数。目标是让正确的标注序列出现的概率在所有路径中是最大的。所以分母我们是针对的所有路径,而不是在每一个时刻去计算最优值。因为在某一个时刻计算的最优可能在整体路径上并不是最优。

解码时与HMM类似,也可以采用维特比算法。维特比算法在每个时刻都会删除不符合最短路径要求的路径,大大降低了时间复杂度。

技术应用

美团的整体技术选型是实体词典匹配+模型预测

  • 为什么需要实体词典匹配?

    1. NER下游使用方中有些对响应时间要求比较高,词典匹配速度快,基本不存在性能问题
    2. 新业务接入更加灵活,只需要提供业务相关的实体词表就可以完成新业务场景下的实体识别
    3. 词典匹配虽然简单但是准确率还是比较高的
  • 为什么还需要模型预测?

    1. 随着搜索体量的不断增大,中长尾搜索流量表述复杂,越来越多OOV问题开始出现,模型预测具备泛化能力,可以作为词典匹配的有效补充
    2. 实体词典匹配无法解决歧义问题,词典匹配不具备消歧能力,而模型预测则可以结合上下文预测
  • 实体词典匹配、模型预测两路结果是怎么合并输出的?

    采用训练好的CRF权重网络作为打分器,来对实体词典匹配、模型预测两路输出的NER路径进行打分。在词典匹配无结果或是其路径打分值明显低于模型预测时,采用模型识别的结果,其他情况仍然采用词典匹配结果。

【参考文献】

  1. 最通俗易懂的BiLSTM-CRF模型中的CRF层介绍
  2. 美团搜索中NER技术的探索与实践