花书十二章+NLP

最近刚好轮到自己讲花书十二章,感觉goodfellow在NLP这块写的不是很全,所以就自己参考宗老师的《统计自然语言处理》来理了一下思路,现在整理一下。

一.NLP前言

1.主要研究领域

机器翻译、自动文摘、信息检索、文档分类、问答系统、信息过滤、信息抽取、文本挖掘、舆情分析、光字符识别、说话人识别/验证、语音识别、语音合成(语音这块实际上也可以是单独的一个大类,毕竟深度学习应用的最好最主流的领域一般都包括三个:CV+语音识别+NLP)

2.NLP基础研究内容

(1)词法层次:研究词的内部结构,包括汉语分词、命名实体识别(中文命名实体识别)、词性标注、词向量等
(2)句法层次:研究句子结构成分之间的相互关系和组成句子序列的规则,主要是句法分析
(3)语义学:根据句子的语法结构和句中每个词的含义推导能够反映这个句子意义的某种形式化表示,包括词义消歧、语义角色标注、知识图谱
(4)语用学:研究特定语境下的语义,主要是共指消解(包括中文共指消解)(什么是共指消解:人们为了避免重复习惯用代词、称谓或者缩略语等等来指代前面提到的实体名称,比如文章开始写“西南财经大学”,后面一般就是“西财”、“财大”这种,这就是共指现象,而共指消解就是将现实世界中同一实体的不同描述合并到一起)

3.NLP面临的主要困难

(1)歧义消解:比如词义消歧、共指消解、注音歧义、词汇形态歧义、语法结构歧义等
(2)未知语言现象的处理(比如网络语言等等)、病构(理论上不符合句法结构,但是实际中存在)

4.两种技术思路

(1)基于理性主义:基于知识的方法,采用非歧义的规则形式
(2)基于经验主义:以基于语料库的统计分析为基础
现在发展起来的也是第二种,然后逐渐过渡到深度学习模型

二.语言模型

既然是统计分析方法,那么必须要讲的就是语言模型,它们是NLP里面发展最早的,主要解决的就是一个句子出现概率的问题,包括两类:一类是传统语言模型,也就是n-gram语言模型;一类是神经网络语言模型

1.n-gram

给定一个句子,如何判断这个句子在整个语料库中出现的概率,很明显一个句子可以拆分为多个词,那么我们计算一个句子的出现概率实际上就可以转化为其中的每个词出现的概率然后再累乘,但是计算每个词出现的概率的时候是否还应该考虑这个词和它之前词的依赖关系,所以这就是n-gram的计算公式,包含了条件概率、极大似然和马尔可夫链的假设

马尔可夫链的思想就是当前的第n个词出现的概率取决于前n-1个词,此时,给定一个语料库,我们就可以基于上面的公式来计算一个句子出现的概率。
但是这样直接用前n-1个词会使得计算复杂度猛增,所以为了简化,往往采用k阶马尔可夫假设,即第n个词只与前k个词有关,k一般取3、4、5
比如,k=2时,为3-gram模型,计算公式为:

那么接下来,就只需要计算这个公式中的每一个条件概率即可,我们把条件概率公式写开,那么又会发现存在问题:
(1)分母为0怎么办?因为可能这个短句子并不会在语料库中出现
(2)分子为0怎么办?分子为0也会使得整个句子计算公式的负对数似然为∞
所以出现了两种建模时的解决方法:
(1)平滑
平滑的方法有很多,最简单就是加1平滑,具体的在宗成庆老师那本书上都有
(2)back-off(回退)
高阶n-gram模型的概率计算不了时,就回退到低阶
因此基于上面的论述,我们就可以对一个句子出现的概率进行建模。
那么n-gram模型具有怎样的缺点呢?
(1)维数灾难:词表大小为V的n-gram数目为V^n,n增大,那么要计算的n-gram数目会指数级的速率增加
(2)平滑或者back-off的方法都是人工设计规则,且比较繁杂,会适合哪种语料不清楚
(3)基于极大似然的n-gram缺少泛化,比较死板
所以在这种情况下,我们必须要找到更好的语言模型来建模

