1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c
2.详细笔记网站(中文):http://www.ai-start.com/dl2017/
3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai

2.9 情绪分类 Sentiment Classification

情感分类任务就是看一段文本,然后分辨这个人是否喜欢他们在讨论的这个东西,这是NLP中最重要的模块之一,经常用在许多应用中。

情感分类一个最大的挑战就是可能标记的训练集没有那么多,但是有了词嵌入,即使只有中等大小的标记的训练集,你也能构建一个不错的情感分类器,让我们看看是怎么做到的。

如上图,这是一个情感分类问题的一个例子,输入 x x x是一段文本,而输出 y y y是你要预测的相应情感。比如说是一个餐馆评价的星级,

  • 比如有人说,“The dessert is excellent.”(甜点很棒),并给出了四星的评价;
  • “Service was quite slow”(服务太慢),两星评价;
  • “Good for a quick meal but nothing special”(适合吃快餐但没什么亮点),三星评价;
  • 还有比较刁钻的评论,“Completely lacking in good taste, good service and good ambiance.”(完全没有好的味道,好的服务,好的氛围),给出一星评价。

如果你能训练一个从 x x x到 y y y的映射,基于这样的标记的数据集,那么你就可以用来搜集大家对你运营的餐馆的评价。一些人可能会把你的餐馆信息放到一些社交媒体上,Twitter、Facebook、Instagram或者其他的社交媒体,如果你有一个情感分类器,那么它就可以看一段文本然后分析出这个人对你的餐馆的评论的情感是正面的还是负面的,这样你就可以一直记录是否存在一些什么问题,或者你的餐馆是在蒸蒸日上还是每况愈下。

情感分类一个最大的挑战就是可能标记的训练集没有那么多。对于情感分类任务来说,训练集大小从10,000到100,000个单词都很常见,甚至有时会小于10,000个单词,采用了词嵌入能够带来更好的效果,尤其是只有很小的训练集时。

接下来你可以这样做,这节我们会讲几个不同的算法。

1-简单的情感分类的模型-采用平均值,但是没有考虑词序

这是一个简单的情感分类的模型,假设有一个句子"dessert is excellent",然后在词典里找这些词,我们通常用10,000个词的词汇表。我们要构建一个分类器能够把它映射成输出四个星,给定这四个词(“dessert is excellent”),我们取这些词,找到相应的one-hot向量,所以这里单词The就是 O 8928 O_{8928} O8928​,乘以嵌入矩阵 E E E, E E E可以从一个很大的文本集里学习到,比如它可以从一亿个词或者一百亿个词里学习嵌入,然后用来提取单词The的嵌入向量 e 8928 e_{8928} e8928​,对dessert、is、excellent做同样的步骤。

如果在很大的训练集上训练 E E E,比如一百亿的单词,这样你就会获得很多知识,甚至从有些不常用的词中获取,然后应用到你的问题上,即使你的标记数据集里没有这些词。我们可以这样构建一个分类器,取这些嵌入向量 e e e,比如是300维度的向量。然后把它们求和或者求平均,这里我画一个大点的平均值计算单元(上图Avg),你也可以用求和或者平均。这个单元(上图Avg)会得到一个300维的特征向量,把这个特征向量送进softmax分类器,然后输出 y ^ \hat y y^​。这个softmax能够输出5个可能结果的概率值,从一星到五星,这个就是5个可能输出的softmax结果用来预测 y y y的值。

这里用的平均值运算单元(Avg),这个算法适用于任何长短的评论,因为即使你的评论是100个词长,你也可以对这一百个词的特征向量求和或者平均它们,然后得到一个表示一个300维的特征向量表示,然后把它送进你的softmax分类器,所以这个平均值运算效果不错。它实际上会把所有单词的意思给平均起来,或者把你的例子中所有单词的意思加起来就可以用了。

这个算法有一个问题就是没考虑词序,尤其是这样一个负面的评价,“Completely lacking in good taste, good service, and good ambiance.”,但是good这个词出现了很多次,有3个good,如果你用的算法跟这个一样,忽略词序,仅仅把所有单词的词嵌入加起来或者平均下来,你最后的特征向量会有很多good的表示,你的分类器很可能认为这是一个好的评论,尽管事实上这是一个差评,只有一星的评价。

2-更加复杂的模型-使用RNN,考虑词序

我们有一个更加复杂的模型,不用简单的把所有的词嵌入都加起来,我们用一个RNN来做情感分类。

我们这样做,首先取这条评论,“Completely lacking in good taste, good service, and good ambiance.”,找出每一个one-hot向量,这里我跳过去每一个one-hot向量的表示。用每一个one-hot向量乘以词嵌入矩阵 E E E,得到词嵌入表达 e e e,然后把它们送进RNN里。

RNN的工作就是在最后一步(上图最右所示)计算一个特征表示,用来预测 y ^ \hat y y^​,这是一个多对一的网络结构的例子,我们之前已经见过了。有了这样的算法,考虑词的顺序效果就更好了,它就能意识到"things are lacking in good taste",这是个负面的评价,“not good”也是一个负面的评价。而不像原来的算法一样,只是把所有的加在一起得到一个大的向量,根本意识不到“not good”和 “good”不是一个意思,"lacking in good taste"也是如此,等等。

如果你训练一个这样的算法,最后会得到一个很合适的情感分类的算法。由于你的词嵌入是在一个更大的数据集里训练的,这样效果会更好,更好的泛化一些没有见过的新的单词。比如其他人可能会说,“Completely absent of good taste, good service, and good ambiance.”,即使absent这个词不在标记的训练集里,如果是在一亿或者一百亿单词集里训练词嵌入,它仍然可以正确判断,并且泛化的很好,甚至这些词是在训练集中用于训练词嵌入的,但是可以不在专门用来做情感分类问题的标记的训练集中。

