通俗易懂的BiLSTM-CRF,用命名实体识别任务来解释CRF(一)

2024-02-23 17:32

本文主要是介绍通俗易懂的BiLSTM-CRF,用命名实体识别任务来解释CRF(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

BiLSTM上的CRF,用命名实体识别任务来解释CRF

  • 0 导读
  • 预备知识
  • 1.介绍
    • 1.1 开始之前
    • 1.2 BiLSTM-CRF模型
    • 1.3 如果没有CRF层会怎么样
    • 1.4 CRF层可以训练数据中学习约束
  • 2. CRF层
    • 2.1 Emission得分
    • 2.2 Transition得分
    • 2.3 损失函数
    • 2.4 实际路径得分
    • 2.5所有可能的路径的得分
  • 参考链接

0 导读

看了很多的CRF的介绍和讲解,这个感觉是最清楚的,结合实际的应用场景,让你了解的用处和用法。

预备知识

你需要知道的唯一的事情是什么是命名实体识别,如果你不知道神经网络,CRF或任何其他知识,请不要担心,后面会做直观解释。

1.介绍

对于命名实体识别任务,基于神经网络的方法非常普遍。例如,这篇文章https://arxiv.org/abs/1603.01360提出了使用一个使用词和字嵌入的BiLSTM-CRF命名实体识别模型。下文将以本文中的模型为例来解释CRF是如何工作的。
如果你不知道BiLSTM和CRF的细节,请记住它们是命名实体识别中的两个不同层。

1.1 开始之前

我们假设,我们有一个数据集,其中有两个实体类型,Person和Organization。但是,事实上,在我们的数据集上,我们有5个标签:

  • B-Person
  • I-Person
  • B-Organization
  • I-Organization
  • O

此外,x是包含5个单词的句子,w0,w1,w2,w3,w4。更重要的是,在句子x中,{w0,w1}是一个Person实体,[w3]是一个Organization实体,其他都是“O”。

1.2 BiLSTM-CRF模型

下文将对这个模型西做一个简单介绍。
如下图所示:

  • 首先,将句子x中的每个单词表示为一个向量,其中包括单词的嵌入和字符的嵌入。字符嵌入式随机初始化的。词嵌入通常是一个预训练的词嵌入文件导入的。所有的嵌入将在训练过程中进行微调。
  • 其次,BiLSTM-CRF模型的输入是这些嵌入,输出是句子x中的单词的预测标签。
    -在这里插入图片描述
    虽然不需要知道BiLSTM层的细节,但是为了更容易的理解CRF层,我们需要知道BiLSTM层输出的意义是什么。
    在这里插入图片描述
    上图说明BiLSTM层的输出是每个标签的分数,例如,对于w0,BiLSTM节点的输出为1.5(B-Person)、0.9(I-Person)、0.1(B-Organization)、0.08(I-Organization)和0.05(O),这些分数将作为CRF层的输入。
    然后,将BiLSTM层预测的所有分数输入CRF层,在CRF层中,选择预测得分最高的标签序列作为最佳答案。

1.3 如果没有CRF层会怎么样

你可能已经发现,即使没有CRF层,也就是说,我们可以训练一个BiLSTM命名实体识别模型,如下图所示:
在这里插入图片描述
因为每个单词的BiLSTM输出是标签的分数,我们可以选择每个单词得分最高的标签。
例如,对于w0,“B-Person”得分最高(1.5),因此我们可以选择“B-Person”作为其最佳预测标签。同样,我们可以为w1选择“I-Person”,为w2选择“O”,为w3选择“B-Organization”。为w4选择“O”。
虽然在这个例子中我们可以得到正确的句子x的标签,但是并不总是这样,再试一下下图图片中的例子。
在这里插入图片描述
显然这次的输出是无效的,“I-ORganization I-Person”和“B-Organization I-Person”。

1.4 CRF层可以训练数据中学习约束

CRF层可以向最终的预测标签添加一些约束,以确保它们是有效的。这些约束可以由CRF层再训练过程中从训练数据集自动学习。
约束条件可以是:

  • 句子中第一和单词的标签应该以“B-”或“O”开头,而不是“I-”
  • “N-label I-label2 I-label I-…”,在这个模式中,label1、label2、label3…应该是相同的命名实体标签。例如,“B-Person I-Person”是有效的,但是“B-Person I-Organization”是无效的。
  • “O I-label”无效。一个命名实体的第一个标签应该以“B-”而不是“I-”开头,换句话说,有效模式应该是“O B-label”

有了这些有用的约束,无效预测标签序列的数量将显著减少。

2. CRF层

在CRF层的损失函数中,我们有两种类型的分数。这两个分数是CRF层的关键概念。

2.1 Emission得分

第一个emission分数。这些emission分数来自BiLSTM。例如,如下图所示,标记为B-Person的w0的分数为1.5。
在这里插入图片描述
为方便起见,我们将给每一个标签一个索引号,如下图所示。
在这里插入图片描述
我们用 x i y i x_{iy_i} xiyi来表示emission分数。i是word的索引, y i y_i yi是label的索引。如上图所示, x i = 1 , y = 2 = x w 1 , B − O r g a n i z a t i o n = 0.1 , = 1 x_{i=1,y=2}=x_{w_{1,B-Organization}}=0.1,=1 xi=1,y=2=xw1,BOrganization=0.1,=1,即w1作为B-Oraganization的得分为0.1。

2.2 Transition得分

我们使用 t y i y j t_{y_iy_j} tyiyj来表示transition分数。例如, t B − P e r s o n , I − P e r s o n = 0.9 t_{B-Person,I-Person}=0.9 tBPerson,IPerson=0.9表示标签的transition,B-Person —>I-Person得分为0.9.因此,我们有一个transition得分矩阵,它存储了所有标签之间的所有得分。
为了是transition评分矩阵更健壮,我们将添加另外两个标签,START和END。START是指一个句子的开头,而不是第一个单词。END代表一个句子的结尾。
下面是一个transition得分矩阵的例子,包括额外添加的START和END标签。
在这里插入图片描述
如上表所示,我们可以发现transition矩阵已经学习了一些有用的约束。

  • 句子中第一个单词的标签应该以“B-”或“O”开头,而不是“I-”开头**(从“START”到“I-person”或I-Organization的分数非常低。)**
  • “B-label1 I-label2 I-label3 I-…”,在这个模式中,label1、label2、label3…应该是相同的命名实体标签。例如,“B-Person I-Person”是有效的,但是“B-Person I-Organization”是无效的。(例如,从“B-Organization”到“I-Person”的分数只有0.0003,比其他分数低很多)
  • O I-label”无效。一个被命名实体的第一个标签应该以“B-”而不是“I-”开头,换句话说,有效的模式应该是“O B-label”(同样,t_{O,I-Person}的分数非常小)

你可能想问一个关于矩阵的问题。在哪里或如何得到transition矩阵?

实际上,该矩阵是BiLSTM-CRF模型的一个参数。在训练模型之前,可以随机初始化矩阵中的所有transition分数。所有的随机分数将在你的训练过程中自动更新。换句话说,CRF层可以自己学习这些约束。我们不需要手动构建矩阵。随着训练迭代次数的增加,分数会逐渐趋于合理。

2.3 损失函数

CRF损失函数由真实路径得分和所有可能路径的总得分组成。在所有可能的路径中,真实路径的得分应该是最高的。
例如,如果我们的数据集中有如下表所示的这些标签:
在这里插入图片描述
我们还是有一个5个单词的句子。可能的路径是:

  • 1)START B-Person B-Person B-Person B-Person B-Person END
  • 2)START B-Person I-Person B-Person B-Person B-Person END
  • 10)START B-Person I-Person O B-Organization O END
  • N)O O O O O O O
    在这里插入图片描述

