NLP学习笔记14-语言模型(下)
一 序
本文属于贪心NLP 学习笔记系列。今天开始,明显的数学概念多了起来。
二 unigram
不考虑单词之间的顺序,依赖于马尔科夫假设。
假设w1,w2,...wn是相互独立的:一个事件的发生与否,不会影响另外一个事件的发生。
而P(w1)、P(w2).....P(wn)的计算方法如下:统计语料库中某个单词出现的次数,再除以语料库的总词数。
缺点: 单词相互独立,所以语义上不通顺的跟通顺的概率一样,不能很好的区分。
三 bigram(基于1st order markov assumption)
考虑单词之间(前面的单词)的顺序
而P(w1)、P(w2/w1).....P(wn/wn-1)的计算方法如下:统计语料库里面某个单词后目标单词的概率
四 N-gram
一般情况下,不会考虑N太多,bigram是最多使用的。
只要出现语料库没有的单词,就会出现概率为0的case。
五 语言模型的评估
但是,这种方法一方面难以操作,另一方面可能非常耗时,可能跑一个evaluation需要大量时间,费时难操作。有没有不经过上面的情况,直接评估语言模型呢?
可以给定一个句子,让语言模型类似填坑的方式预测单词,以此来评估语言模型。
Perplexity 困惑度
困惑度是交叉熵的指数形式,网上会搜到很多观念与困惑度的学术型回答,主要推导公式。
老师先给了通俗解释:给测试集的句子赋予较高概率值的语言模型较好,当语言模型训练完之后,测试集中的句子都是正常的句子,那么训练好的模型就是在测试集上的概率越高越好
这个在文本处理尤其是无监督学习很常用。
这里x= average log likelihood,都是术语,老师没有解释。还不太没明白。Perplexity= , X 越大,Perplexity越小。
计算规则: 现根据训练好的模型,去查询likelhood,再计算log,求平均得出x,代入公式Perplexity= ,计算
六 n-gram 语言模型中的平滑技术
我们知道自然语言处理中的一大痛点就是出现未登录词(OOV)的问题,即测试集中出现了训练集中未出现过的词,导致语言模型计算出的概率为零。
优化方法:smoothing 平滑
我们之前的概率计算,可以认为是最大似然估计(maximum likelihood estimation, MLE)。
样本太多,无法得出分布的参数值,可以采样小样本后,利用极大似然估计获取假设中分布的参数值。
这个也还没理解,老师说以后再展开讲。
就是利用已知的样本结果信息,反推最具有可能(最大概率)导致这些样本结果出现的模型参数值!
网上的例子:
假如有一个罐子,里面有黑白两种颜色的球,数目多少不知,两种颜色的比例也不知。我 们想知道罐中白球和黑球的比例,但我们不能把罐中的球全部拿出来数。现在我们可以每次任意从已经摇匀的罐中拿一个球出来,记录球的颜色,然后把拿出来的球 再放回罐中。这个过程可以重复,我们可以用记录的球的颜色来估计罐中黑白球的比例。假如在前面的一百次重复记录中,有七十次是白球,请问罐中白球所占的比例最有可能是多少?
70%,怎么推导的还不知偶。就是直觉了
这里的v是词典库的大小(不是所有单词出现多少次),分子加1可以理解,为了让那些出现频次为0的
NLP学习笔记14-语言模型(下)相关推荐
- NLP学习笔记6--Lecture/语言模型/预处理/独热编码/word2vec/文本特征工程
语言模型用来判断:是否一句话从语法上通顺 先分词 然后算出联合概率 怎么算? chain rule 条件很长的时候 会遇到一个问题 sparsity 数据的稀疏性 用马尔科夫假设 最简单的假设 之 ...
- 利用计算机技术实现对文本篇章,自然语言处理NLP学习笔记一:概念与模型初探...
前言 先来看一些demo,来一些直观的了解. 自然语言处理: 可以做中文分词,词性分析,文本摘要等,为后面的知识图谱做准备. 知识图谱: 还有2个实际应用的例子,加深对NLP的理解 九歌机器人: 微软 ...
- Linux学习笔记14
Linux学习笔记14 Linux学习笔记14 DNS服务搭建 基本介绍 使用bind搭建dns服务 增加一个域名zone 配置DNS转发 配置主从 测试主从同步 后续课程 DNS服务搭建 基本介绍 ...
- 华为HCIA-datacom 学习笔记14——WLAN概述
华为HCIA-datacom 学习笔记14--WLAN概述 1.WLAN(无线局域网) 通过无线技术构造的无线局域网络.WLAN广义上是指以无线电波.激光.红外线等无线信号代替有线局域网中的部分或全部 ...
- 【白帽子学习笔记14】SQL注入常用语句
[白帽子学习笔记14]SQL注入常用语句 目前网站中使用的最多的数据库要算是 ACCESS.SQL Server(MSSQL).MySQL 这三个了,所以这里的手工注入,我就以他们三个数据库来分成三 ...
- 学习笔记(1)centos7 下安装nginx
学习笔记(1)centos7 下安装nginx 这里我是通过来自nginx.org的nginx软件包进行安装的. 1.首先为centos设置添加nginx的yum存储库 1.通过vi命令创建一个rep ...
- node.js学习笔记14—微型社交网站
node.js学习笔记14-微型社交网站 1.功能分析 微博是以用户为中心,因此需要有注册和登录功能. 微博最核心的功能是信息的发表,这个功能包括许多方面,包括:数据库访问,前端显示等. 一个完整的微 ...
- 【转】 C#学习笔记14——Trace、Debug和TraceSource的使用以及日志设计
[转] C#学习笔记14--Trace.Debug和TraceSource的使用以及日志设计 Trace.Debug和TraceSource的使用以及日志设计 .NET Framework 命名空 ...
- 台大李宏毅Machine Learning 2017Fall学习笔记 (14)Unsupervised Learning:Linear Dimension Reduction
台大李宏毅Machine Learning 2017Fall学习笔记 (14)Unsupervised Learning:Linear Dimension Reduction 本博客整理自: http ...
- NLP学习笔记一(语言模型+NLM+Word2Vec)
花书十二章+NLP 最近刚好轮到自己讲花书十二章,感觉goodfellow在NLP这块写的不是很全,所以就自己参考宗老师的<统计自然语言处理>来理了一下思路,现在整理一下. 一.NLP前言 ...
最新文章
- 包子和饺子之扫地机器人_扫地机器人和体重秤在一起,能生出什么宝宝? | 爆笑囧图...
- shell编程之特殊变量
- 数学中不可能实现的图形
- MoneyRunner API汇总
- 用c++做算法题的注意事项(一)
- 复合存储引擎的设计和实现(包含ORM和内容存储)
- Linux安装 deb包命令
- STM8L超低功耗程序编写教学,简单易懂
- MDM数据清洗功能开发说明
- delphi LPT1端口打印与开钱箱
- 使用redis缓存来实现最近的浏览记录
- opengl介绍 webGL Open Inventor、Cosmo3D、Optimizer 3DLabs
- SM2算法+开发中注意事项
- golang中channal容量的问题
- 使用cle 调用opengl的简单例子(android)
- 求函数:x的n次方(函数递归)
- 低调,中国的FPGA到底有多强?!
- Webots中常用的函数(C版)
- 原厂对NPI安全稽核要求
- eclipse改变背景颜色及背景图片
热门文章
- C语言自制简单点菜系统
- Elasticsearch Nested类型深入详解
- Jetson TX1(视频)、TK1(音视频)
- android 加速度过滤,如何校准Android加速度计并降低噪音,消除重力
- 如何给人物模型添加动画效果
- BDC模式与OKCODE、 CALL TRANSACTION用法
- 两个自变量和一个因变量spss_两个自变量(离散)对一个因变量(连续)的影响(SPSS:双因素方差分析)...
- html可以简写的属性,css有哪些缩写属性?
- 基于Android的天气预报系统的设计和实现
- 服务器白屏维修,液晶屏故障汇总及检修方法之一(白屏)