textcnn文本词向量_文本分类模型之TextCNN

5ae13dcd054a80a9285cd27b3c74549c.png
六年的大学生涯结束了,目前在搜索推荐岗位上继续进阶,近期正好在做类目预测多标签分类的项目,因此把相关的模型记录总结一下,便于后续查阅总结。

一、理论篇:
在我们的场景中,文本数据量比较大,因此直接采用深度学习模型来预测文本类目的多标签,而TextCNN向来以速度快,准确率高著称。TextCNN的核心思想是抓取文本的局部特征:通过不同的卷积核尺寸(确切的说是卷积核高度)来提取文本的N-gram信息,然后通过最大池化操作来突出各个卷积操作提取的最关键信息(颇有一番Attention的味道),拼接后通过全连接层对特征进行组合,最后通过交叉熵损失函数来训练模型。

e7d6f34565a454472e5c9cfd3af7d100.png

bf38719a9b27669c7755e0a7b64e13f3.png

模型的第一层就是Embedding层,预训练的词嵌入可以利用其它语料库得到更多的先验知识,经过模型训练后能够抓住与当前任务最相关的文本特征。在我们的应用场景中,使用预训练的Embedding比随机初始化带来的效果不是特别显著。第二层为卷积层,CV中常见的卷积尺寸通常是正方形,而本文的卷积尺寸与之不同,本文的卷积宽度等于文本Embedding后的维度,保持不变,因为每个词或字相当于一个最小的单元,不可进一步分割。而卷积核的高度可以自定义,在向下滑动的过程中,通过定义不同的窗口来提取不同的特征向量,有点类似于N-gram过程。这样不同的kernel可以获取不同范围内词的关系,获得的是纵向的差异信息,也就是在一个句子中不同范围的词出现会带来什么信息。比如可以使用3,4,5个词数分别作为卷积核的大小),每个卷积尺寸下又有多个相同的卷积核(原因是卷积神经网络学习的是卷积核中的参数,每个filter都有自己的关注点,它们可以从同一个窗口学习相互之间互补的特征,这样多个卷积核就能学习到不同的信息,比如可以设置size为3的filter有4个卷积核)。

第三层是最大池化层,即为从每个滑动窗口产生的特征向量中筛选出一个最大的特征,然后将这些特征拼接起来构成向量表示。也可以选用K-Max池化(选出每个特征向量中最大的K个特征),或者平均池化(将特征向量中的每一维取平均)等,达到的效果都是将不同长度的句子通过池化得到一个定长的向量表示。在短文本分类场景中,每条文本中都会有一些对分类无用的信息,而最大池化可以突出最重要的关键词以帮助模型更容易找到对应的类目。

接下来的几层就跟具体的任务相关了,一般都会拼接特征,在通过全连接层自由组合提取出来的特征实现分类。在损失函数上,二分类和多标签分类可以采用基于Sigmoid函数的交叉熵损失函数binary_crossentropy多分类任务可以采用基于Softmax的多类别交叉熵损失函数(categorical_crossentropy)。

二、代码部分:

def textcnn(hyper_parameters):input = Input(shape=(hyper_parameters.max_len,))if hyper_parameters.embedding_matrix is None:embedding = Embedding(input_dim=hyper_parameters.vocab + 1,output_dim=hyper_parameters.emd_dim,input_length=hyper_parameters.MAX_LEN,trainable=True)(input)else:  # 使用预训练矩阵初始化Embeddingembedding = Embedding(input_dim=hyper_parameters.vocab + 1,output_dim=hyper_parameters.emd_dim,weights=[hyper_parameters.embedding_matrix],input_length=hyper_parameters.MAX_LEN,trainable=False)(input)convs = []for kernel_size in hyper_parameters.kernel_size:conv = Conv1D(hyper_parameters.conv_code, kernel_size,activation=hyper_parameters.relu)(embedding)pool = MaxPooling1D()(conv)convs.append(pool)concat = Concatenate()(convs)flattern = Flatten()(concat)dropout = Dropout(hyper_parameters.dropout)(flattern)output = Dense(hyper_parameters.classes, activation=hyper_parameters.sigmoid)(dropout)model = Model(input, output)model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])return model

