BiLSTM-CRF模型 我必须要你能看懂

news2024/12/25 9:22:29

文章目录

  • BER任务介绍
    • BiLSTM模型介绍
  • ----------------------------------------------------------------------------------------------------
  • 模型细节
    • 如果没有CRF层会是什么样
  • CRF 层
    • CRF原理:
    • 一、CRF基础
      • 1、条件概率
      • 2、图、无向图
      • 3、概率图
      • 4、马尔可夫性
      • 5、概率无向图模型(又称马尔可夫随机场)
      • 6、团、最大团
      • 7、无向图的因子分解
      • 8、Hammersley-Clifford 定理
      • 8、条件随机场
      • 9、线性链的条件随机场
      • 10、线性链条件随机场公式
    • 三大问题:
      • 1、概率计算问题
      • 2、学习问题
      • 3、预测问题
        • viterbi 算法
    • CRF层的作用:CRF层可以学习到句子的约束条件
    • 评估指标:
  • BER任务实现:
  • 参考:

BER任务介绍

命名实体识别(Named Entity Recognition, NER)
命名实体识别(Named Entity Recognition, NER)的工作,就是从一段文本中抽取到找到任何你想要的东西,可能是某个字,某个词,或者某个短语。通常是用序列标注(Sequence Tagging)的方式来做,老 NLP task 了

规定在数据集中有两类实体,人名和组织机构名称。
在数据集中总共有5类标签:
B-Person (人名的开始部分)
I- Person (人名的中间部分)
B-Organization (组织机构的开始部分)
I-Organization (组织机构的中间部分)
O (非实体信息)

BiLSTM模型介绍

BiLSTM,指的是双向LSTM;CRF指的是条件随机场。
模型总览:
在这里插入图片描述
输入:模型输入是字符特征,
输出:每个字符对应的预测标签。

----------------------------------------------------------------------------------------------------

模型细节

首先,句中的每个单词是一条包含词嵌入和字嵌入的词向量,词嵌入通常是事先训练好的,字嵌入则是随机初始化的。所有的嵌入都会随着训练的迭代过程被调整。
其次,BiLSTM-CRF的输入是词嵌入向量,输出是每个单词对应的预测标签。

在这里插入图片描述
如下图所示,BiLSTM层的输出表示该单词对应各个类别的分数。
如W0,BiLSTM节点的输出是1.5 (B-Person), 0.9 (I-Person), 0.1 (B-Organization), 0.08 (I-Organization) and 0.05 (O)。这些分数将会是CRF层的输入。 所有的经BiLSTM层输出的分数将作为CRF层的输入,类别序列中分数最高的类别就是我们预测的最终结果。

如果没有CRF层会是什么样

即使没有CRF层,我们照样可以训练一个基于BiLSTM的命名实体识别模型,如下图所示。

在这里插入图片描述
因为BiLSTM模型的结果是单词对应各类别的分数,我们可以选择分数最高的类别作为预测结果。如W0,“B-Person”的分数最高(1.5),那么我们可以选定“B-Person”作为预测结果。同样的,w1是“I-Person”, w2是“O”,w3是 “B-Organization” ,w4是 “O”。

尽管我们在该例子中得到了正确的结果,但实际情况并不总是这样,而是下面这样:

在这里插入图片描述

很明显BiLSTM识别出来的实体标签并没有实体的起始标识B和E,显然,这次的分类结果并不准确。

CRF 层

CRF原理:

一、CRF基础

1、条件概率

一个随机事件发生的概率并非是一个绝对的概念,事实上,当另一个与其相关的随机事件发生时,该事件再发生的概率往往会随之改变。
在这里插入图片描述

2、图、无向图

在这里插入图片描述

3、概率图

概率图模型是指由图表示的概率分布

详细说如下:设有联合概率分布P(Y),Y是一组随机变量。由无向图 G=(V,E)表示概率分布P(Y)。
即再图G中,结点v表示随机变量,e表示随机变量间的依赖关系。

4、马尔可夫性

马尔可夫性包含成对马尔可夫性局部马尔可夫性全局马尔可夫性
4.1 成对马尔可夫性:没有边直接相连接的两个点(变量)相互独立
在这里插入图片描述

4.2 局部马尔可夫性
在这里插入图片描述
在这里插入图片描述
4.3 全局马尔可夫性:
在这里插入图片描述

5、概率无向图模型(又称马尔可夫随机场)

马尔可夫随机场,是一个可以由无向图表示的联合概率分布。
在这里插入图片描述
对于给定的概率无向图模型,我们希望将整体的联合概率写成若干子联合概率的乘积的形式,也就是将联合概率进行因子分解,这样便于模型的学习与计算。事实上,概率无向图模型的最大的特点就是易于因子分解。
在进行因子分解时需要引入团、最大团等概念。

6、团、最大团

在这里插入图片描述

7、无向图的因子分解

将概率无向图模型的联合概率分布表示为最大团的随机变量的函数的乘积形式的操作,称为概率无向图的因子分解。
在这里插入图片描述

8、Hammersley-Clifford 定理

