1.命名实体识别介绍

命名实体识别(Named Entity Recoginition, NER) 旨在将一串文本中的实体识别出来,并标注出它所指代的类型,比如人名、地名等等。具体地,根据MUC会议规定,命名实体识别任务包括三个子任务:

  • 实体名:人名、地名、机构名等
  • 时间表达式:日期、时间、持续时间等
  • 数字表达式:百分比、度量衡、钱、基数等

我们来看这句话,百度于2021年3月23日正式回香港上市,这句话中"百度"是个机构名,"香港"是个地名,"2021年3月23日"是个日期,命名实体识别任务能够通过建模的方式来帮助我们自动地发现这些实体。

命名实体识别是一项比较关键的NLP任务,具有广泛的应用场景,例如在对话意图理解(NLU)中,通过提取出相应的实体词,能够帮助系统更加准确地理解用户的需求,比如根据用户的问题提取出"天气",“北京”,"今天"这样的词汇,大概率就能知道用户在问些什么;在微博场景中,应用命名实体识别提取出微博短文中重要的实体词,也有利于微博信息的汇总,或者事件热度的统计。

NER任务一般会被建模成序列标注任务,也就是说,模型的输入是待识别的一串文本序列,模型的输出就是该文本序列对应的标签序列,不同于文本分类任务,这是一种序列到序列的任务。我们来举个例子:











B-Person

I-Person

O

O

B-Organization

I-Organization

I-Organization

I-Organization

O

O

这句话中的每个字分别对应着一个标签, 模型的输入就是上边的文本,模型的输出就是下面的标签序列,我们通过这样的标签序列就能识别出原始文本中的实体。
具体地,上边这串文本中,“姚明"对应着Person实体,其中"姚"字是"Person"实体的起始字,所以设置标签为"B-person”,其中标签前边的B代表Begin这个单词;“明"字是"Person"实体的中间字,所以设置标签为"I-Person”,其中标签前边的I代表Intermediate这个单词。 “中国篮协"对应这Organization实体,相应标签"B-Organization"和"I-Organization"的解读和Person实体是一致的。最后的标签"O"代表"other”,表示其他实体类型的标签。

看到这里,相信你已经知道,本节的NER任务要建模完成一件什么事情了,即建模一个序列到序列的模型来找出文本中蕴含的实体。

2.BiLSTM+CRF实现命名实体识别

BiLSTM + CRF是一种经典的命名实体识别(NER)模型方案,这在后续很多的模型improvment上都有启发性。如果你有了解NER任务的兴趣或者任务,或者完全出于对CRF的好奇,建议大家静心读一读这篇文章。

本篇文章会将重点放到条件随机场(CRF)上边,因为这是实现NER任务很重要的一个组件,也是本篇文章最想向你推荐的特色。但是如果你 对长短时记忆网络(LSTM)也不是很熟悉,那你也不用担心,笔者会去解释LSTM的用法,它的输入和输出等等内容,以保证你可以顺畅的读下去,领悟到这个模型的精髓。

2.1使用BiLSTM+CRF实现NER

为方便直观地看到BiLSTM+CRF是什么,我们先来贴一下BiLSTM+CRF的模型结构图,如图1所示。

深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能

图1 使用BiLSTM+CRF实现NER

图1可以看到,在BiLSTM上方我们添加了一个CRF层。具体地,在基于BiLSTM获得各个位置的标签向量之后,这些标签向量将被作为发射分数传入CRF中,发射这个概念是从CRF里面带出来的,后边在介绍CRF部分会更多地提及,这里先不用纠结这一点。

这些发射分数(标签向量)传入CRF之后,CRF会据此解码出一串标签序列。那么问题来了,从图1最上边的解码过程可以看出,这里可能对应着很多条不同的路径,例如:

  • B-Person, I-Person, O, …, I-Organization
  • B-Organization, I-Person, O, …, I-Person
  • B-Organization, I-Organization, O, …, O

CRF的作用就是在所有可能的路径中,找出得出概率最大,效果最优的一条路径,那这个标签序列就是模型的输出。

我们来总结一下,使用BiLSTM+CRF模型架构实现NER任务,大致分为两个阶段:使用BiLSTM生成发射分数(标签向量),基于发射分数使用CRF解码最优的标签路径。

