序列标注任务

news2024/11/17 11:39:30

序列标注任务

  • 1.序列标注任务
  • 2.序列标注--中文分词
    • 2.1数据标注方法一
    • 2.2数据标注方法二
  • 3.序列标注--NER
    • 3.1序列标注--CRF
    • 3.2篱笆墙解码
    • 3.3beam search
    • 3.4维特比解码
    • 3.5效率对比
    • 3.6评价指标
  • 4.基于规则-NER
    • 4.1序列标注--文本加标点
    • 4.2序列标注--句子级别分类
    • 4.3实体抽取问题
    • 4.4实体抽取初始优化方法-远程监督

1.序列标注任务

释义:对于序列中的每个时间步做分类,得到每个时间步的标签。

对于输入:X1X2X3X4….Xn
预测输出:Y1Y2Y3Y4……Yn

应用场景:分词,词性标注,句法分析,命名实体识别等

2.序列标注–中文分词

2.1数据标注方法一

举例: 上 海 自 来 水 来 自 海 上
目标: 对于每一个字,我们想知道它是不是一个词的边界;通过如下所示,将词的边界用1表示;其他用0表示;就可以通过数字表述分词,从而训练模型。

010010111

2.2数据标注方法二

如图示:
在这里插入图片描述

表示逻辑: B:词左边界;E:词右边界;M:词内部;S:单字;

优势: 相对于通过0,1标注来说,通过B、E、M、S进行标注会增加训练的参数量,和训练语料的信息,因为标注更多。效果理论上会较好些。

3.序列标注–NER

释义: NER叫命名实体识别,实体的概念是抽象的,可以是地名、姓名、事件、起因等,可以理解为对象编程中的对象。

应用场景: 语音通话后,识别文本抽取实体,进行购买机票等等后续操作;OCR识别文本后抽取实体填写相关表单信息等。

数据标注逻辑
在这里插入图片描述

  1. BA:地址左边界;MA:地址内部;EA:地址右边界
  2. BO:机构左边界;MO:机构内部;EO:机构右边界
  3. BP:人名左边界;MP:人名内部;EP:人名右边界
  4. O:无关字

如果需要新增新的实体,就需要加入新的标注和计算。

后面训练的模型,选择多种多样:BERT、LSTM等。
示意图:在这里插入图片描述

3.1序列标注–CRF

释义: CRF叫做条件随机场,是为解决序列标注中,实体抽取存在得到的分类结果异常的情况。

举例:

  1. B:词左边界;E:词右边界;M:词内部;S:单字;
    问题: 模型对每个词进行解码分类时,可能会出现BBM的情况,两个词都是B的情况应该是极少或者不合理的,这个时候需要结合前后的词综合考虑解码的结果。

结论: 从上面问题中,得知需要训练一个模型,用于表示B、E、M、S之间相邻出现的概率,这个模型就叫条件随机场。

如下图所示:
在这里插入图片描述
下面是一个实际的训练结果:
在这里插入图片描述
释义: 这里添加了开始、结束两个位置编码,是为了便于预测和学习第一个词首词的出现概率。

使用方法简介:

1.通过上述方法,得到了相邻之间的分类出现的概率。
2.正常采用模型训练输出的是某个位置上出现分类类别的概率。如下图:

在这里插入图片描述

3.就从纵向的概率,和横向获取的概率,两个进行相加,最大的概率即为解码的内容。
4.纵向预测的某个位置的输出分类概率称为发射矩阵

CRF实现的版本有很多,具体逻辑也有不同,介绍pytorch-crf版本的公式
在这里插入图片描述

  1. 输入序列X,输出序列为y的分数为S;A为转移矩阵;P为发射矩阵。即转移矩阵计算从前一个位置输出与当前位置输出的概率;发射矩阵计算当前位置的概率。

在这里插入图片描述

  1. 输入序列X,预测输出序列为y的概率P;即分子为当前预测出现的转移矩阵和发射矩阵概率和;分母为所有情况的概率之和。
    在这里插入图片描述
    3.对上述进行log计算变化,即结果为最大化,越大说明当前种取值的路径是最可靠的。

在这里插入图片描述
4.由于模型训练时,是求最小值,所以需要对取相反数。

3.2篱笆墙解码

引子: 上面CRF算出了相邻节点的分数,模型给出了每个节点的分数,如何快速的寻找出最优的路径就是篱笆强解码的事情。
在这里插入图片描述
上面图中可得: 有多个节点,节点之间有多条路径,篱笆墙解码的价值就是高效的寻找出最优路径

