FLAT:Flat-LAttice Transformer

news2024/9/22 21:32:41

中文NLP的一个问题,就是中文的字除了句句之间有标点符号之外都是连在一起的,不像英文词语是单独分割的。中文NLP处理一般会有2种方式:

  1. 基于字的,char-level。现在比较常用的方法,但会缺少词组的语义信息。

  1. 基于词的,word-level。词组一般是切词来的,相比字有更多的信息。但切词会引入错误词组。同时会有OOV的问题。

这2者有各自的优点和缺点。那有没有办法将2者进行结合呢?

Lattice LSTM

《Chinese NER Using Lattice LSTM》 2018

  1. 基于char-level的BiLSTM-CRF模型如下:

  1. 基于word-leve的BiLSTM-CRF模型如下:

  1. Lattice LSTM是一个有向无环图(DAG),将序列中的词汇信息(word-level)融入到了字信息(char-level)中。具体做法是将词汇信息融入到该词汇最后一个字的信息中。比如,如下图所示,它会将“南京市”的word embedding融入到“市”的word embedding中。

对于每个字符来说,会融合以该字符结束的所有词汇word信息,如对于「桥」融合了「长江大桥」和「大桥」信息。这里,词汇word个数不定,并采用注意力机制的方式进行融合。

Lattice LSTM有效的在char-level的基础上,融入word-level信息,并且不过分依赖word-level信息,避免因切词错误带来的传播误差。但其也存在一些缺点,比如1)性能差,batch不能并行,因为每个字符融合的word个数不一致;2)每个字符只记忆以其结尾的word,对于之前的词汇并无记忆;3)只使用lstm,无法迁移到其他模型。

FLAT

《FLAT: Chinese NER Using Flat-Lattice Transformer》2020

Flat-Lattice (展平的Lattice结构),是Lattice LSTM网络的展平的版本。FLAT为lattice结构引入了position encoding,对一个token增加了head position和end position。

我们可以看下如下2张图,图1是Lattice LSTM结构,图2是FLAT Lattice结构。我们可以想象一下,将图2中首尾位置相同的(比如‘重’)取出形成一条链,然后将位置不同的(比如‘重庆’)根据首尾位置信息,通过连线形成相应的跳转路径,即可得到图1的结构。

图2的这种结构有个好处,可以将图结构转换成简单的线性结构形式,从而可以并行计算,提高计算的性能。

FLAT将潜在词和输入的句子进行了拼接,潜在词和潜在词之间有 重叠、包含、分离 三种关系(例如上图中 人和药店 和 人和),采用绝对位置已经无法满足,因此本文提出相对位置关系。

位置i和位置j的相对位置计算方式如下:

Rij=RELU(Wr(pdij(h,h)⊕pdij(t,h)⊕pdij(h,t)⊕pdij(t,t)))

其中dij(h,h),dij(h,t),dij(t,h),dij(t,t)分别描述了单词和单词之间的关系。

dij(h,h)=head[i]−head[j]

dij(h,t)=head[i]−tail[j]

dij(t,h)=tail[i]−head[j]

dij(t,t)=tail[i]−tail[j]

pdij(h,h)就是对两个单词head和head之间相对关系的编码。

pd2k=sin(d/100002k/dmodel)

pd2k+1=cos(d/100002k/dmodel)

FLAT模型的整体架构如下图所示:

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

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

相关文章

TCP流套接字编程

ServerSocket API ServerSocket 是创建TCP服务端Socket的API。 ServerSocket 构造方法: ServerSocket 方法: Socket API Socket 是客户端Socket,或服务端中接收到客户端建立连接(accept方法)的请求后&#xff0…

【Java集合类】ArrayList

内部结构 ArrayList内部核心是一个Object数组elementDataObject数组的长度(length)视为ArrayList当前的容量(capacity)size对象表示ArrayList当前的元素个数 类上的重要注释 内部是Object数组 允许put null值,会自动扩容 size、…

基于springboot+vue的个人健康信息服务平台

基于springbootvue的个人健康信息服务平台 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背…

Spring Cloud Nacos实战(八) - Nacos集群配置

Nacos集群配置 更改Nacos启动命令配置原理 我们现在知道,想要启动Naocs只需要启动startup.sh命令即可,但是如果启动3个Nacos那?所以如果我们需要启动多个Nacos,其实Nacos本身默认启动就是集群模式。 注意点:如果是l…

【Redis】Redis 有序集合 Zset 操作 ( 简介 | 查询操作 | 增加操作 | 删除操作 | 修改操作 )

文章目录一、有序集合 Zset二、查询操作1、查询 Zset 所有数据2、查询 Zset 所有数据和评分3、查询指定评分范围的 Zset 数据4、查询指定评分范围的 Zset 数据并从大到小排序5、统计指定评分范围的 Zset 数据个数6、查询指定元素在 Zset 有序集合中的排名三、增加操作1、向 Red…

Kotlin 32. Kotlin 多语言支持

Kotlin 多语言支持 对于 Kotlin 来说&#xff0c;当我们新建一个项目时&#xff0c;会默认在 values/ 文件夹下&#xff0c;生成一个 strings.xml 文件。比如说&#xff0c; <resources><string name"app_name">exampleNewProject</string> <…

Python数据容器、list列表、tuple元组、str字符串、数据容器(序列)切片、set集合、dict字典、字符串大小比较

数据来源 01 数据容器 为什么学习数据容器 数据容器 总结 02 列表 1&#xff09;列表定义 为什么需要列表 列表的定义语法 列表的定义方式 演示 """ 演示数据容器之:list列表 语法:[元素,元素,......] """ # 定义一个列表list my_list …