2. 回归CRF建模原理本身

本节将开始聚焦在CRF原理本身进行讲解,力图为读者展现一个清楚明白,基础本质的CRF。那现在开始这趟学习之旅吧,相信你一定会有所收获。

2.1 线性CRF的定义

通常我们会使用线性链CRF来建模NER任务,所以本实验将聚焦在线性链CRF来探讨。那什么是线性链CRF呢,我们来看下李航老师在《统计学习方法》书中的定义:

设KaTeX parse error: Undefined control sequence: \[ at position 3: X=\̲[̲x\_1, x\_2, ...… 均为线性链表示的随机变量序列,若在给定随机变量序列的深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_02的条件下,随机变量序列深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_03的条件概率分布深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_04构成条件随机场,即满足马尔可夫性:

KaTeX parse error: Expected 'EOF', got '&' at position 70: …i+1},...,y\_n) &̲= P(y\_i|X,y\_{…

则称深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_04线性链条件随机场

同学们看到这个定义,或许会有些疑惑,但是不用着急,我们来探讨下这个定义。图2展示了一种经典的线性链CRF的结构图,从这张结构图来理解这个定义,主要包含两个点:

  1. 确保输入序列深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_02和输出序列深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_03是线性序列
  2. 每个标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_08的产生,只与这些因素有关系:当前位置的输入深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_09深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_08直接相连的两个邻居深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_11深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_12,与其他的标签和输入没有关系。

这样的定义,其实帮助我们减小了建模CRF的代价。

深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_13

图 2 一种经典的线性链CRF结构图

2.2 发射分数和转移分数

上边我们探讨了线性链CRF的定义以及它的一种经典图结构,接下来我们继续回到我们建模的命名实体任务上来。

图2中,KaTeX parse error: Undefined control sequence: \[ at position 3: x=\̲[̲x\_0, x\_1, ...…代表输入变量,对应到我们当前任务就是输入文本序列,KaTeX parse error: Undefined control sequence: \[ at position 3: y=\̲[̲y\_0, y\_1, ...…代表相应的标签序列,

其中,每个输入深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_14均对应着一个标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_15,这一步对应的就是发射分数,它指示了当前的输入深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_14应该对应什么样的标签;在每个标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_15之间也存在连线,它表示当前位置的标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_15向下一个位置的标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_19的一种转移。举个例子,假设当前位置的标签是"B-Person",那下一个位置就很有可能是"I-Person"标签,即标签"B-Person"向"I-Person"转移的概率会比较大。

这里我们带出了建模CRF过程中两个重要的概念:发射分数和转移分数,下边我们来看看他们是什么。

2.2.1 发射分数

前边我们在第2节已经提到过发射分数了,即BiLSTM后产生的标签向量。如果大家对这部分内容已经很熟悉,完全可以跳过这部分。图3以矩阵的形式展示了发射分数的生成过程。

深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_20

图3 发射分数的矩阵计算解释

当给定的文本序列KaTeX parse error: Undefined control sequence: \[ at position 3: x=\̲[̲x\_1, x\_2, x\_…映射为对应词向量之后,将会得到一个shape为KaTeX parse error: Undefined control sequence: \[ at position 1: \̲[̲n, embedding\_s…的词向量矩阵深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_21,其中每对应一个字词(图5样例只使用了4个词),例如深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_22对应的词向量是KaTeX parse error: Undefined control sequence: \[ at position 1: \̲[̲e\_{00}, e\_{01…。

然后将深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_21传入BiLSTM后,每个词的位置都会产生一个上下文向量,所有的向量组合之后会得到一个向量矩阵深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_24,其中每行代表对应单词经过BiLSTM后的上下文向量。

这里的每个位置的上下文向量可以用来指导当前位置应该输出的标签信息,但这里有个问题,这个输出向量的维度并不是标签的数量,它不能直接用来指示应该输出什么标签。一般的做法是在后边加一层线性层,将这个上下文向量的维度映射为标签的数量,这样的话就会生成前边所讲的标签向量,其中的每个元素分别对应着相应标签的分数,根据这个分数可以用来指导最终标签的输出。

具体地,线性层这里只是做了这样的一个线性变换:深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_25,显然,这里的深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_26就是深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_24深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_28是相应的深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_29深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_30是线性层的可学习参数。
前边提到,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_24的shape为KaTeX parse error: Undefined control sequence: \[ at position 1: \̲[̲n,context\_size…,那么线性层的深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_32的shape应该是KaTeX parse error: Undefined control sequence: \[ at position 1: \̲[̲context\_size, …,经过以上公式的线性变换,就可以得到发射分数深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_29,其中每个字词对应一行的标签分数(图3中只设置了三列,代表一共有3个标签),例如,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_22对第一个标签的分数预测为深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_35,对第二个标签的分数预测为深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_36,对第三个标签的分数预测为深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_37,依次类推。

2.2.2 转移分数

下面我们来聊聊转移分数,这个转移分数表示一个标签向另一个标签转移的分数,分数越高,转移概率就越大,反之亦然。图4展示了记录转移分数的矩阵。

深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_38

图4 转移分数矩阵图

让我们从列到行地来看下这个转移矩阵深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_39,B-Person向I-Person转移的分数为0.93,B-Person向I-Organization转移的分数为0.02,前者的分数远远大于后者。I-Person向I-Person转移的概率是0.71,I-Organization向I-Organization转移的分数是0.95,因为一个人或者组织的名字往往包含多个字,所以这个概率相对是比较高的,这其实也是很符合我们直观认识的。

假设我们现在有个标签序列:B-Person, I-Person, O, O,B-Organization, I-Organization。那么这个序列的转移分数可按照如下方式计算:

深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_40

这个转移分数矩阵是CRF中的一个可学习的参数矩阵,它的存在能够帮助我们显示地去建模标签之间的转移关系,提高命名实体识别的准确率。

2.3 CRF建模的损失函数

前边我们讲到,CRF能够帮助我们以一种全局的方式建模,在所有可能的路径中选择效果最优,分数最高的那条路径。那么我们应该怎么去建模这个策略呢,下面我们来具体谈谈。

深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_41

图5 CRF解码过程图

图5展示了CRF的工作图,现在我们有一串输入KaTeX parse error: Undefined control sequence: \[ at position 3: x=\̲[̲x\_0, x\_1, x\_…(这里的深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_42是文本串对应的发射分数,每个字词深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_14都对应着一个发射分数向量,也就是前边提到的标签向量,该向量的维度就是标签数量),期待解码出相应的标签序列KaTeX parse error: Undefined control sequence: \[ at position 3: y=\̲[̲y\_0, y\_1,y\_2…,形式化为对应的条件概率公式如下:

深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_44

在第2节我们提到,CRF的解码策略在所有可能的路径中,找出得出概率最大,效果最优的一条路径,那这个标签序列就是模型的输出,假设标签数量是深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_45,文本长度是深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_46,显然会有深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_47条路径,若用深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_48代表第深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_49条路径的分数,那我们可以这样去算一个标签序列出现的概率:

深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_50

现在我们有一条真实的路径深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_51,即我们期待CRF解码出来的序列就是这一条。那它的分数可以表示为深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_52,它出现的概率就是:

深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_53

所以我们建模学习的目的就是为了不断的提高深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_54的概率值,这就是我们的目标函数,当目标函数越大时,它对应的损失就应该越小,所以我们可以这样去建模它的损失函数:

深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_55

为方便求解,我们一般将这样的损失放到log空间去求解,因为log函数本身是单调递增的,所以它并不影响我们去迭代优化损失函数。

KaTeX parse error: Expected 'EOF', got '&' at position 26: …{align} loss &̲= -log \\frac{e…

千呼万唤始出来,这就是我们CRF建模的损失函数了。我们整个BiLSTM+CRF建模的目的就是为了让这个函数越来越小。从这个损失函数可以看出,这个损失函数包含两部分:单条真实路径的分数深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_56,归一化项深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_57,即将全部的路径分数进行深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_58操作,即先将每条路径分数深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_48进行深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_60,然后再将所有的项加起来,最后取深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_61值。

讲到这里,有的同学可能会有疑惑,这里的每条路径分数应该怎么算呢?接下来,我们就来解决这个问题。

2.4 单条路径的分数计算

在开始之前,我们再来做一些约定,前边我们提到了发射分数和转移分数,假设深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_62代表发射分数矩阵,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_39代表转移分数矩阵,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_46代表文本序列长度,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_65代表标签的数量。另外为方便书写,我们为每个标签编个id号(参考图5中涉及到的标签),如图6所示。

深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_66

图6 Tag和Tag Id 对应表

其中,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_62的shape为KaTeX parse error: Undefined control sequence: \[ at position 1: \̲[̲n, tag\_size\],每行对应着一个文本字词的发射分数,每列代表一个标签,例如,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_68代表深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_22取id为1的标签分数,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_70代表深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71取id为3的标签分数。深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_39的shape为KaTeX parse error: Undefined control sequence: \[ at position 1: \̲[̲tag\_size, tag\…,它代表了标签之间相互转移的分数,例如,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_73代表id为3的标签向id为0的标签转移分数。

每条路径的分数就是由对应的发射分数和转移分数组合而成的,对于图5标记出来的黄色路径来说,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_22的标签是B-Person,对应的发射分数是深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_75深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76的标签是I-Person,对应的发射分数是深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_77,由B-Person向I-Person转移的分数是深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_78,因此到这一步的分数就是:深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_79

接下来深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71的标签是深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_81,由深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76的标签向I-Person向深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71的标签O转移的概率是深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_84,因此到这一步的分数是:深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_85,依次类推,我们可以计算完整条路径的分数。假设第深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_49个位置对应的标签为深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_15,则整条路径的分数计算形式化公式为:

深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_88

2.5 全部路径的分数计算

2.3节中的损失函数包括两项,单条真实路径分数的计算和归一化项(如上所述,全部路径分数的深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_58,为方便描述,后续直接将个归一化项描述为全部路径之和)的计算。这里你或许会问,现在知道了单条路径分数的计算方式,遍历一下所有的路径算个分数,不就可以轻松算出全部路径之和吗?是的,这在理论上是可行的。

但是,前边我们提到这个路径的数量是个指数级别的量纲,假设我对串包含50个字的文本串进行实体识别,标签的数量是31,那么这个路径的数量将是深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_90条,这是真的是难以接受的一件事情,它会远远拖慢模型的训练和预测效率。

因此,我们要换一种高效的思路,这里其实用到了一种被称为前向算法的动态规划,它能帮助我们将图5所有路径的和计算,拆解为每个位置的和计算,最终得出所有的路径之和。如果这是你第一次听到这个算法,那也没关系,我会通过示例的方式,为你展现这个算法的工作原理,但是在看这部分内容之前,我们再来回顾一下我们的计算目标,即损失函数中的第1项:

深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_91

另外,为方便描述这个原理,我们来简化下这个问题,假设我们现在在计算图7所示的所有路径之和。

深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_92

图7 简化版的CRF工作图

图7中,共包含2个标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93 0 和深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93 1, 文本串有3个单词深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_95。我们再来做些约定如下:

KaTeX parse error: Undefined control sequence: \[ at position 13: emission\_i=\̲[̲x\_{i0},x\_{i1}…, 代表深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_09位置的发射分数。

其中,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_97代表深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_09位置输出深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99 0 标签的分数, 深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_100代表深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_09位置输出深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99

$ trans = \left[ \begin{matrix} t_{00} & t_{01}\ t_{10} & t_{11} \end{matrix} \right] $, 代表转移矩阵。

其中,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_103代表从深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99 1 转移到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99 0的分数,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_106代表从深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99 0 转移到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99

KaTeX parse error: Undefined control sequence: \[ at position 10: alpha\_i=\̲[̲s\_{i0},s\_{i1}…, 其中各个数值代表到当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_09为止,以深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_09位置相应标签结尾的路径分数之和。

深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_111步为例,KaTeX parse error: Undefined control sequence: \[ at position 10: alpha\_2=\̲[̲s\_{20},s\_{21}…,其中深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_112代表截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_111步骤为止,以标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99 0 结尾所有的路径分数之和,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_115代表截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_111步骤为止,以标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99

这里比较抽象,如图7所示,参与深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_111步的深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_112分数计算的路径包括4条,即深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_112是下边4条路径分数之和,依次如下

  • 深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_121
  • 深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_122
  • 深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_123
  • 深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_124

恭喜,我们完成了一些枯燥的定义,下边我们来看看如何计算所有路径的分数和吧,这里我们分成3步走来解释,首先计算截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_22位置,到各个标签的分数(上边的深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_126内容)是多少;截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76位置,到各个标签的分数是多少;截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71位置,到各个标签的分数是多少。


第1步,截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_129位置

当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_22输入的发射分数为:KaTeX parse error: Undefined control sequence: \[ at position 13: emission\_0=\̲[̲x\_{00},x\_{01}…,因为这是序列的起始,显然截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_22位置有:KaTeX parse error: Undefined control sequence: \[ at position 10: alpha\_0=\̲[̲x\_{00},x\_{01}…。

截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_22这一步,将深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_22位置的所有标签的分数累计作为所有路径的分数为:

深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_134


第2步,截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_135位置

当前步骤涉及到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_22深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76位置的转移,在这个过程中,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76位置输入的发射分数为:KaTeX parse error: Undefined control sequence: \[ at position 13: emission\_1=\̲[̲x\_{10}, x\_{11…, 转移概率矩阵为: $ trans = \left[ \begin{matrix} t_{00} & t_{01}\ t_{10} & t_{11} \end{matrix} \right] 深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_139x_0深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_140alpha_0=[x_{00},x_{01}]$。

接下来我们expand一下深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_141深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_142,力求通过矩阵计算的方式一次完成当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76各个标签的路径累计深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_144,具体如下:

KaTeX parse error: Undefined control sequence: \[ at position 21: …ion\_1 = \\left\̲[̲ \\begin{matrix…

KaTeX parse error: Undefined control sequence: \[ at position 18: …pha\_0 = \\left\̲[̲ \\begin{matrix…

然后我们来计算截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76位置,到不同标签的每条路径的分数:

KaTeX parse error: Expected 'EOF', got '&' at position 28: …lign} scores &̲= alpha\_0+tran…

我们来看一条路径分数的计算,例如$ x_{00}+t_{10}+x_{11}深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_146x_0深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_147Tag$ 0,在深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76的位置标签为深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93 1,然后通过加上深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_150完成了深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_22位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93 0标签 向 深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76位置标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93

从上边的结果可以看到,第1行代表向当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93 0的转移路径,第2行代表向当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93 1的转移路径。以第1行为例,将第1行的路径分数相加,就相当于到当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76并且以深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93

因此,这样我们可以容易地算出当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76的各个标签的路径累计分数深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_144:

KaTeX parse error: Undefined control sequence: \[ at position 12: alpha\_1 = \̲[̲log(e{x\_{00}+t…

最后,我们来算下截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76位置,所有的路径和:

KaTeX parse error: Expected 'EOF', got '&' at position 30: …gn} total\_1 &̲= log(e^{alpha\…

再回顾一下我们的计算目标:深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_57,你可以看到如果图7最终只到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76位置,那么上边的这个结果就是我们相求的全部路径之和,或者说是归一化项。


第3步,截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_111位置

我们再来看下深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71位置的一些输入信息,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71位置输入的发射分数为:KaTeX parse error: Undefined control sequence: \[ at position 13: emission\_2=\̲[̲x\_{20}, x\_{21…, 转移概率矩阵为: $ trans = \left[ \begin{matrix} t_{00} & t_{01}\ t_{10} & t_{11} \end{matrix} \right] 深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_139x_1深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_140alpha_1=[log(e{x_{00}+t_{00}+x_{10}}+e+t_{01}+x_{10}}), log(e{x_{00}+t_{10}+x_{11}}+e+t_{11}+x_{11}})]$。

接下来继续expand一下深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_171深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_144,力求通过矩阵计算的方式一次完成当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71各个标签的路径累计深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_174,具体如下:

KaTeX parse error: Undefined control sequence: \[ at position 21: …ion\_2 = \\left\̲[̲ \\begin{matrix…

KaTeX parse error: Undefined control sequence: \[ at position 18: …pha\_1 = \\left\̲[̲ \\begin{matrix…

然后我们来计算截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71位置,到不同标签的每条路径的分数:

KaTeX parse error: Expected 'EOF', got '&' at position 28: …lign} scores &̲= alpha\_1+tran…

继续按行累加,算出到当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71的各个标签的路径累计分数深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_174:

KaTeX parse error: Expected 'EOF', got '&' at position 30: …gn} alpha\_2 &̲= \[log(e^{scor…

最后,我们来算下截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71位置,所有的路径和:

KaTeX parse error: Expected 'EOF', got '&' at position 30: …gn} total\_2 &̲= log(e^{alpha\…

显然,这个式子的结果就是最终我们想要的计算目标,损失函数中的第1项,共计包含8条路径的分数。

2.6 CRF的Viterbi解码

在前边几节,我们讲过了CRF的损失函数、单条路径分数的计算、全部路径分数的计算,根据这些内容完全可以进行BiLSTM+CRF的训练。但是,我们如何使用CRF从全部的路径中解码出得分最高的那条路径呢?

同2.5节所述,计算全部路径分数后,选择得分最大的那条路径肯定是不行的。其实这里是使用了一种被称为Viterbi的算法,它的思想和2.5节介绍的前向算法有些类似,将从全部路径中查找最优路径的过程,拆解为选择每个位置累计的最大路径。如果这是你第一次接触Viterbi算法,也不用担心,本节依然会通过示例的方式展现这个算法原理。

我们依然以图7为例,解码这全部路径中分数最大的这条(图中橙色显示的这条路径)。在正式介绍之前,我们依然做些约定如下:

KaTeX parse error: Undefined control sequence: \[ at position 13: emission\_i=\̲[̲x\_{i0},x\_{i1}…, 代表深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_09位置的发射分数。

其中,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_97代表深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_09位置输出深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99 0 标签的分数, 深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_100代表深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_09位置输出深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99

$ trans = \left[ \begin{matrix} t_{00} & t_{01}\ t_{10} & t_{11} \end{matrix} \right] $, 代表转移矩阵。

其中,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_103代表从深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99 1 转移到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99 0的分数,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_106代表从深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99 0 转移到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99

KaTeX parse error: Undefined control sequence: \[ at position 10: alpha\_i=\̲[̲s\_{i0},s\_{i1}…, 其中各个数值代表到当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_09为止,以当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_09相应标签结尾的路径中,取得最大分数的路径得分。

深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_111位置为例,KaTeX parse error: Undefined control sequence: \[ at position 10: alpha\_2=\̲[̲s\_{20},s\_{21}…,其中深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_112代表截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_111步骤为止,以标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99 0 结尾所有的路径中得分最大的路径分数,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_115代表截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_111步骤为止,以标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99

这里比较抽象,如图7所示,参与深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_111步的深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_112分数计算的路径包括4条,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_112是这4条路径中得分最大这一条对应的分数,即下边这一条路径:深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_204

KaTeX parse error: Undefined control sequence: \[ at position 11: beta\_i = \̲[̲p\_{i0},p\_{i1}…,其中各个数值代表到当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_09为止,以当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_09相应标签结尾的路径中,分数最大的那一条路径在前一个位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_207的标签索引(每个标签对应的id号)。

深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_111位置为例,KaTeX parse error: Undefined control sequence: \[ at position 11: beta\_2 = \̲[̲p\_{20},p\_{21}…,其中深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_209代表代表截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_111步骤为止,以标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99 0 结尾所有的路径中得分最大的那条路径在深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_207位置的标签索引,同理深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_213代表截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_111步骤为止,以标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99 1结尾的最大路径在深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_207位置的标签索引。

同样,如图7所示,在深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_111位置,到标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99 0的所有路径中,分数最大的路径是:深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_204,因为前一个位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_207的标签是深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_99 1,因此深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_222

恭喜,我们又一次完成了这些枯燥的定义,下边我们来看看如何选择所有路径中得分最大的这一条吧,这里我们同样分成3步走来解释,首先计算截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_22位置,到各个标签的最大得分(上边的深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_126内容)是多少;截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76位置,到各个标签的最大得分是多少;截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71位置,到各个标签的最大得分是多少。


第1步,截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_129位置

当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_22输入的发射分数为:KaTeX parse error: Undefined control sequence: \[ at position 13: emission\_0=\̲[̲x\_{00},x\_{01}…,因为这是序列的起始,显然截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_22位置有:KaTeX parse error: Undefined control sequence: \[ at position 10: alpha\_0=\̲[̲x\_{00},x\_{01}…

另外因为起始位置前边没有路径,这里我们使用-1来初始化:KaTeX parse error: Undefined control sequence: \[ at position 9: beta\_0=\̲[̲-1,-1\]


第2步,截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_135位置

当前步骤涉及到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_22深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76位置的转移,在这个过程中,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76位置输入的发射分数为:KaTeX parse error: Undefined control sequence: \[ at position 13: emission\_1=\̲[̲x\_{10}, x\_{11…, 转移概率矩阵为: $ trans = \left[ \begin{matrix} t_{00} & t_{01}\ t_{10} & t_{11} \end{matrix} \right] 深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_234x_0深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_235alpha_0=[x_{00},x_{01}]$。

接下来按照2.5节同样的方式,我们expand一下深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_141深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_142,力求通过矩阵计算的方式一次完成到当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76各个标签的所有路径中得分最大的路径分数深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_144,具体如下:

KaTeX parse error: Undefined control sequence: \[ at position 21: …ion\_1 = \\left\̲[̲ \\begin{matrix…

KaTeX parse error: Undefined control sequence: \[ at position 18: …pha\_0 = \\left\̲[̲ \\begin{matrix…

然后我们来计算截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76位置,到不同标签的每条路径的分数:

KaTeX parse error: Expected 'EOF', got '&' at position 28: …lign} scores &̲= alpha\_0+tran…

同样地,以第1行为例,第1行代表到当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93 0结尾的所有路径的得分,那么第1行中分数最大这一条路径,就是到当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76并且以深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93

因此,这样我们可以容易地算出到当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76的各个标签的最大路径分数深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_144:

KaTeX parse error: Expected 'EOF', got '&' at position 30: …gn} alpha\_1 &̲= \[max(scores\…

显然从上边结果中,我们能够分析出到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76位置各个标签的最大路径,例如到$Tag $ 0的路径有深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_248 和 $ x_{01}+t_{01}+x_{10}深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_249x_1$位置 $Tag $ 0的最大路径。

这里不妨我们做个假设:

  • 深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_250
  • 深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_251

因此,我们可以获得深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76位置的索引KaTeX parse error: Undefined control sequence: \[ at position 9: beta\_1=\̲[̲1,0\],这代表在深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76位置,到标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93 0的最大路径的前一个位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_255的标签是深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93 1, 到标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93 1的最大路径的前一个位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_255的标签是深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93


第3步,截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_人工智能_111位置

我们再来看下深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71位置的一些输入信息,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71位置输入的发射分数为:KaTeX parse error: Undefined control sequence: \[ at position 13: emission\_2=\̲[̲x\_{20}, x\_{21…, 转移概率矩阵为: $ trans = \left[ \begin{matrix} t_{00} & t_{01}\ t_{10} & t_{11} \end{matrix} \right] 深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_139x_1深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_264alpha_1=[max(x_{00}+t_{00}+x_{10}, x_{01}+t_{01}+x_{10}), max(x_{00}+t_{10}+x_{11}, x_{01}+t_{11}+x_{11})]$。

接下来继续expand一下深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_171深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_144,力求通过矩阵计算的方式一次完成当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71各个标签的路径累计深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_174,具体如下:

KaTeX parse error: Undefined control sequence: \[ at position 21: …ion\_2 = \\left\̲[̲ \\begin{matrix…

KaTeX parse error: Undefined control sequence: \[ at position 18: …pha\_1 = \\left\̲[̲ \\begin{matrix…

然后我们来计算截止到深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71位置,到不同标签的每条路径的分数:

KaTeX parse error: Expected 'EOF', got '&' at position 28: …lign} scores &̲= alpha\_1+tran…

因此,这样我们可以容易地算出到当前位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71的各个标签的最大路径分数深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_174:

KaTeX parse error: Expected 'EOF', got '&' at position 30: …gn} alpha\_1 &̲= \[max(scores\…

这里我不妨再假设:

  • 深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_272
  • 深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_273

上一步我们曾假设:

  • 深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_250
  • 深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_251

因此有:

  • 深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_276
  • 深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_277

所以深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71位置的索引:KaTeX parse error: Undefined control sequence: \[ at position 11: beta\_2 = \̲[̲1,0\]

此时:KaTeX parse error: Undefined control sequence: \[ at position 10: alpha\_1=\̲[̲x\_{00}+t\_{10}…

图7中橘色路径分数最高,其对应的是深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_279,因此再假设:

深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_280

这其实代表在深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71位置的所有标签对应的最大路径中,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93

第4步,开始解码标签序列

到现在位置,我们通过深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_283记录下了最大路径上的节点,接下来我们可以通过回溯来找出全局所有路径中的最大路径。

首先,在深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71位置所有标签对应的最大路径中,深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93 0 对应的路径分数最大。因此深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71位置对应的标签就是深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93

然后,KaTeX parse error: Undefined control sequence: \[ at position 11: beta\_2 = \̲[̲1,0\],因此深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_自然语言处理_71位置解析出的标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93 0,对应的上一位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76的标签是深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93

接下来,KaTeX parse error: Undefined control sequence: \[ at position 9: beta\_1=\̲[̲1,0\],因此深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_语言模型_76位置解析出的标签深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93 1,对应的上一位置深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_深度学习_22的标签是深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93

最后,KaTeX parse error: Undefined control sequence: \[ at position 9: beta\_0=\̲[̲-1,-1\],当解析到这一步的时候,反回的标签肯定是-1,因此这个回溯过程也就结束了。

当回溯完成之后,将解析出的结果倒序排序,就是我们期望的最大路径。以图7为例,该路径就是深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93 0 -->深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93 1 -->深度学习自然语言处理-命名实体识别:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)_easyui_93

3. PLM Fine-tuning预训练的模型

3.1 目前前沿方法

  1. Transformer-CRF模型:基于Transformers的神经网络结构和条件随机场模型的联合训练,通过提取输入的上下文信息、全局概率建模,结合现有的BERT和RoBERTa预训练模型,在多语种的命名实体识别任务中有很好的表现。
  2. Pre-trained Language Model Fine-tuning (PLM Fine-tuning):该方法是基于预训练模型和微调技术的思想,利用预训练的模型(如BERT、RoBERTa等)作为初始参数,通过在命名实体识别的数据集上进行微调,来提升NER的性能。它可以在少量标注数据上快速训练,并在各种语言和领域中展现出优良的泛化能力。
  3. Neural Architecture Search (NAS):利用神经网络搜索算法和强化学习,生成NN结构,并进行自动化架构搜索。NAS可以使模型具有更好的鲁棒性和泛化性能,并在不使用任何人工特征编码的情况下提高命名实体识别的准确性。

这些算法常用于实际应用中,并取得了良好的效果。当然,还有很多其他的NER算法,如模板匹配、CRF、SVM等,每种算法都有自己的优缺点,需要根据具体场景进行选择和组合。

3.2 小样本下NER

针对小样本问题,可以使用迁移学习或元学习等技术来解决。迁移学习是指将预先训练好的模型应用于新任务中,从而将新任务的训练时间缩短,但前提是预训练模型和待解决的任务有一定的相关性。元学习则是一种针对小样本学习问题的方法,它能够通过学习如何学习来提高模型在少量样本的情况下的泛化能力。

针对小样本NER问题,下面介绍两种常用的小样本模型:

  1. Few-shot learning模型:该模型是一种基于元学习的模型,它可以用较少的数据进行训练,同时在新领域中进行良好的泛化,具有很强的适应性。Few-shot learning的主要思想是利用少量标注数据来训练一个编码器,通过训练来学习具有较好泛化性能的模型。在NER任务中,通过将少量文本做为一个任务,来进行训练,该模型可以在稀缺标注数据的情况下,识别新类别的命名实体。
  2. Adaptive Span模型:该模型可以自适应地在输入序列中发现实体边界,从而进一步提高命名实体识别的性能。它可以利用现有的NER模型和表示学习方法,在少量数据情况下快速训练,并在大规模未标记的数据上表现优秀。Adaptive Span模型实现了端到端的自适应边界预测,它通过动态地选择每个输入序列中的子区间,来预测给定实体类别的标签。