无向图的因子分解总结如下:
在这里插入图片描述

8、条件随机场

我们前面讲到马尔可夫随机场,这个是指输出变量Y的形式,并没有指定输入变量X。条件随机场的条件,就是指给定输入变量X。所以很多同学会把概率无向图(马尔可夫随机场)与条件随机场搞混淆,在这里马尔可夫随机场是指随机变量Y,条件随机场是指给定随机变量X的条件下,随机变量Y的马尔可夫随机场。在这里插入图片描述

9、线性链的条件随机场

在这里插入图片描述
在这里插入图片描述

10、线性链条件随机场公式

tk和sl都是特征函数,其中tk时转移特征函数,sl是状态特征函数。因为它们都是依赖于位置的,tk依赖于当前位置和前一位置,sl依赖于当前位置,所以两个函数又都是局部特征函数
在这里插入图片描述
4、条件随机场例子

三大问题:

1、概率计算问题

2、学习问题

3、预测问题

viterbi 算法

参考:如何通俗地讲解 viterbi 算法?
CRF层中的损失函数包括两种类型的分数,而理解这两类分数的计算是理解CRF的关键

1、发射分数(Emission score)
发射概率:指的是给定词性生成单词的概率
2、转移分数
转移概率:表示给定一个词性下面一个词性的概率(表示介词后面的词是名词的概率)

CRF层将BiLSTM的Emission_score作为输入,输出符合标注转移约束条件的、最大可能的预测标注序列。

CRF层的作用:CRF层可以学习到句子的约束条件

CRF层可以加入一些约束来保证最终预测结果是有效的。这些约束可以在训练数据时被CRF层自动学习得到。

可能的约束条件有:

1、句子的开头应该是“B-”或“O”,而不是“I-”。
2、“B-label1 I-label2 I-label3…”,在该模式中,类别1,2,3应该是同一种实体类别。比如,“B-Person I-Person” 是正确的,而“B-Person I-Organization”则是错误的。
3、“O I-label”是错误的,命名实体的开头应该是“B-”而不是“I-”。
有了这些有用的约束,错误的预测序列将会大大减少。

从实验的角度可以简单说说,就是 LSTM 只能通过输入判断输出,但是 CRF 可以通过学习转移矩阵,看前后的输出来判断当前的输出。这样就能学到一些规律(比如“O 后面不能直接接 I”“B-brand 后面不可能接 I-color”),这些规律在有时会起到至关重要的作用

评估指标:

大多数 NLP task 的评价指标有这三个:Precision / Recall / F1Score,Precision 就是找出来的有多少是正确的,Recall 是正确的有多少被找出来了,F1Score是二者的一个均衡分。这里有三点常识

方法固定的条件下,一般来说,提高了 Precision 就会降低 Recall,提高了 Recall 就会降低 Precision,结合指标定义很好理解
通常来说,F1Score 是最重要的指标,为了让 F1Score 最大化,通常需要调整权衡 Precision 与 Recall 的大小,让两者达到近似,此时 F1Score 是最大的
但是 F1Score 大,不代表模型就好。因为结合工程实际来说,不同场景不同需求下,对 P/R 会有不同的要求。有些场景就是要求准,不允许出错,所以对 Precision 要求比较高,而有些则相反,不希望有漏网之鱼,所以对 Recall 要求高

BER任务实现:

1、biLSTM_CRF模型在tensorflow中的实现

参考:

1、命名实体识别(NER):BiLSTM-CRF原理介绍+Pytorch_Tutorial代码解析
2、CRF条件随机场的原理、例子、公式推导和应用
3、《统计学习方法》- 条件随机场

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/53644.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rpm包常用命令指南

目录 rpm包查看一般命令 查看系统已安装软件相关命令 卸载rpm包 按照yum源的repo 卸载软件 查询系统已安装的rpm包 查询系统中一个已知的文件属于哪个rpm包 查询已安装的软件包的相关文件的安装路径 查询一个已安装软件包的信息 查看已安装软件的配置文件 查看已安装软…

一文带你走进网络编程

网络编程 什么是网络编程: 就是用来实现网络互通的不同计算机运行程序之间进行数据的交换的编程 网络模型 OSI(模型):七层协议 应用层: 如: HTTP协议 主要解决如何包装数据,用于通信的应用程序和用于消息传输的底层网络提供接口,提供常见的网络应用…

VM系列振弦采集模块全频段扫频

VM系列振弦采集模块全频段扫频 根据起始频率与终止频率范围,频率由低向高向传感器发送渐进的扫频激励信号,直到传感器产生共振并返回共振电流信号。在输出激励信号的过程中,激励信号的频率变化由频率步进和信号周期数量决定。 此激励方法较为…

Day2--使用ESP32双核、U8G2 OLED任务、任务以绝对频率运行、任务内存优化

使用ESP32双核 ESP32-C系列为单核,ESP32的core0主要运行WI-FI和蓝牙 API: xPortGetCoreID() 获取当前任务运行的核心 xTaskCreate() 有系统选择运行核心,优先选择0 xTaskCreatePinnedToCore() 指派任何给指定核心 Arduino的setup和loop默认运行在core1 …

