Datawhale-零基础入门NLP-新闻文本分类Task05

该任务是用Word2Vec进行预处理,然后用TextCNN和TextRNN进行分类。TextCNN是利用卷积神经网络进行文本文类,TextCNN是用循环神经网络进行文本分类。

1.Word2Vec

文本是一类非结构化数据,文本表示模型有词袋模型(Bag of Words)、主题模型(Topic Model)、词嵌入模型(Word Embedding)。

(1)文本表示

一个文本表现为一个由文字和标点符号组成的字符串,由字或字符组成词,由词组成词语,进而形成句、段、节、章、篇的结构。因此,需要找到一种理想的形式化表示方法,既能反映文档的内容,又要有对不同文档的区分能力。

常用的模型是向量空间模型(vector space model,VSM),基本概念:

  • 文档(document):文章中具有一定规模的片段。
  • 项/特征项(term/feature term):特征项是VSM中最小的不可分的语言单元,一个文档内容被看成是它含有的特征项所组成的集合。表示为Document=D(t_{1},...,t_{k},...,t_{n})
  • 项的权重(term weight):每个特征项都有一个权重,即Document=D(w_{1},...,w_{k},...,w_{n})

定义:给定一个文档Document=D(w_{1},t_{1};...,w_{k},t_{k};...,w_{n},t_{n}),D符合以下条件:

 

(1)one-hot编码(杜热编码)

 

 

 

词嵌入是一类将词向量化的模型的统称,核心思想是将每个词都映射成低维空间上的一个稠密向量,Word2Vec是常见的词嵌入模型之一。Word2Vec有两个网络结构CBOW和Skip-gram。

CBOW的目标是根据上下文出现的词语来预测当前词的生成概率,Skip-gram是根据当前词来预测上下文中各词的生成概率。

a.CBOW

CBOW(Continuous Bag of Words),称为连续词袋模型,假如有这样一个句子“The man fell in love with the woman”,我们如果只看到“The man fell in love with the __”,CBOW则是要联系上下文预测这个‘woman’单词。

2.TextCNN

对于文本来说,局部特征就是由若干单词组成的滑动窗口,类似于N-gram。卷积神经网络的优势在于能够自动对N-gram特征进行组合和筛选,获得不同抽象层次的语义信息。由于在每次卷积中采用了共享权重的机制,因此它的训练速度较快。

TextCNN是由输入层,卷积层,池化层,输出层组成,结构如下:

(1)输入层

输入层是一个N*K的矩阵,其中N为文章所对应的单词总数,K是每个词对应的表示向量的维度。每个词的K维向量可以是预先在其他语料库训练好的,也可以作为未知的参数由网络训练得到。因此,该输入层采用了两个通道的形式,即有两个N*K的输入矩阵,其中一个用预先训练好的词嵌入表达,并且在训练过程中不再变化;另一个 会随网络的训练过程而变化。

(2)卷积层

在输入的两个N*K的矩阵上,我们定义不同的滑动窗口进行卷积操作。每一次卷积操作相当于一个特诊向量的提取,通过定义不同的滑动窗口,就可以提取出不同的特征向量。

(3)池化层

池化层可以采用1-Max池化,即为从每个滑动窗口产生的特征向量中筛选出一个最大的特征,然后将这些特征拼接起来构成向量表示。也可以选用K-Max池化(选出每个向量中最大的K个特征),或者平均池化等,达到的效果是将不同长度的句子通过池化得到一个定长的向量表示。

(4)输出层

得到文本的向量表示之后,后面的网络结构就和具体任务相关了。文本分类是接入全连接层,并使用SoftMax激活函数输出每个类别的概率。

3.TextRNN

传统文本处理任务中丢失了输入的文本序列中每个单词的顺序,两个单词之间的长距离依赖关系还是很难学习到。循环神经网络却能很好地处理文本数据变长并且有序的输入序列。常用的循环神经网络有RNN,双向RNN,LSTM,GRU等。

循环神经网络(Recurrent Neural Network,RNN)是将网络隐藏层的输出重新连接到隐藏层形成闭环。它模拟了人阅读一篇文章的顺序,将前面有用的信息编码到状态变量中,从而有一定的记忆能力。典型结构为:

循环神经网络是采用BPTT(Back Propagation Through Time,基于时间的反向传播)求解的,然后使用BPTT学习的循环神经网络不能成功捕捉到长距离的依赖关系,由于sigmoid函数具有饱和性,在进行大量训练之后,就会出现梯度消失问题。如果计算矩阵的最大特征值大于1,随着训练,每层的梯度大小会呈指数增长,导致梯度爆炸;反之,如特征值小于1,则出现梯度消失。因此,LSTM,GRU是通过加入门控机制来弥补梯度上的损失。

长短期记忆网络(Long Short Term Memory,LSTM)是循环神经网络的扩展,由于循环神经网络有梯度消失和梯度爆炸的问题,学习能力有限,LSTM可以对有价值的信息进行长期记忆,从而减少循环神经网络的学习难度。LSTM是一组记忆块(memory blocks)的循环子网构成,每一个记忆块包含了一个或多个自连接的记忆细胞及三个乘法控制单元-输入门、输出门、遗忘门,提供着读、写、重置的功能

输入门控制当前计算的新状态以多大程度更新到记忆单元;当信息经过输入单元激活后会和输入门进行相乘,以确定是否写入当前信息;

输出门控制着当前的输出有多大程度上取决于当前的记忆单元;其与当前细胞记忆信息进行相乘,以确定是否输出信息;

遗忘门控制着前一步记忆单元中的信息有多大程度被遗忘掉;其与细胞之前的记忆信息进行乘法运算,以确定是否保留之前的信息;

记忆块的结构:

其中,σ是sigmoid函数,tanh是tanh函数,是相乘,是相加。

第1个部分,通过一个sigmoid函数,决定丢弃的信息,第2部分,在生成候选记忆时,使用了双曲线正切函数Tanh作为激活函数,确定更新信息,第3部分,更新了细胞状态,第4 部分是将结果进行输出并传递给下一个记忆块。

参考:

《百面机器学习》——诸葛越

《深度学习实战》——杨云

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

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

相关文章

如何把握网络工程师的“钱”途,专访文字。

前两天接受了IT168的视频专访,这里把专访的内容发布出来,大家可以借鉴一下。主持人:大家上午好,欢迎收看IT168网络频道的网上直播节目。我们今天上午的此次直播的主题是网络工程师:如何掌握你的“钱”途?众所周知&…

想要学好C++有哪些技巧?

学C能干什么? 往细了说,后端、客户端、游戏引擎开发以及人工智能领域都需要它。往大了说,构成一个工程师核心能力的东西,都在C里。跟面向对象型的语言相比,C是一门非常考验技术想象力的编程语言,因此学习起…

window.open打开新窗口被浏览器拦截的处理方法

一般我们在打开页面的时候&#xff0c; 最常用的就是用<a>标签&#xff0c;如果是新窗口打开就价格target"_blank"属性就可以了&#xff0c; 如果只是刷新当前页面就用window.location.reload()&#xff0c; 在某些特殊情况下也要用到另外一种新窗口打开的方法…

Datawhale-零基础入门NLP-新闻文本分类Task06

之前已经用RNN和CNN进行文本分类&#xff0c;随着NLP的热门&#xff0c;又出现了大热的Attention&#xff0c;Bert&#xff0c;GPT等模型&#xff0c;接下来&#xff0c;就从理论进行相关学习吧。接下来&#xff0c;我们会经常听到“下游任务”等名词&#xff0c;下游任务就是N…

服务器响应HTTP的类型ContentType大全

ContentType 属性指定服务器响应的 HTTP 内容类型。如果未指定 ContentType&#xff0c;默认为 text/html。在ASP中使用它&#xff1a; <% Response.ContentType "text/HTML" %> <% Response.ContentType "image/GIF" %> <% Response.Con…

Linux文件系统及属性