使用k8s创建nginx服务—通过ingress类型暴露

文章目录1、使用ingress暴露应用—以nginx为例2、使用master节点IP也可以通过域名访问nginx1、使用ingress暴露应用—以nginx为例 把ingress通过 DaemonSet 的方式部署集群中&#xff0c;而且该节点打上污点不允许业务pod进行调度&#xff0c;以避免业务应用与Ingress服务发生…

【Toolformer: Language Models Can Teach Themselves to Use Tools 论文略读】

Toolformer: Language Models Can Teach Themselves to Use Tools 论文略读InformationAbstract1 Introduction2 Approach3 Tools4 Experiments4.1 Experimental Setup4.2 Downstream Tasks4.2.1 LAMA4.2.2 Math Datasets4.2.3 Question Answering4.2.4 Multilingual Question …

详解制造业业务数据模型

业务数据在企业数字化转型或单体应用的开发中都是至关重要的。站在跨业务跨部门的企业数字化转型角度&#xff0c;离不开业务架构的设计&#xff0c;详细的业务领域和业务数据模型是后续应用架构和数据架构的必要输入。站在单部门单场景的信息化角度&#xff0c;应用程序的需求…

DC-5渗透测试教程详解

DC-5渗透测试教程详解 测试机和靶机准备 有需要自取&#xff0c;注意调整DC-5的与kali在同一个为NAT模式下 [测试机kali] [靶机DC-5] 信息收集 kali的IP地址为 192.168.10.140 - kali - dc-5 使用nmap进行扫描 打开浏览器登录 192.168.10.134进行访问&#xff0c;确定其…

前端基础面试题:如何判断对象是否具有某属性?遍历数组的方法有哪些?

一、如何判断对象具有某属性&#xff1f; 如&#xff1a;let obj{name:zhangsan,age:21} 有以下方法 ( property 为属性名的变量&#xff0c;实际上是key&#xff0c;键名)&#xff1a; 1. property in obj 效果如图&#xff1a; in 运算符 2. Reflect.has(obj, property)…

【Redis】Redis 发布订阅通信模式 ( 发布订阅模式 | 订阅频道 | 发布消息 | 接收消息 )

文章目录一、发布订阅模式二、订阅频道三、发布消息四、接收消息一、发布订阅模式 Redis 中 存在一种 发布订阅 消息通信模式 : 消息发布者 : 负责发送消息 , 订阅者需要订阅该发布者频道 ;消息订阅者 : 负责接收消息 ; 订阅者 先 订阅 发布者频道 , 当 发布者 发布消息时 , …

SpringBoot+ActiveMQ-发布订阅模式(生产端)

SpringBootActiveMQ-发布订阅模式&#xff08;生产端&#xff09;Topic 主题* 消息消费者&#xff08;订阅方式&#xff09;消费该消息* 消费生产者将发布到topic中&#xff0c;同时有多个消息消费者&#xff08;订阅&#xff09;消费该消息* 这种方式和点对点方式不同&#xf…

NETCore下CI/CD之自动化测试 (详解篇)

NETCore下CI/CD之自动化测试 &#xff08;详解篇&#xff09; 目录&#xff1a;导读 前言 安装JDK 安装 Tomcat 首先&#xff0c;我们需要指定 Tomcat.PID 进程文件&#xff0c;进入 /usr/local/tomcat/bin&#xff0c;编辑文件 增加 tomcat 账户并赋予权限 防止Jeknins…

JSP脚本指令及标记学习笔记

好久没更新文章了&#xff0c;上次更新的文章还是一个学习笔记。本篇博文介绍的是JSP基本概念 1.JSP开发方法 一个jsp网页只需要加上<%%>就行了。 2.JSP运行机制 3.JSP脚本元素 3.1 JSP脚本代码 <% 脚本代码 %>实例 <% SimpleDateFormat df new SimpleDa…

MathType公式编辑器过期(禁止联网)的解决方案

MathType公式编辑器过期&#xff08;禁止联网&#xff09;的解决方案 Mathtype公式编辑器无法使用解决方案 MathType联网后显示证书失效&#xff0c;需要重新认证或者购买。或者是MathType成了精简版&#xff0c;只剩两行了。 1. 打开控制面板 方法1 首先大家在电脑中打开W…

解析从Linux零拷贝深入了解Linux-I/O(下)

接上文解析从Linux零拷贝深入了解Linux-I/O&#xff08;上&#xff09; 大文件传输场景 零拷贝还是最优选吗 在大文件传输的场景下&#xff0c;零拷贝技术并不是最优选择&#xff1b;因为在零拷贝的任何一种实现中&#xff0c;都会有「DMA 将数据从磁盘拷贝到内核缓存区——P…

加油站会员管理小程序实战开发教程11

我们已经用了10篇的篇幅讲解了首页的功能,首页主要是用来展示信息的。那么接下来就要进入我们的功能页面了,会员管理一个比较重要的功能是充值的功能。 要想实现充值功能,首先需要办一张会员卡,那什么时候办理会员卡呢?需要先注册成为会员,然后进行开卡的动作。这里要注…

c/c++开发,无可避免的模板编程实践(篇五)

一、关联容器简述 容器containers是用来管理某对象数据的集合&#xff0c;每种容器都有其优缺点&#xff0c;为了应对不同应用需求&#xff0c;标准库准备了不同的容器类型&#xff0c;容器可以是数组、链表或者是每个元素有一个特别的键值&#xff08;KEY&#xff09;组织起来…