3.3beam search

在这里插入图片描述
释义:

1.beam search算法beam_size=2表示需要保留前两条概率最大的路径,比如上图
2.如果一个句子:有D个字,每个字有D个分类,那么穷尽出所有的路径则需要D^D;
3.采用beam search需要计算的路径<= beam_size*D*D
每一步有beam_size选型,到下一步需要计算beam_sizeD;一共D步,当然第一步只有1D,这里公式并不完全正确,做一个直观的表示

3.4维特比解码

在这里插入图片描述
释义:

1.维特比是每步的计算都保留在每个节点上的最优解。
2.比如在C节点上,C1会计算上一步B到它的所有路径,并保留一条;C2、C3同样如此
所以计算的次数为:DD,而一共有D个节点,所以维特比的计算次数为:DD*D
3.即得到图中内容,在每一步都会保留D条路径。

3.5效率对比

  1. 假设共有n组(列)节点,每一组节点平均数量为D
  2. 穷举路径计算复杂度为 Dn
  3. 维特比解码复杂度为n * D2
  4. BeamSearch解码复杂度为 n * D * B, B为BeamSize
    情况分析:
    1.上面可以得到维特比解码和BeamSearch的解码复杂度主要跟每个节点的候选项的多少有关。
    2.在特殊情况,即序列的后面节点对前面的概率影响比较大时,比较难拿到最优饥解,比如:西北、西红、西南中,西红概率肯定小,但是西红柿肯定比西北柿、西南柿概率大。

3.6评价指标

在这里插入图片描述
释义:

1.准确率,是所有预测正确的样本和所有预测的比值。
2.精度率:精确率是指模型预测为正例的样本中真正为正例的比例。
3.召回率:召回率是指实际为正例的样本中被模型正确预测为正例的比例。
4.F1 分数是精确率和召回率的调和平均值
5.TP(True Positives):真正例,即模型正确预测为正类的数量。
6.FP(False Positives):假正例,即模型错误地预测为正类的数量。
7.FN(False Negatives):假负例,即模型错误地预测为负类的数量。
8.TN(True Negatives):真负例,即模型正确预测为负类的数量。

其中的F1有两种计算方式:

  1. Macro-F1
    对所有类别的F1值取平均

  2. Micro-F1
    将所有类别的样本合并计算准确率和召回率,之后计算F1

区别区别在于是否考虑类别样本数量的均衡。比如,有两个实体抽取任务,分别是抽取时间和人名;在样本中,有1个时间,99个人名;时间抽取错误,即正确率0%;人名全部抽取错误,正确率为100%;按照第一种算法:F1=50%;第二种算法:F1=99%。一般,在实际任务中,两个方式都会算,如果结果差距大,说明样本不均衡。

4.基于规则-NER

  1. 常使用正则表达式来匹配特定句式、词表。(我喜欢xx;句式;或者是有个词表,按照词表中的实体从样本中抽取)

  2. 原则上,规则能处理的好的情况下,尽量不用模型

  3. 使用规则的方式同样可以计算准确率和召回率

  4. 规则的顺序有时会影响结果,调试时需注意(举例:上海南)

4.1序列标注–文本加标点

释义: 是一种粗粒度的分词
标注前:
经过语音识别或机器翻译可能会得到没有标点符号的文本此时进行自动文本打标有助于增强文本可读性
标注后:
经过语音识别,或机器翻译,可能会得到没有标点符号的文本。此时进行自动文本打标,有助于增强文本可读性

4.2序列标注–句子级别分类

背景: 在文章中,存在某些关键句子、总结性句子,需要把它抽取出来。即关键句的实体抽取操作。
逻辑:

  1. 对于一个段落中的 多句话,对每句话进行分类
  2. paragraph(文章) -> sentence(句子) -> token
  3. 将每句话进行向量化,之后仅需进行序列标注,这里把句子当成字词将进行处理。

4.3实体抽取问题

问题: 假如要抽取的实体有标签重叠如何处理?

举例:
我周末去了北京博物馆看展览
地点 B E
机构 B M M M E
说明: 在这种情况下,一个序列标注模型,没有办法区分开地点和机构,因为这句话即说明地点:北京;也说明机构:北京博物馆;在训练时,标注也有问题。

