自然语言处理从入门到应用——自然语言处理的基本问题:结构预测问题

news2024/11/27 14:49:07

分类目录:《自然语言处理从入门到应用》总目录


与文本分类问题不同,在结构预测问题中,输出类别之间具有较强的相互关联性。例如,在词性标注任务中,一句话中不同词的词性之间往往相互影响,如副词之后往往出现动词或形容词,形容词之后往往跟着名词等。结构预测任务通常是自然语言处理独有的。下面介绍三种典型的结构预测问题——序列标注、序列分割和图结构生成。

序列标注

所谓序列标注(Sequence Labeling),指的是为输入文本序列中的每个词标注相应的标签,如词性标注是为每个词标注一个词性标签,包括名词、动词和形容词等。其中,输入词和输出标签数目相同且一一对应。下图展示了一个序列标注(词性标注)示例。序列标注问题可以简单地看成多个独立的文本分类问题,即针对每个词提取特征,然后进行标签分类,并不考虑输出标签之间的关系。《深入理解机器学习——概率图模型(Probabilistic Graphical Model):条件随机场(Conditional Random Field,CRF)》中介绍的条件随机场模型是一种被广泛应用的序列标注模型,其不但考虑了每个词属于某一标签的概率(发射概率),还考虑了标签之间的相互关系(转移概率)。我们将要介绍的循环神经网络模型也隐含地建模了标签之间的相互关系,为了进一步提高准确率,也可以在循环神经网络之上再使用条件随机场模型。
序列标注(词性标注)示例

序列分割

除了序列标注问题,还有很多自然语言处理问题可以被建模为序列分割问题,如分词问题,就是将字符序列切分成若干连续的子序列;命名实体识别问题,也是在文本序列中切分出子序列,并为每个子序列赋予一个实体的类别,如人名、地名和机构名等。可以使用专门的序列分割模型对这些问题进行建模,不过为了简化,往往将它们转换为序列标注任务统一加以解决。如命名实体识别,序列标注的输出标签可以为一个实体的开始(B-XXX)、中间(I-XXX)或者非实体(O)等,其中B代表开始(Begin)、I代表中间(Inside),O代表其他(Other),XXX代表实体的类型,如人名(PER)、地名(LOC)和机构名(ORG)等。分词问题也可以转换为序列标注问题,即为每个字符标注一个标签,指明该字符是一个词的开始(B)或者中间(I)等。下图展示了使用序列标注方法解决序列分割(分词和命名实体识别)问题示例。其中,对于输入:“我爱北京天安门。”分词输出结果是:“我爱北京天安门。”命名实体识别输出结果是:“北京天安门=LOC”。
使用序列标注方法解决序列分割(分词和命名实体识别)问题示例

图结构生成

图结构生成也是自然语言处理特有的一类结构预测问题,顾名思义,其输入是自然语言,输出结果是一个以图表示的结构。图中的节点既可以来自原始输入,也可以是新生成的;边连接了两个节点,并可以赋予相应的类型。《自然语言处理从入门到应用——自然语言处理的基础任务:词性标注(POS Tagging)和句法分析(Syntactic Parsing)》中介绍的句法分析就是典型的图结构生成问题,其中,在依存分析中,节点皆为原始输入的词,而边则连接了有句法关系的两个词,然后在其上标注句法关系类别。此外,还可以对输出的图结构进行一定的约束,如需要为树结构(一种特殊的图结构,要求每个节点有且只有一个父节点)等。在短语结构句法分析中,除了原始输入词作为终结节点,还需要新生成词性以及短语类型节点作为非终结节点,然后,使用边将这些节点相连,并最终形成树结构。不过,树结构也不是必要的限制,如在《自然语言处理从入门到应用——自然语言处理的基础任务:词性标注(POS Tagging)和句法分析(Syntactic Parsing)》中介绍的语义依存图分析中,结果就不必是一棵树,而可以是更灵活的图结构。

图结构生成算法主要包括两大类:

  • 基于图(Graph-based)的算法:首先为图中任意两个节点(输入的词)构成的边赋予一定的分数,算法的目标是求解出一个满足约束的分数最大的子图,其中,子图的分数可以简单看作所有边的分数和,如果要求输出结果满足树结构的约束,则需要使用最大生成树(Maximum Spanning Tree,MST)算法进行解码。除了解码算法,基于图的算法还需要解决如何为边打分以及参数如何优化等问题,本文不进行详细的阐述,感兴趣的读者可以查阅相关参考资料。
  • 基于转移(Transition-based)的算法:将图结构的构建过程转化为一个状态转移序列,通过转移动作,从一个旧的状态转移到新的状态,也就是说转移动作是状态向前前进一步的方式,体现了状态变化的策略,转移动作的选择本质上就是一个分类问题,其分类器的特征从当前的状态中加以提取。