在Embedding部分,如果有条件可以使用自己预训练的文本信息来初始化Embedding矩阵,效果可能会比随机初始化Embedding提升一点。

三、几点思考:

1.TextCNN能用于文本分类的主要原因是什么?

除了预训练文本外,TextCNN通过利用不同的卷积核尺寸并行提取文本的信息(类似N-gram),并通过最大池化来突出最重要的关键词来实现分类。

2.TextCNN的缺点:

2.1. TextCNN的卷积和池化操作会丢失文本序列中的词汇顺序和位置信息等内容,但也可利用这一点来增强文本,例如白色旅游鞋,可以添加旅游鞋白色数据等,分词后白色和旅游鞋位置就可以互换来丰富语料 。

2.2. 在长文本使用TextCNN效果可能没有在短文本中效果好(具体还需要实践确认),原因同上,因此可以尝试使用Top k池化替代最大池化提取更多的文本信息。

https://arxiv.org/pdf/1408.5882.pdf​arxiv.org小占同学:深入TextCNN(一)详述CNN及TextCNN原理​zhuanlan.zhihu.com
75d437d15eae7774b0f14f171921468e.png

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

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

相关文章

MySQL主键

“主键(PRIMARY KEY)”的完整称呼是“主键约束”。MySQL 主键约束是一个列或者列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可以强制表的实体完整性。 选取设置主键约束的字段 主键约束即在表中…

电大计算机一级b考试试题,电大计算机考试本科试题

目录:按住Ctrl键点击相关的标题,可以快速的切换到相应的内容处 操作系统应用 计算机网络应用 文字编辑 电子表格 电子演示文稿电子表格 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1在考生文件夹下新建一个Excel工作簿,完成以下操作…

antd table排序 vue_antd of Vue 之table组件踩坑记

需求:页面里有个table,点击编辑可以编辑该table,保存数据并展示到页面上来第一种方法就是把编辑态的table做成子组件(且叫editeTable),通过v-show判断是否进入编辑态来显示隐藏。先仿造原本父组件(且叫fatherTable),做…

计算机管理也无法运行,【两种解决方法】任务管理器打不开怎么办?

任务管理器调不出来怎么办?任务管理器打不开是怎么回事呢?以下两种方法可解决任务管理器打不开问题?1、打开电脑,点击左下角”开始“,选择运行,打开运行对话框后输入"regedit“如下图:2、在…

MySQL唯一约束

MySQL唯一约束(Unique Key)要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。 在创建表时设置唯一约束 在定义完列之后直接使用 UNIQUE 关键字指定唯一约束,语法规则如下&…

单纯形法表格法例题详解_最优化单纯形法例题讲解.doc

最优化单纯形法例题讲解.doc例1 用单纯形法解下列问题:解:将原问题化成标准形:x4与添加的松弛变量x,x在约束方程组中其系数正好构成一个3阶单位阵,它们可以作为初始基变量,初始基可行解为X(0, 0, , 8, 4)T列…

卫星轨道的计算是利用计算机的,轨道计算

轨道计算是一种粗略测定天体轨道的方法。在轨道计算中﹐人们事先不必对天体轨道作任何初始估计﹐而是从若干观测资料出发﹐根据力学和几何条件定出天体的初始轨道﹐以便及时跟踪天体﹐或作为轨道改进的初值。为了计算六个轨道要素(见二体问题)﹐至少必须有三次光学观测﹐因为每…

MySQL检查约束

MySQL 检查约束(CHECK)可以通过 CREATE TABLE 或 ALTER TABLE 语句实现,根据用户实际的完整性要求来定义。它可以分别对列或表实施 CHECK 约束。 选取设置检查约束的字段 检查约束使用 CHECK 关键字,具体的语法格式如下&#xf…

计算机虚拟现实技术论文好写吗,虚拟现实技术的论文

虚拟现实技术的论文虚拟现实技术,又称灵境技术,是90年代为科学界和工程界所关注的技术。下面时刻小编给大家搜集的关于虚拟现实技术的科技论文,希望大家喜欢!摘要:虚拟现实技术是一种可以创建和体验虚拟世界的计算机技…

sqlserver 微信 读取_Sql Server使用链接服务器远程取数据_sqlserver