解决方案

  1. 对于每种实体使用独立模型
    a.是抽取地点的训练一个模型、抽取机构训练一个模型,一个任务分别通过两个模型进行抽取
    b.在模型设计上可以共用主体的向量部分,在分类层,划分不通的模型;比如,前面都是同一个bert;后续根据抽取的实体不同,训练不同的线性层。
  2. 生成式模型:直接不存在区分的问题,模型直接跨过分类,告诉结果。

4.4实体抽取初始优化方法-远程监督

在这里插入图片描述
这是一种思想,是在有较大语料,但是却没有标注的情况下,使用。
逻辑:

1.拿到部分语料,通过正则,找到一些固定的:北京、西安、医院的实体,并通过正则完成自动的标注。
2.通过正则获取到部分标注数据,训练模型,模型能够一定程度上识别实体
3.通过模型具体的泛化性,用语料,让其找出实体,这样就会获得新的实体标注内容:成都、重庆、纽约等
4.通过模型的标注,获得更多的实体,使用正则再次自动获取标注数据;整个过程就是远程监督

注意: 这个方法是有瓶颈的,由于通过正则去寻找到标注,是有一些错误情况的,最后模型的能力到达某个零界点时,就无法通过该方法继续提升了。

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

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

相关文章

田纳西州橡树岭全球最快的超级计算机名为Frontier

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

【VuePress 个人博客搭建】

个人博客搭建免服务器 一、安装 VuePress1、创建文件夹并进入该目录2、初始化项目3、安装VuePress4、在 package.json 中修改 scripts5、创建目录和配置文件6、创建第一篇文档Hello VuePress7、 运行项目二、部署1、新建github 仓库2、在 config.js 添加 base 路径配置:3、创建…

使用 Parallel 类进行多线程编码(下)

2.Parallel.ForEach() 的使用 从 ForEach() 这个名字可以看出该方法是用来遍历泛型集合的&#xff0c;新建一个 ASP.NET Core Web应用的项目&#xff0c;如下&#xff1a; 在 Index.cshtml.cs 文件中增加一个 UserInfo.cs 的类&#xff0c;代码如下&#xff1a; public class U…

【第26章】Spring Cloud之Sentinel适配API Gateway

文章目录 前言一、准备1. 引入库2. 注册过滤器3. 添加配置4. 效果展示 二、基于网关的流控1. 新增流控规则2. 测试准备3. 测试结果 总结 前言 Sentinel从1.6.0 版本开始&#xff0c;Sentinel 提供了 Spring Cloud Gateway 的适配模块&#xff0c;可以提供两种资源维度的限流&a…

基于IndexDB+md-editor-v3实现的简单的文章书写小系统

基于IndexDBmd-editor-v3实现的简单的文章书写小系统 文章说明核心代码效果展示源码下载 文章说明 采用vue3 IndexDB 实现的个人仓库系统&#xff0c;采用markdown书写文章&#xff0c;并将文章信息存储在IndexDB数据库中&#xff0c;通过JavaScript原生自带的分词API进行文章…

盘点10款顶级加密软件,让企业数据安全得到保障!

随着数字化进程的加快&#xff0c;企业数据的安全性面临着越来越多的威胁。无论是内部的数据泄露还是外部的网络攻击&#xff0c;企业必须采用强大的加密软件来确保敏感信息的安全。2024年&#xff0c;企业数据安全需求日益增长&#xff0c;各类加密软件应运而生&#xff0c;提…

收银系统源码-收银台(exe、apk安装包)自由灵活操作简单!

收银系统现在已经成为门店经营必备工具&#xff0c;尤其是连锁多门店。一套好的收银系统可以帮助门店管理门店、管理商品、管理会员等&#xff0c;可以更好的经营决策。线下收银端更是门店每天高频使用的。但线下收银端需要具备哪些亮点才能更加高效呢&#xff1f; 1.收银端支…

CPP/C语言中的位运算

背景: leetcode 汉明距离问题看题解时&#xff0c;遇见了这个问题这里简单总结一下。 实例: 异或运算符 ^ 会将左右两边的数据转化为二进制形式&#xff0c;按位与 4\^1100\^0011015或运算 | 同样将左右两边数据转化为二进制形式&#xff0c;按位或 4|1100|0011015与运算…

数据结构之红黑树的 “奥秘“

目录&#xff1a; 一.红黑树概念 二. 红黑树的性质 三.红黑树的实现 四.红黑树验证 五.AVL树和红黑树的比较 一.红黑树概念 1.红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。 通过对任何 一条从根…