2.4 实际路径得分

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

2.5所有可能的路径的得分

在这里插入图片描述在这里插入图片描述
步骤2: 回忆一下Emission和Transition得分
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考链接

原文链接:1,2

这篇关于通俗易懂的BiLSTM-CRF,用命名实体识别任务来解释CRF(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/739366

相关文章

Python Invoke自动化任务库的使用

《PythonInvoke自动化任务库的使用》Invoke是一个强大的Python库,用于编写自动化脚本,本文就来介绍一下PythonInvoke自动化任务库的使用,具有一定的参考价值,感兴趣的可以... 目录什么是 Invoke?如何安装 Invoke?Invoke 基础1. 运行测试2. 构建文档3.

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

变量与命名

引言         在前两个课时中,我们已经了解了 Python 程序的基本结构,学习了如何正确地使用缩进来组织代码,并且知道了注释的重要性。现在我们将进一步深入到 Python 编程的核心——变量与命名。变量是我们存储数据的主要方式,而合理的命名则有助于提高代码的可读性和可维护性。 变量的概念与使用         在 Python 中,变量是一种用来存储数据值的标识符。创建变量很简单,

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

FreeRTOS学习笔记(二)任务基础篇

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、 任务的基本内容1.1 任务的基本特点1.2 任务的状态1.3 任务控制块——任务的“身份证” 二、 任务的实现2.1 定义任务函数2.2 创建任务2.3 启动任务调度器2.4 任务的运行与切换2.4.1 利用延时函数2.4.2 利用中断 2.5 任务的通信与同步2.6 任务的删除2.7 任务的通知2

Flink任务重启策略

概述 Flink支持不同的重启策略,以在故障发生时控制作业如何重启集群在启动时会伴随一个默认的重启策略,在没有定义具体重启策略时会使用该默认策略。如果在工作提交时指定了一个重启策略,该策略会覆盖集群的默认策略默认的重启策略可以通过 Flink 的配置文件 flink-conf.yaml 指定。配置参数 restart-strategy 定义了哪个策略被使用。常用的重启策略: 固定间隔 (Fixe