当前位置: 首页 > news >正文

使用 lstm + crf 实现NER

条件随机场CRF

前言

  • CRF是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布的模型。
  • 特点:假设输出随机变量构成马尔卡夫随机场。
  • CRF可以用于不同的预测问题。
  • 但是主要讨论线性链条件随机场,这时问题变成了由输入序列对输出序列的判别模型,形式为对数线性模型,学习方法通常是极大似然估计火正则化的极大似然估计
  • 三个基本问题:概率计算问题,学习问题,预测问题

Step1:概率无向图模型

概率无向图又称马尔可夫随机场。是一个可以由无向图表示的联合概率分布。

1.模型定义

定义无向图表示的随机变量之间存在成对马尔可夫性,局部马尔可夫性,全局马尔可夫性。

  • 成对马尔可夫性:u和v式无向图G中任意两个没有边连接的节点,对应Y_u和Y_v。其他所有节点为O,对应Y_o。成对马尔可夫性指给定Y_o的条件下Y_u和Y_v是条件独立的

P ( Y u , Y v ∣ Y O ) = P ( Y u ∣ Y O ) P ( Y v ∣ Y O ) P(Y_u,Y_v|Y_O)=P(Y_u|Y_O)P(Y_v|Y_O) P(Yu,YvYO)=P(YuYO)P(YvYO)

  • 局部马尔可夫性:

在这里插入图片描述

  • 全局马尔可夫性:

在这里插入图片描述

2.概率无向图模型

无向图G中,联合概率分布满足成对,局部或全局马尔可夫性,就称此联合概率分布为概率无向图模型或马尔可夫随机场

3.因子分解

概率无向图模型最大的特点就是易于因子分解。

  • 团与最大团的概念

概率无向图模型的联合概率可以表示为最大团上的随机变量的函数的乘积的形式。

在这里插入图片描述

Step2:条件随机场的定义

1.定义

在这里插入图片描述

2.参数化形式

在这里插入图片描述

3.简化形式

在这里插入图片描述

4.矩阵形式

在这里插入图片描述

Step3:概率计算

给定条件随机场P(Y|X),输入序列 x 和输出序列 y ,计算条件概率P(Y_i=y_i | x),P(Y_{i-1} = y_{i-1} , Y_i = y_i | x)以及相应的数学期望的问题。

1.前向-后向算法

  • 前向向量 α i ( x ) \alpha_i(x) αi(x)

在这里插入图片描述

递推公式:

或

  • 后向向量 β i ( x ) \beta_i(x) βi(x),同理

在这里插入图片描述

  • Z(x)由前向-后向向量得到

在这里插入图片描述

2.概率计算

在这里插入图片描述

3.期望值计算

在这里插入图片描述

Step4:学习算法

具体优化实现算法:改进迭代尺度法IIS、梯度下降法、拟牛顿法

1.改进迭代尺度法

在这里插入图片描述

其中,

δ = ( δ 1 , δ 2 , . . . , δ K ) T \delta=(\delta_1,\delta_2,...,\delta_K)^T δ=(δ1,δ2,...,δK)T为向量增量,更新参数为 w + δ w+\delta w+δ

在这里插入图片描述

2.BFGS法

在这里插入图片描述

Step5:预测算法

给定条件随机场 P ( Y ∣ X ) P(Y|X) P(YX)和输入序列(观测序列)x,求条件概率最大的输出序列(标记序列) y ∗ y^* y

即对观测序列进行标注

维特比算法

在这里插入图片描述

  • 其中,

在这里插入图片描述

在这里插入图片描述

Step6:PyTorch-crf

note : pytorch-crf 暴露为一个单个 CRF 类,这个类继承自 Pytorch 的 nn.Module

  • 所以他能做到一个普通的网络都能能做到的事情
    • 比如,把 module 转到 设备中
    • 前向传播和反向传播
    • module 的参数管理等
  • 知道以上那一点,一切都好说了

在这里插入图片描述

在这里插入图片描述

计算概率

给定发射分数的,计算一个序列标签的对数概率

在这里插入图片描述

如果有填充,需要传递掩码矩阵张量

在这里插入图片描述

Step7:使用 LSTM + Pytorch-CRF 实现 NER

1.数据集

在这里插入图片描述