Linux文件系统及属性 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、Linux系统下文件类型及属性 1、inode结构 /*索引节点对象由inode结构体表示&#xff0c;定义文件在linux/fs.h中*/ struct inode {struct hlist_node i_hash; …

Linux-C编程 / 多线程 / 如何终止某个线程?

示例 demo最简单的 demo&#xff1a;static void* thread1_func(void *arg) {int i 0;// able to be cancelpthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL);for(i0; ; i) {printf("thread1 %d\n", i);…

PaddlePaddle入门——基本概念

最近报了百度的深度学习认证&#xff0c;需要使用Paddle进行编程实现&#xff0c;找了一些基础教程&#xff0c;特意记录下来&#xff0c;加深印象。思维导图如下&#xff1a; 一、Paddle的内部执行流程 二、内部详解 1.Variable&#xff08;变量&#xff09; &#xff08;1…

我会在天堂爱你.

★☆你相信爱情吗&#xff1f;☆★如果你觉得这篇文章很好的话&#xff01;那么请把这篇信息传给20位网友或以上&#xff0c;那天下的有情人也会终成眷属&#xff0c;当然也包括你自己&#xff01;....世界消失了&#xff0c;我会在天堂爱你.如果你走了&#xff0c;我会在泪水中…

Linux C语言实现ls -l

Linux下C语言实现ls -l功能 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 需求&#xff1a;用ls -l显示文件夹下所有的文件及属性 分析&#xff1a;1 用ls显示文件夹下的所有文件&#xff0c;首先用opendir打开文件夹&#xff0c;再用readdir读取…

回答一个微信好友的创业问题

ps:很喜欢这种有烟火气息的照片— — 提问&#xff1a;我最近要创业&#xff0c;打算跟一个朋友合伙&#xff0c;但是我朋友不会技术&#xff0c;所以他只投入钱&#xff0c;也不会参与公司的管理。我们启动资金是10万&#xff0c;他打算投入7万&#xff0c;想占股65%。因为没有…

百度深度学习初级认证——已过

开头先放图&#xff0c;百度深度学习初级工程师认证已通过&#xff0c;记录一下备战和考试细节&#xff01;&#xff01;&#xff01; 1.报考 当时是通过百度的AI Studio看到深度学习的认证了&#xff0c;价格是800&#xff0c;然后阴差阳错从百度技术学院的链接看到深度学习…

Windows Mobile开发资源相关下载收录

最近收集了些关于Windows Mobile开发必备工具。以下资源完全是自己下载过的&#xff0c;直接从迅雷下载页面拷贝过来的地址。链接应该没问题的。 Windows Mobile 6 Professional SDK Refresh.msihttp://www.microsoft.com/downloads/info.aspx?na46&p1&SrcDisplayLang…

数值计算(Python实现)(一)

数值计算&#xff08;Python实现&#xff09;&#xff08;一&#xff09; 本篇内容简介&#xff1a; 解线性方程组&#xff1a;高斯消元法和高斯列主元消去法解线性方程组的迭代方法&#xff1a;雅克比&#xff08;Jacobi&#xff09;迭代法与高斯&#xff0d;赛德尔迭代法拉格…

哦,这是桶排序

漫画&#xff1a;什么是桶排序&#xff1f;要了解桶排序之前&#xff0c;可以先看看上面小灰的那篇文章&#xff0c;我觉得是比较不错的。桶排序也可以理解为分类排序&#xff0c;把不同的数据归类&#xff0c;归类之后再重新排序&#xff0c;每个桶里面的内容就是一类数据&…

LinuxC高级编程——进程

LinuxC高级编程——进程 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 每个进程在内核中都有一个进程控制块&#xff08; PCB&#xff09;来维护进程相关的信息&#xff0c; Linux内核的 进程控制块是task_struct结构体。PCB包含的信息&#xff1a; …

Oracle常见用法总结

近来&#xff0c;操作数据库比较多&#xff0c;总结了一下常用的语句&#xff01;&#xff01;&#xff01; &#xff08;1&#xff09;Oracle的默认用户 用户名&#xff1a;scott 密码&#xff1a; tiger 权限&#xff1a;普通用户 用户名&#xff1a…

如何防御光缆窃听

很多年前&#xff0c;人们就认识到采用铜缆传输信息很容易通过私搭电缆的方式被窃取。对于一个网络和安全管理人员来说&#xff0c;要么对铜缆采用更严格的安全防护措施&#xff0c;要么就使用光缆。因为很多人都认为光纤可以很好地防止***通过窃听手段截获网络数据。但是实际上…

Linux字符设备驱动实例

globalmem看 linux 设备驱动开发详解时&#xff0c;字符设备驱动一章&#xff0c;写的测试代码和应用程序&#xff0c;加上自己的操作&#xff0c;对初学者我觉得非常有帮助。写这篇文章的原因是因为我看了我之前发表的文章&#xff0c;还没有写过字符设备相关的&#xff0c;至…

8-[函数]-嵌套函数,匿名函数,高阶函数

1.嵌套函数 &#xff08;1&#xff09;多层函数套用 name "Alex"def change_name():name "Alex2"def change_name2():name "Alex3"print("第3层打印", name)change_name2() # 调用内层函数print("第2层打印", name)chan…