首先,来看如何使用基于转移的算法解决依存句法分析问题。在此以一种非常简单的标准弧(Arc-standard)转移算法为例,转移状态由一个栈(Stack)和一个队列(Queue)构成,栈中存储的是依存结构子树序列 S m ⋯ S 1 S 0 S_m\cdots S_1S_0 SmS1S0,队列中存储的是未处理的词 Q 0 Q 1 ⋯ Q n Q_0Q_1\cdots Q_n Q0Q1Qn。在初始转移状态中,栈为空,句子当中的所有词有序地填入队列中;在结束转移状态中,栈中存储着一棵完整的依存结构句法分析树,队列为空。另外,算法定义了以下三种转移动作,分别为移进(Shift,SH)、左弧归约(Reduce-Left,RL)和右弧归约(Reduce-Right,RR),具体含义如下:

  • SH,将队列中的第一个元素移入栈顶,形成一个仅包含一个节点的依存子树
  • RL,将栈顶的两棵依存子树采用一个左弧 S 1 ↶ S 0 S_1↶S_0 S1S0进行合并,然后 S 1 S_1 S1下栈
  • RR,将栈顶的两棵依存子树采用一个右弧 S 1 ↷ S 0 S_1↷S_0 S1S0进行合并,然后 S 0 S_0 S0下栈

下图展示了面向依存句法分析的标准弧转移算法中的三种动作。除了以上三个动作,还定义了一个特殊的完成动作(Finish,FIN)。根据上述的定义,可以使用下图中的动作序列逐步生成《自然语言处理从入门到应用——自然语言处理的基础任务:词性标注(POS Tagging)和句法分析(Syntactic Parsing)》中的依存结构句法树。弧上的句法关系可以在生成弧的时候(采用RL或RR动作),使用额外的句法关系分类器加以预测。
面向依存句法分析的标准弧转移算法中的三种动作
基于转移算法的短语结构句法分析方法过程也类似,只不过栈中存储的是短语结构句法子树序列,队列中同样存储的是未被处理的词。在此不再赘述。

基于标准弧转移算法的依存句法树生成动作序列示例

参考文献:
[1] 车万翔, 崔一鸣, 郭江. 自然语言处理:基于预训练模型的方法[M]. 电子工业出版社, 2021.
[2] 邵浩, 刘一烽. 预训练语言模型[M]. 电子工业出版社, 2021.
[3] 何晗. 自然语言处理入门[M]. 人民邮电出版社, 2019
[4] Sudharsan Ravichandiran. BERT基础教程:Transformer大模型实战[M]. 人民邮电出版社, 2023
[5] 吴茂贵, 王红星. 深入浅出Embedding:原理解析与应用实战[M]. 机械工业出版社, 2021.

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

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

相关文章

1、mysql的安装与配置

下载安装配置 下载zip文件解压之后配置环境变量 在path后面添加mysql bin文件夹的路径:C:\Program Files (x86)\MySQL\bin 配置完环境变量后,在C:\Program Files (x86)\MySQL目录下新建一个配置文件mysql.ini,同时在bin的同级目录C:\Program …

算法的复杂度【数据结构】

1、时间复杂度 算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源,因此衡量一个算法的好坏一般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要…

Jenkins安装配置

前言:Jenkins是一款CICD(持续集成与持续交付)工具。Jenkins可以帮你在写完代码后,一键完成开发过程中的一系列自动化部署的工作。 Jenkins 2.346.1 版本支持 jdk1.8 和 jdk11,最后一版支持jdk1.8的版本。 安装Jenkins前…

windows修改Pycharm的右键打开方式

title: windows中open floder as Pycharm太长了怎么修改 date: 2023-06-04 author: IoT_H2 tags: windows系统问题 categories: Markdown 问题描述: Pycharm这一栏这么长,长的我实在是很难受,事实上Jetbrains家的软件都是这个鸟模样 导…

RocketMq的单机版安装以及可视化软件的安装

一 RocketMq的单机版安装 1.1 RocketMq的上传 1.2 解压 [rootlocalhost export]# unzip rocketmq-all-4.9.6-bin-release.zip 1.3 修改配置 使用 vim 命令打开 bin/runserver.sh 文件。现将这些值修改为如下: [rootlocalhost bin]# vi runserver.sh 使用vim命令…

tinkerCAD入门操作(3):创建和操作分组对象

tinkerCAD入门操作(3):创建和操作分组对象 介绍 我们现在将探索Tinkercad的超能力 - 组合简单的形状来制作复杂的对象。 组合形状是实体建模的基本目的。这就是汽车、建筑物和宇宙飞船等有趣东西的制作方式。现在,我们要教你这个超能力。 创建复合形状…

Stable-Diffusion|window10安装GPU版本的 Stable-Diffusion-WebUI遇到的一些问题(一)

教程主要参考: AI绘画第一步,安装Stable-Diffusion-WebUI全过程 ! Stable Diffusion WebUI使用手冊(正體中文)|Ivon的部落格 具体记录一下笔者除了按照上述教程,遇到坑的地方 文章目录 1 git PYTHON2 Nvidia设置3 stable-diffus…