03 Flask-添加配置信息

回顾之前学习的内容 02 Flask-快速上手 Flask 中最简单的web应用组成 1. 导入核心库 Flask from flask import Flask2. 实例化 web应用 注意&#xff1a;不要漏了 app Flask(__name__) 中的 __name__ 表示&#xff1a;是从当前的py文件实例化 app Flask(__name__)3. 创…

内网隧道:端口转发

目录 LCX端口转发 场景一 场景二 SSH的端口转发 一、本地转发&#xff08;正向访问A&#xff09;&#xff1a; 二、远程转发&#xff08;反向访问A&#xff09; 三.NETSH端口转发 端口转发和端口映射 端口转发,有时被称为做隧道,是安全壳( SSH)为网络安全通信使用的一种方…

视频监控接入平台web客户端有时无法登录,有时打开实时视频出现黑屏的问题解决

目录 一、背景说明 二、解决过程 1、问题产生 2、命令介绍 ①基本用法 ②常用选项 ③示例 3、问题解决 三、最终结果 一、背景说明 在本地登录视频监控平台的服务器进行测试时&#xff0c;发现客户端登录不上。 检查服务器的服务和数据库&#xff0c;运行状况正常&#xff0c…

45个图源二维码分享及使用方法

我们曾在《40个图源二维码分享及使用方法》一文中&#xff0c;为你分享了40个图源二维码。 现在在此基础之上新增5个图源二维码&#xff0c;共分享45个。 如果你需要这些图源&#xff0c;请在文末查看领取方式。 45个图源 打开下面的网址进入水经微图&#xff08;简称“微图…

Swift 创建扩展(Extension)

类别(Category) 和 扩展(Extension) 的 用法很多. 常用的 扩展(Extension) 有分离代码和封装模块的功能,例如登陆页面有注册功能,有登陆功能,有找回密码功能,都写在一个页面就太冗余了,可以考虑使用 扩展(Extension) 登陆页面的方法来分离代码 本文介绍Swift 如何创建扩展(Ex…

maven项目下使用Jacoco测试覆盖率

【本文前提是了解maven项目及其Pom.xml机制&#xff0c;不熟悉可以看该博客的0.Pre部分Auto-Unit-Test-Case-Generator -- java项目自动测试生成-CSDN博客】 JaCoCo&#xff08;Java Code Coverage&#xff09;是一个开源的代码覆盖率工具&#xff0c;专门用于测量 Java 应用程…

Web测试中如何简单定位Bug

定位bug之前要确定自己对用例的理解是否有问题。&#xff08;在工作中,很多测试结果错误都是因为自己对用例的理解没有到位&#xff0c;以致于操作错误导致结果不符合预期&#xff09; 一般来说bug分为前端bug和后端bug&#xff0c;前端bug为请求数据错误&#xff0c;后端bug为…

web基础之信息泄露

1、目录遍历漏洞 &#xff08;1&#xff09;原理&#xff1a;本质是没有过滤用户输入的 ../ 相关的目录跳转符&#xff0c;使得攻击者通过目录跳转符来遍历服务器中的任意文件。 &#xff08;2&#xff09;题解&#xff1a; eg:根据提示遍历网页目录信息&#xff0c;会在某一个…

vscode---snippets配置全局代码片段,快捷开发!

代码片段的作用&#xff1a;在开发一个项目时&#xff0c;经常会遇到好多同一个代码逻辑&#xff0c;可配置固顶逻辑的代码块&#xff0c;避免重复敲同一代码&#xff1b; 举例&#xff1a;比如跳转登录&#xff0c;需要调用app的客户端方法&#xff0c;api调用跳转&#xff1…

Web 原生组件化方案:Web Components

你好&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏、评论和关注。 Web 组件化是一种将Web应用的UI部分拆分成可复用的独立组件的架构方法。这种方法有助于提高代码的可维护性、可重用性和可测试性。 而Web Components 标准则提供了一套原生的API&#xff0c;允许开发者创建…

TestCraft - GPT支持的测试想法生成器和自动化测试生成器

在当今快速变化的软件开发世界中&#xff0c;自动化测试已成为确保软件质量的关键环节。而随着AI技术的进步&#xff0c;越来越多的工具开始引入人工智能&#xff0c;来辅助生成测试用例和自动化测试脚本。其中&#xff0c;TestCraft&#xff0c;作为一款GPT支持的测试想法生成…