2.NLM(神经语言模型)

其模型还是计算条件概率,只是现在条件概率是在神经网络中计算,最后以softmax概率形式输出,当词表V很大时,采用分层的softmax(也就是将原本的1层softmax转化为多层O(logN)个逻辑回归,在每个逻辑回归处做二分类来预测当前词应当去到哪一个节点,这样计算的复杂度从O(N)降为O(logN))

三.词向量

NLP中最细粒度的是词,词组成句子,句子组成段落,所以处理NLP任务首先必须要对词进行学习,这里类似于图像中,我们很容易就会想到建立函数关系,比如x为词,y为词性,那么建立f(x)到y的映射就可以学习到词性这个信息。但是我们要明白的是不论是神经网络还是SVM或者隐马,都只接受数值型的输入,所以要把单词转化为数值,应该怎么处理?
首先引入一个概念,这里相当于是要把单词转化为数值型,或者,更严格的表述就是将单词嵌入到一个数值空间中,这种嵌入方式就称为词嵌入(word embedding),而Word2vec(Google,2013)就是处理词嵌入中最基础也是最常用的一种。

1.Word2Vec

在NLP中,x如果是一个词,y是上下文单词,那么f就是我们刚刚介绍的n-gram语言模型或者NLM,这个建模的目的就是来判断(x,y)这个样本点是否会出现(通俗的说,就是x和y放一起,是不是人话),所以word2vec就是这样一种想法,但它的最终目的不是要f训练的多么好,而是只关心模型训练完后的参数(也就是说,训练完成后不会用这个模型来处理新任务,真正需要的只是模型训练后的参数),得到这些参数之后,作为输入x的某种向量化表示,这个向量就称为词向量
word2vec是两种网络架构分别是skip-gram和CBOW,首先是用one-hot对x进行编码,转为为数值型,然后再用下面的两种网络架构来训练得到词向量
(1)skip-gram
一个词语作为输入,来预测它周围的上下文单词出现的概率就是skip-gram的任务,这个网络上的隐藏层的激活函数是线性的,相当于没做任何处理

对于第一个单词的one-hot向量,输入到隐藏层中只有1那个位置会被激活,其他0位置的神经元都是关闭状态,从而得到了一个V*1维向量,用来唯一表示x
skip-gram最后得到的词向量维度是远远小于句子中单词总数,所以实现了降维,最后一层输出层同样使用了分层的softmax来解决高维输出问题。
当然还有其他的方法来解决高维输出问题:
(1)使用短列表
(2)重要性采样
(3)噪声对比估计和排名损失