在这里插入图片描述

  • 格式

    • 貌似是个 tsv,可以利用这一点对文件进行分析
    • 空行表示一个句子结束
    • 乍一看数据集质量貌似不太好
  • 思路

    • 数据集不多,类别分的那么多没必要,把NAM和NOM合并好了,只保留 GPE, LOC, ORG, PER
    • 用空行表示一句的隔断
    • 写一个 脚本 吧~把数据保存成字典(代码在上方资源处自取)

    在这里插入图片描述

    • 后来又写了两个,把词汇表和类别顺便加上了

    在这里插入图片描述

2.代码

  • 上方资源处自取

  • 这里我嫌收敛太慢了,使用了学习率调度器,调度策略采用了第一次退火到最大学习率的学习率调度器。

    scheduler = OneCycleLR(optimizer, max_lr=0.05, steps_per_epoch=len(train_loader), epochs=num_epochs)
    
    • 最大学习率是 0.05,优化器学习率是 5e-4 ,目的是前期加速收敛
    • 也就是说,学习率会从 0.0001 上升到 0.01 再慢慢退回到 0.0001

    在这里插入图片描述

  • 分为标准的 训练集,开发集,测试集

    • 每轮打印信息

      在这里插入图片描述

  • 最终结果,貌似没有完全收敛

    • 因为这我的 colab 突然坏掉了,不能用 gpu,所以这次是用自己电脑跑的,苹果的M 芯片还是慢了点,不如 A100。而且这周有事,我就训练了两次就不整了

    在这里插入图片描述

  • 最后,我把双向改单向貌似效果好多了,但是没时间了,有急事要出去了

    • 10轮就差点干了之前50轮的效果
  • 在这里插入图片描述

相关文章:

使用 lstm + crf 实现NER

条件随机场CRF 前言 CRF是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布的模型。特点:假设输出随机变量构成马尔卡夫随机场。CRF可以用于不同的预测问题。但是主要讨论线性链条件随机场,这时问题变成了由输入序列对输出序列的判别模型&…...

【牛掰】这款RPA多平台引流获客软件已正式上线,助您日引流1000+

哈喽大家好我是年哥,自从上次与大家团购了那款基于autojs开发的RPA引流获客的源码,经过本缝合怪不断地修修补补,终于将它变成自己的了,还为它起了个魔幻的名字:获客宝RPA。尽管部分功能还有点瑕疵,但是不管…...

Python的包管理工具pip安装

Python的包管理工具pip安装 一、安装步骤1.检查 pip是否已安装2.安装 pip方法一:通过 ​ensurepip​ 模块安装(推荐)方法二:通过 ​get-pip.py​ 脚本安装(经常应为网络域名问题连接不上) 3.验证pip安装4.创建别名5.更新pip 二、常…...

《AIGC 时代程序员的应对之策》

在 AIGC 大语言模型不断涌现、AI 辅助编程工具日益普及的当下,程序员的工作方式确实面临着深刻变革。对于程序员来说,如何应对这一趋势成为了至关重要的问题。 一方面,有人担忧 AI 可能取代部分编程工作。不可否认,随着技术的发展…...

51单片机系列-串口(UART)通信技术

🌈个人主页: 羽晨同学 💫个人格言:“成为自己未来的主人~” 并行通信和串行通信 并行方式 并行方式:数据的各位用多条数据线同时发送或者同时接收 并行通信特点:传送速度快,但因需要多根传输线&#xf…...

使用k8s部署java前后端服务

一、项目架构 前端、后端、数据库 1)前端 静态的资源:img css html js文件 js:axios、ajax 2)后端 提供数据:根据web前端发送的请求,从数据库中获取数据 请求都是无状态的,如何保持会话 …...

使用docker创建zabbix服务器

首先保证服务器已正常安装docker,然后执行下面这几个容器创建命令: #创建MySQL容器 docker run --name mysql-server -t --restartunless-stopped -e MYSQL_DATABASE"zabbix" -e MYSQL_USER"zabbix" -e MYSQL_PASSWORD"zabbix_…...

nodejs 016: javascript语法——解构赋值({ a, b, c } = {})=>{console.log(“Hello“);}

在 JavaScript 中,函数参数 { a, b, c } {} 的含义是在函数定义时提供一个默认的对象参数。这个对象包含了三个可选的属性 a, b, 和 c。如果没有传递参数或者传递的参数是一个非对象类型的值,那么函数内部将使用一个空对象 {} 作为参数。 示例 const …...

【人人都能看懂的大模型原理】(一)