初识Thread类与创建多线程的方法

目录 1.创建一个线程 2.start()方法与run()方法 3.查看线程 4.创建线程的各种方法 4.1实现Runnable接口 4.2使用匿名内部类 4.3使用匿名内部类,实现Runnable 4.4使用Lambda表达式 1.创建一个线程 Java操作线程最核心的类就是Thread类 创建线程有很多方法,下面我们写一…

[附源码]计算机毕业设计springboot人体健康管理app

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

SpringBoot结合XXL-JOB实现定时任务

《从零打造项目》系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建SpringBoot集成Mybatis项目实操SpringBoot集成MybatisPlus项目实操SpringBoot集成Spring Data JPA项目实操 数据库变更管理 数据库变更管理:Liquibase…

阿里自爆秋招面试笔记,福音来了

前言 最近又掀起了一股面试招聘风潮,我们一边要巩固基础知识、备战试题的同时,另外与面试官的对达沟通也直接影响你的成功与否!那我们应该如何做好准备呢? ​先说面试过程,今天阿鑫给大家整理了这三个小经验&#xf…

笔试强训Day2

选择题 1. 思路:e是按指数类型输出,f是按照浮点数类型输出(输出只有f不用lf) 输出默认是右对齐,-则是左对齐,四位精度就是小数点后保留几位用.4,输出字符数用整数30在小数点前表示即可。 如果…

MySQL数据库复习——索引

目录 一、什么是索引?索引的作用 二、索引的简单使用 三、索引背后的数据结构 1、B 树 2、B 树 一、什么是索引?索引的作用 索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指…

Nacos 配置中心

1. 什么是配置中心 1.1 什么是配置 应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数、启动参数等。 配置主要有以下几个特点: 配置是独立于程序的只读变…

java基础讲义03

java基础讲义一 流程控制1.1流程控制语句介绍1.2顺序结构二 选择控制2.1 选择结构介绍2.2 选择语句if2.2.1 格式12.2.2 if格式22.2.3 if格式32.3 选择语句switch2.3.1 switch语句介绍2.3.2 switch注意事项2.3.3 switch面试题2.3.4 if语句与switch语句区别三 循环语句3.1 循环语…

Yolov5 计算访存量MAC与计算量FLOPS

说明:因为yolov5函数中已经计算了 FLOPS,因此如果想要计算访存量那么只需按照flops的位置,添加访存量的计算即可 一、先记住计算量和访存量的公式: 二、找到计算FLOPS的位置,并添加访存量 yolov5中计算flops的位置在torch_utile…

微服务外交官-Feign

引言 书接上篇 负载均衡组件Ribbon核心-LoadBalanced-下 我们讲完了Ribbon负载均衡原理之后,接下讲一个SpringCloud Alibaba新的组件:Fegin 前面章节我们使用Ribbon方式实现负载均衡版的远程调用, //方案4:使用Ribbon方式--带负…

不知道10年老电脑如何重装系统?其实很简单

肯定很多朋友家里都有一两台吃灰的10年老电脑了,当我们有空可以把它拿出来耍耍的时候,却发现电脑无法开机了,想拿去修又觉得不太值得。其实我们可以先试着给电脑重装系统,这样也能先排查系统是否有问题。如果你不知道这台10年老电…

【Linux】Linux编译器-gcc/g++使用

大家好我是沐曦希💕 文章目录1.背景知识1.1 预处理1.2 编译(生成汇编)1.3 汇编(生成机器可识别代码)1.4 链接接(生成可执行文件或库文件)1.5 习题习题一习题二2.函数库2.1 动态库2.2 静态库3.g的基本使用4.…

数据结构之二叉树

数据结构之二叉树什么是二叉树二叉树的特殊类型二叉树的遍历方式二叉树的叶子结点求法二叉树的高度求法什么是二叉树 二叉树(Binary tree)是树形结构的一个重要数据类型,想要成为二叉树必须满足两个条件。1、本身是有序树。2、树中包含的各个…

【小程序】导航栏和内容页面联动效果实现

💭💭 ✨: 微信小程序导航栏和页面联动   💟:东非不开森的主页   💜: 因为很多东西来不及去做去看可是时间很快总是赶不上,所以要去成长呀💜💜   🌸: 如有错…

React—— HelloWorld

React 学习笔记Hello WorldJSX (JavaScript XML) 语法规则JavaScript 语法函数组件、类组件 & 属性 props组合组件生命周期函数 & 状态 state事件处理refs受控组件、非受控组件 & 高阶函数、函数的柯里化npm参考Hello World <!DOCTYPE html> <html lang&…

Request请求转发与Respones请求重定向有什么区别?

目录&#xff1a; 1.Request请求转发 2.Respones请求重定向 3.关于转发和重定向的路径问题 1.Request请求转发 请求转发(forward)是一种在服务器内部的资源跳转方式。 (1)浏览器发送请求给服务器&#xff0c;服务器中对应的资源A接收到请求 (2)资源A处理完请求后将请求发…