NLP学习笔记一(语言模型+NLM+Word2Vec)相关推荐

  1. NLP学习笔记6--Lecture/语言模型/预处理/独热编码/word2vec/文本特征工程

    语言模型用来判断:是否一句话从语法上通顺 先分词  然后算出联合概率 怎么算? chain rule 条件很长的时候 会遇到一个问题 sparsity 数据的稀疏性 用马尔科夫假设  最简单的假设 之 ...

  2. NLP自然语言处理学习笔记(二)Word2Vec

    NLP自然语言处理学习笔记(二)Word2Vec 一.Word2Vec 二.负采样 本文是根据吴恩达教授的教学视频来整理的学习笔记,部分图片来源于视频的截图.原教学视频连接 https://mooc. ...

  3. 利用计算机技术实现对文本篇章,自然语言处理NLP学习笔记一:概念与模型初探...

    前言 先来看一些demo,来一些直观的了解. 自然语言处理: 可以做中文分词,词性分析,文本摘要等,为后面的知识图谱做准备. 知识图谱: 还有2个实际应用的例子,加深对NLP的理解 九歌机器人: 微软 ...

  4. 词向量学习笔记(一)Word2vec

    词向量学习笔记(一)Word2vec 文章目录 词向量学习笔记(一)Word2vec 一.概述 二.词向量 2.1词的独热表示one-hot 2.2 词的分布式表示 三.原理--Skip-gram和C ...

  5. NLP学习笔记41-递归神经网络

    一 序 本文属于贪心NLP训练营学习笔记系列.    为什么需要递归神经网络? 类似天气.股票.语音这种数据,是时序数据,对于语音:同一个单词不同人说对应时长不同. 之前学习的多层感知器,假设输入是一 ...

  6. NLP学习笔记(一)

    这是一个学习笔记,会有一些学习记录和自己的规划.一些想法...... 一.贪心学院第十期豆瓣电影预测评分项目 1.文本转化成向量,将使用三种方式,分别为tf-idf, word2vec以及BERT向量 ...

  7. PaddlePaddle NLP学习笔记1 词向量

    文章目录 1.语言模型 Language Model 1.1 语言模型是什么 1.2 语言模型计算什么 1.3 n-gram Language Model 2.神经网络语言模型NNLM 2.1 N-g ...

  8. NLP学习笔记30-SVM 对偶、KTT,核函数

    一 序 本文属于贪心NLP训练营学习笔记系列. 二 Mapping Feature to High Dimensional Space 如图所示,转换是包含两部分的工作的,第一步是从低维特征向量转换为 ...

  9. NLP学习笔记25-情绪识别实战及数据集下载

    一 序 本文属于贪心NLP训练营学习笔记系列. 这节课在线性回归及正则里面穿插的讲.对于从逻辑回归开始明显感到主要就是 讲数学公式的推导了.好难. 二 情绪识别实战 Python吧就是看了点语法,所以 ...

最新文章

  1. dell笔记本耳机怎么设置_win10笔记本怎么设置合上盖子不休眠
  2. qt creator 构建(build) 执行cmake 部署的区别?(未解决)
  3. 微型计算机性能指标中可靠性是指连续,计算机接口原理定义
  4. [JavaWeb-JavaScript]JavaScript_Data日期对象
  5. Array,List,数据类型,caseclss模式匹配
  6. SAP License:雾里看花系列——做管理还要懂SAP吗?
  7. bzoj千题计划227:bzoj1486: [HNOI2009]最小圈
  8. 腾讯广告算法大赛 | 这是一篇雪中送炭的赛题宝典
  9. Jmeter学习笔记(三)文件上传
  10. Linux进程间通信——使用命名管道
  11. RocketMQ源码-基于Netty的通信层设计
  12. 批量提取html文件数据库,风越批量文本提取器
  13. Camera_Hal3_User_Manual
  14. 通过js操作jwplayer来播放暂停
  15. 金庸:为什么历史上没有一个国家能成功吞并中国?
  16. Xamarin iOS 切换开发者账号之后的签名标识和预配配置文件更新方法
  17. 二十六、多线程练习题
  18. Windows系统下安装Linux双系统(硬盘安装)
  19. MIC的常见问题分析
  20. 2020年就要过去了,我们决定用这种方式记住它

热门文章

  1. 难以置信:字节AI-Lab这个领域面试居然没问AI知识
  2. Ansible ping Unreachable TimeOut解决
  3. c语言 操作系统原理,操作系统原理 第2版
  4. 做网站应该搭建哪些功能栏目管理模块?
  5. 数字图像处理——双边滤波
  6. php 模拟登录支付宝,PHP实现支付宝登录
  7. C# 基础(七)c# 编译没有任务错误,运行时抛出异常,错误代码 HRESULT = 0x8000ffff. 同时解决设置断点后,没办法单步执行问题
  8. html中纵向分块的代码,html标签 —— 块级元素
  9. IntelliJ IDEA破解教程(方式二)
  10. 在向设计 ——眼里有诗 自在远方