前言 当前大模型的学习资源呈现爆发趋势,各种角色的人都用自己的视角参与到大模型的讨论。但是我发现这些学习资源都有几个特点:只摆事实而不讲道理;只讲应用可能而不提实现代价;只讲可能性而缺乏实操经验分享;洞察材…...

JMeter源码解析之JMeter命令行新增命令

JMeter源码解析之JMeter命令行新增命令 需求描述 需要新增一条命令,能够在JMeter命令行中能够展示输入对应的JMeter命令,能够展示对应的命令信息 查看命令效果如下: apache-jmeter-5.1\bin>jmeter --? Copyright © 1999-2024 The …...

YOLOv8 Windows c++推理

#添加一个**yolov8\_。onx **和/或**yolov5\_。Onnx **模型(s)到ultralytics文件夹。 #编辑**main.cpp**来改变**projectBasePath**来匹配你的用户。#请注意,默认情况下,CMake文件将尝试导入CUDA库以与opencv dnn (cuDNN) GPU推理一起使用。 #如果你的Op…...

一文读懂Python中的Popen函数

目录 1. 基本知识2. Demo 1. 基本知识 在Python中,Popen 是 subprocess 模块中的一个函数,它用于创建一个子进程并与其进行通信 subprocess.Popen():Popen 类用于创建和管理子进程 与 os.system() 或 os.popen() 相比,Popen 提供…...

07-阿里云镜像仓库

07-阿里云镜像仓库 注册阿里云 先注册一个阿里云账号:https://www.aliyun.com/ 进入容器镜像服务控制台 工作台》容器》容器服务》容器镜像服务 实例列表》个人实例 仓库管理》镜像仓库》命名空间》创建命名空间 仓库管理》镜像仓库》镜像仓库》创建镜像仓库 使…...

net core mvc 数据绑定 《2》

mvc core 模型绑定 控制绑定名称 》》》Bind 属性可以用来指定 模型应该 绑定的前缀 public class MyController : Controller {[HttpPost]public ActionResult Create([Bind(Prefix "MyModel")] Ilist<MyModel> model){// 模型绑定将尝试从请求的表单数据中…...

文件服务器FastDFS 消息队列中间件RabbitMQ

新标签页 (chinaunix.net) FastDFS - Browse Files at SourceForge.net 一、FastDFS Tracker和Storage&#xff1a; tracker用来管理所有的storage&#xff0c;只是管理服务器&#xff0c;负责负载均衡。 storage是存储服务器&#xff0c;每一个storage服务器都是一个单独的个…...

工作纪实58-Idea打jar包

有时候需要配合算法使用spark定时DP&#xff0c;调用java相关的jar包做数据处理 idea打jar包有以下三种场景 SpringBoot的Maven项目【Maven打包即可】非SpringBoot的Maven项目【添加maven打包参数&#xff0c;使用Maven打包】 借助maven的配置进行打包&#xff0c;新增以下配置…...

ELK-03-skywalking监控linux系统

文章目录 前言一、下载node_exporter二、启动node_exporter三、下载OpenTelemetry Collector四、启动OpenTelemetry Collector4.1 将配置文件下载到同级目录4.2 启动 五、查看总结 前言 skywalking安装完成后&#xff0c;开始我们的第一个监控-监控linux系统。 参考官方文档&a…...

HEITRONICS TC13红外辐射高温计CT13 INFRARED RADIATION PYROMETER CT13

HEITRONICS TC13红外辐射高温计CT13 INFRARED RADIATION PYROMETER CT13...

开源图像降噪算法与项目介绍【持续更新】

Intel Open Image Denoise 介绍&#xff1a;Intel Open Image Denoise&#xff08;OIDN&#xff09;是一个开源库&#xff0c;它提供了一系列高性能、高质量的去噪滤镜&#xff0c;专门用于光线追踪渲染的图像。这个库是Intel Rendering Toolkit的一部分&#xff0c;并且是在宽…...

RealSense、ZED 和奥比中光Astra几款主流相机介绍及应用

以下是英特尔 RealSense、Stereolabs ZED 和奥比中光Astra几款相机的详细对比&#xff0c;包括参数、性能以及二次开发等支持&#xff0c;附带代码示例。 详细信息对比和二次开发示例 1. 英特尔 RealSense (例如 D435/D455) 深度技术&#xff1a;立体视觉 红外投影分辨率&a…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...