由于最近开发的一个查询系统,基本是在其它服务器的,所以在本地服务器设计了中间,用来存从远程服务器取数据!一种方法是通过,OPENDATASOURCE来远程读取数据!SELECT *FROM OPENDATASOURCE(SQLOLEDB,Data SourceServerName;User IDMyUID;PasswordMyPasshttp://www.gaodaima…

MySQL默认约束

“默认值(Default)”的完整称呼是“默认值约束(Default Constraint)”。MySQL 默认值约束用来指定某列的默认值。 例如女性同学较多,性别就可以默认为“女”。如果插入一条新的记录时没有为这个字段赋值,那…

设计一个具有大纯时延时间的一阶惯性环节的计算机控制系统,具有一阶纯滞后环节设计.doc...

文档介绍:目录第一部分设计任务及方案1、设计题目及要求2、设计方案分析论证第二部分方案各模块分析1、被控对象分析2、测量元件热电阻及前置放大电路3、A/D转换器4、控制器(单片机)5、光隔驱动器第三部分数字控制器D(Z)的设计1、数字控制器D(Z)2、程序流程图设计第…

MySQL非空约束

MySQL 非空约束(NOT NULL)可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不能为空。 非空约束(Not Null Constraint)指字段的值不能为空。对…

计算机操作安全协议,安全协议操作语义模型研究及应用-计算机软件与理论专业论文.docx...

安全协议操作语义模型研究及应用-计算机软件与理论专业论文摘摘 要桂林电子科技大学学位论文桂林电子科技大学学位论文摘要安全协议的操作语义模型是一种分析安全协议的新模型,它结合了以往多种协议 分析模型的优点,能分析多个协议及多个主体并行运行的协…

python怎么开发工具_为程序员和新手准备的8大Python开发工具

Python 是一种开源编程语言,用于 Web 编程、数据科学、人工智能和许多科学应用。学习 Python 使程序员能够专注于解决问题,而不是专注于语法,其丰富的库赋予它完成伟大任务所需的力量。1) IDLE安装 Python 时,默认情况下也会安装 …

MySQL查看表中的约束

MySQL 中可以使用 SHOW CREATE TABLE 语句来查看表中的约束。 查看数据表中的约束语法格式如下&#xff1a; SHOW CREATE TABLE <数据表名>;创建数据表 tb_emp8 并指定 id 为主键约束&#xff0c;name 为唯一约束&#xff0c;deptId 为非空约束和外键约束&#xff0c;然…

文件后缀_电脑文件名的后缀即扩展名的显示和隐藏方法

前两天碰到一个同事问我&#xff0c;他的文件名后面的格式不显示了&#xff0c;就是扩展名&#xff0c;比如Word文档名称后缀的doc或者docx和Excel表格名称后缀的xls或者xlsx没有了&#xff0c;还有一些其他文件的后缀也不显示了。我三两下就给他改好了。那么今天就来给大家讲一…

u盘无法格式化不在计算机中,在电脑中,为什么U盘不能格式化?

我们有时候会碰到在电脑中U盘不能格式化的问题&#xff0c;这该怎么办呢&#xff1f;接下来小编就从解决方法来为大家介绍下为什么U盘不能格式化&#xff1f;1. 首先在桌面左下角点击“开始菜单”-->点击“运行..”&#xff0c;然后在运行框中输入&#xff1a;“regedit.exe…

四种依恋类型_依恋关系的研究

说到依恋关系&#xff0c;大家都会想到安全型、焦虑型、回避型&#xff0c;以及这些类型会影响到成年后的人际关系。本文具体罗列一下心理学家研究依恋关系的都做出了怎样的努力。第一&#xff1a;哈罗做的恒河猴验。实验情境&#xff1a;把小猴放在一个笼子里&#xff0c;这个…

MySQL 查询数据表

MySQL 表单查询是指从一张表的数据中查询所需的数据&#xff0c;主要有查询所有字段、查询指定字段、查询指定记录、查询空值、多条件的查询、对查询结果进行排序等。 基本语法 MySQL 从数据表中查询数据的基本语句为 SELECT 语句&#xff0c;基本格式如下&#xff1a; SELE…