以上就是情感分类的问题,我希望你能大体了解。一旦你学习到或者从网上下载词嵌入,你就可以很快构建一个很有效的NLP系统。

2020-11-11 吴恩达DL学习-C5 序列模型-W2 自然语言处理与词嵌入(2.9 情绪分类-使用RNN模型,考虑词序)相关推荐

  1. 2020-10-21 吴恩达DL学习-C5 序列模型-W1 循环序列模型(1.9 GRU门控循环单元-改善梯度消失-在序列中学习非常深的连接-简化和完整版本-记忆细胞)

    1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c 2.详细笔记网站(中文):http://www.ai-sta ...

  2. 【吴恩达深度学习笔记】5.2自然语言处理与词嵌入Natural Language Processing and Word Embeddings

    第五门课 序列模型(Sequence Models) 2.1词汇表征(Word Representation) 词嵌入(word embeddings)是语言表示的一种方式,可以让算法自动的理解一些类 ...

  3. 2020-11-19 吴恩达DL学习-C5 序列模型-W3 序列模型和注意力机制(3.4 改进定向搜索-长度归一化,称为归一化的对数似然目标函数。取每个单词的概率对数值的平均。非精确搜索,速度快)

    1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c 2.详细笔记网站(中文):http://www.ai-sta ...

  4. 吴恩达深度学习 | (20) 序列模型专项课程第一周学习笔记

    课程视频 第一周PPT汇总 吴恩达深度学习专项课程共分为五个部分,本篇博客将介绍第五部分序列模型专项的第一周课程:循环序列模型. 目录 1. 为什么选择序列模型? 2. 数学符号 3. 循环神经网络模 ...

  5. 吴恩达深度学习 | (24) 序列模型专项第二周学习笔记

    课程视频 吴恩达深度学习专项课程共分为五个部分,本篇博客将介绍第五部分序列模型专项的第二周课程:自然语言处理与词嵌入. 目录 1. 词汇表征 2. 使用词嵌入 3. 词嵌入的特性 4. 嵌入矩阵 5. ...

  6. 2020-8-25 吴恩达DL学习-C4 卷积神经网络-第二周 CNN实例探究(2.7Inception 网络)

    1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c 2.详细笔记网站(中文):http://www.ai-sta ...

  7. 花书+吴恩达深度学习(十九)构建模型策略(训练模型顺序、偏差方差、数据集划分、数据不匹配)

    目录 0. 前言 1. 调试模型顺序 2. 偏差方差的解决方法 3. 数据集的选取划分 4. 数据不匹配问题 5. 评估指标的选取 6. 贝叶斯最佳误差 如果这篇文章对你有一点小小的帮助,请给个关注, ...

  8. 吴恩达深度学习之二《改善深层神经网络:超参数调试、正则化以及优化》学习笔记

    一.深度学习的实用层面 1.1 训练/开发/测试集 机器学习时代,数据集很小,可能100.1000.10000条,这种级别.可以按 70%.30% 划分训练集和测试集,训练后直接用测试集评估.或者按 ...

  9. 深度学习入门首推资料--吴恩达深度学习全程笔记分享

    本文首发于微信公众号"StrongerTang",可打开微信搜一搜,或扫描文末二维码,关注查看更多文章. 原文链接:(https://mp.weixin.qq.com/s?__bi ...

最新文章

  1. HDOJ-1062 Text Reverse
  2. 非因果滤波器 matlab,对于无阶跃响应不会过冲的无因果低通滤波器,最清晰的频率响应是什么?...
  3. 【干货】移动互联网时代的零售店面转型之道
  4. 【温故知新】HTML学习笔记(表格)
  5. Mybatis SQL拦截器实现
  6. 系统已有MYSQL环境,如何安装宝塔面板
  7. REVERSE-PRACTICE-BUUCTF-20
  8. Some Knowledge
  9. C++ 著名程序库 概览
  10. java List转Map
  11. 通信接口五种主要的类型是什么?RS-232、485、CAN、USB
  12. Hexo+阿里云服务器搭建属于自己的博客
  13. html顺序播放mp3,完美:按顺序播放mp3的方法是什么?如何更改U盘中歌曲的播放顺序...
  14. php个人发卡搭建教程,个人发卡平台ZFAKA程序搭建详细教程
  15. Android利用shape画虚线
  16. 健全营销体制是打造营销生态系统的命脉
  17. Angular4的双向数据绑定
  18. 光伏发电并网matlab/simulink仿真,带PLL锁相环,逆变器控制,最大功率控制MPPT,BOOST升压电路
  19. c语言建立26个字母的顺序表,线性表的操作建立一个含26个英文字母的数据元素的线性表并输出该表 爱问知识人...
  20. python晋江爬虫_python爬虫之小说爬取

热门文章

  1. AJAX W3CSchool 学习笔记
  2. 常用的命名规范/命名规则
  3. 网络安全内外忧患,发现儿童平板电脑中含有漏洞,容易遭遇***.
  4. Mistral 工作流组件之一 概述
  5. 量化投资学习——读书笔记
  6. HDOJ 2108 Shape of HDU(凸包问题)
  7. java swt griddata_SWT的GridData中一个需要注意的地方
  8. Unity脚本(2) --- 脚本生命周期以及脚本的控制台调试
  9. 帝国cmssitemap.php,帝国CMS教你制作sitemap.xml网站地图 - 立金哥
  10. python实现三层神经网络 (BP)