如何解决构建安防监控系统的技术难点?快解析来助力

在安防领域,大数据具有广阔的应用场景,能带来深度的价值。随着应用普及越来越广,安防监控系统被人们日益重视起来,科技含量越来越高,几乎所有高新科技都可促进其发展,尤其是信息时代的来临,更给该专业的发展提供了契机…

2023年全球项目管理系统排行榜:推荐15家值得关注的项目管理系统

在当今世界,管理项目已经成为许多企业不可分割的一部分。因此,拥有正确的项目管理系统对于确保任何业务的成功都是至关重要的。随着技术的不断发展,好用的项目管理系统也在不断发展,以满足现代工作场所日益增长的需求。到2023年&a…

区间预测 | MATLAB实现基于QRCNN-BiGRU-Multihead-Attention多头注意力卷积双向门控循环单元多变量时间序列区间预测

区间预测 | MATLAB实现基于QRCNN-GRU-Multihead-Attention多头注意力卷积双向门控循环单元多变量时间序列区间预测 目录 区间预测 | MATLAB实现基于QRCNN-GRU-Multihead-Attention多头注意力卷积双向门控循环单元多变量时间序列区间预测效果一览基本介绍模型描述程序设计参考资…

设计模式之-模板方法模式C++实现与C++模板template使用

介绍 模板方法模式使用比较常见,也比较简单,模板方法模式是属于设计模式中的行为设计模式。行为设计模式是关注对象的行为或者交互方面的内容,主要涉及算法和对象之间的职责分配。 模板方法模式使用场景:在设计需求中,…

超详细IDEA创建MavenWeb项目

文章目录 一、环境准备二、骨架方式创建Maven-Web项目三、非骨架方式创建Maven-Web项目 一、环境准备 既然是创建Maven-Web项目,那么首先我们需要配置好Maven和JDK环境,这里笔者使用JDK8版本以及Maven3.6系列版本。 附Maven安装配置教程 超详细Maven安装…

【CesiumJS入门】(2)ImageryLayer之图层加载与管理

前言 在上一篇博客中,我们加载了一个空空的蓝色地球,现在我们将会为地球加载上地图。 步骤: 创建ImageryProvider (数据源)创建ImageryLayer (图层)将图层添加进视图中(viewer&…

ChatGPT中文版写论文神器使用技巧

又到了一年一度的毕业季,写论文成了同学们的头等大事。ChatGPT系当今世上最强的人工智能产品,已经深刻地影响着人们的工作生活学习。ChatGPT也是写论文的神器,能帮助同学们拓宽思路,举一反三,事半功倍。以面给同学们盘…

六、JSP06 使用 EL 和 JSTL 简化 JSP

六、使用 EL 和 JSTL 简化 JSP 6.1 使用 EL 表达式 EL 表达式借鉴了 JavaScript 和 XPath 的表达式语言 EL 表达式提供了一种在 JSP 中简化表达式的方法 EL 表达式通常用于在某个作用域 {page、request、session、application等} 内取得属性值 6.1.1 使用 EL 表达式 EL 表达式…

【019】C++的指针与函数

C的指针与函数 引言一、指针变量作为函数的参数1.1、单向传递:值传递1.2、单向传递:传地址 二、数组作为函数的参数传递三、函数的返回值类型是指针类型四、函数指针4.1、函数指针的定义4.2、函数指针变量的注意事项4.3、函数指针变量使用typedef定义别名…

rabbitmq死信队列详解

目录 1 概念 2 成为死信队列的条件 2.1 队列指定长度 2.2 消息ttl时间 2.3 消费者拒收消息 1 概念 死信队列:死信队列其实和普通的队列一样,只不过里面存放的消息都是普通队列过期没有消费的。所以,接收没有及时被消费消息的队列为死信…

[SWPUCTF 2021 新生赛] (WEB二)

目录 easyupload1.0 easyupload2.0 easyupload3.0 no_wakeup PseudoProtocols error hardrce pop sql finalrce hardrce_3 easyupload1.0 1.启动环境 2.上传一个图片木马 GIF89a <script languagephp>eval($_POST[a]);</script>3.蚁剑连接&#xff0c;…

VBScript深度学习入门——线性回归

背景 破电脑装不了VS、Py、IDea、Golang等主流编译器或其语言运行环境&#xff0c;但是自带.Net FrameWork 3.5&#xff0c;可以使用VBScript进行脚本编写&#xff0c;无所谓&#xff0c;反正都是了解底层原理学习&#xff0c;大不了手搓机器学习框架。 分析 了解线性回归的…

剑指 Offer 24. 反转链表解题思路

文章目录 题目解题思路 题目 定义一个函数&#xff0c;输入一个链表的头节点&#xff0c;反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制&#xff1a; 0 < 节点个数 < 5000 …