一、Noisy Channel Model

p(text|source) = k * p(source|text)P(text)   ----> Noisy Channel Model主要通过贝叶斯定理: p(text|source) = p(source|text)*p(text)/p(source)p(source) 为常数应用场景:语音识别、机器翻译、拼写纠错、OCR、密码破译机器翻译: 英文-翻译成-中文p(中文|英文) = k * p(英文|中文) * p(中文)(语言模型)argmax           Translation model拼接纠错:输入:错误的写法  输出:正确的写法p(正确的写法|错误的写法) = k * p(错误的写法|正确的写法) (->类似于编辑距离) * p(正确的写法)(->语言模型)语音识别:输入:语音  输出:转化为文本p(文本|语音信号) = k * p(语音信号 | 文本) (->Translation model)* p(文本) (->语言模型)密码破解:输入:加密字符串  输出:明文p(明文|加密字符串) = k * p(加密字符串|明文) * p(明文)(->语言模型)

二、语言模型

Language Model(LM)语言模型用来判断:是否一句话从语法上通顺例子:今天是周日  vs  周日是今天   -> 训练好的语言模型 -> P-LM(今天是周日) > P-LM(周日是今天)全民AI是趋势  vs  趋势是全民AI  Chain RuleP(A,B,C,D) = P(A)*P(B|A)*P(C|AB)P(D|ABC)P(A,B) = P(A|B)P(B) = p(B|A)P(A)p(休息|今天,是,春节,我们,都) 存在的问题就是"今天,是,春节,我们,都"这么长的字符串很少在文中出现,条件概率很难计算而且大部分都是0,没有任何意义解决办法:马尔科夫假设p(休息|今天,是,春节,我们,都) 约等于 p(休息|都) ("都" 离 "休息" 最近) first order 马尔科夫假设p(休息|今天,是,春节,我们,都) 约等于 p(休息|我们,都)   second order ....p(休息|今天,是,春节,我们,都) 约等于 p(休息|春节,我们,都)  third order ....字符串越长,统计出来的字符串越少,结果越小越不准确first order: p(w1,w2,w3,....wn) = p(w1)p(w2|w1)p(w3|w2)......p(wn|wn-1)例子:Language model(use second order)p(是|今天) = 0.01 p(今天) = 0.002 p(周日|是) = 0.001 p(周日|今天) = 0.0001 p(周日)=0.02 p(是|周日) = 0.0002比较:今天是周日 vs  今天周日是p-LM("今天是周日") = p(今天) * p(是|今天) * p(周日|是) = 0.002 * 0.001 * 0.001 = 2 * 10^(-8)p-LM("今天周日是") = p(今天) * p(周日|今天) * p(是|周日) = 4 * 10 ^ (-10)p-LM("今天是周日") > p-LM("今天周日是")语言模型分类(Language Model):Unigram: P(w1,w2,w3,w4,w5....wn) = p(w1)p(w2)p(w3)....p(wn)p(今天,是,春节,我们,都,休息) = p(今天)p(是)p(春节)p(我们)p(都)p(休息)p(今天,春节,是,我们,都,休息) = p(今天)p(春节)P(是)p(我们)p(都)p(休息)p(今天,是,春节,我们,都,休息) = p(今天,春节,是,我们,都,休息) 从上面可以看出,两个句子的值在算法上是相同的,但是本质上两个句子的质量是不一样的,体现出Unigram没有考虑词之间的顺序信息Bigram(first order 马尔科夫假设):P(w1,w2,w3,w4,w5....wn) = p(w1)p(w2|w1)p(w3|w2)......p(wn|wn-1)p(今天,是,春节,我们,都,休息) = p(今天)p(是|今天)p(春节|是)....p(今天,春节,是,我们,都,休息) = p(今天)p(春节|今天)p(是|春节)......Bigram考虑到前面一个单词p(今天,是,春节,我们,都,休息) > p(今天,春节,是,我们,都,休息)N-gramN = 3P(w1,w2,w3,w4,w5....wn) = p(w1)p(w2|w1)p(w3|w1w2)p(w4|w2w3)......一般N不会超过6、7,一般N会采用2

三、估计语言模型的概率

p(w1,w2,w3...wn) = p(w1)p(w2)....p(wn)根据语料库计算每一个单词的概率Bigram:Estimating Probability语料库:今天 的 天气 很好 啊我 很 想 出去 运动但 今天 上午 想 上课训练营 明天 才 开始"今天 上午 想 出去 运动"p-LM("今天 上午 想 出去 运动") = p-LM("今天")p-LM("上午|今天")p-LM(想|上午)p-LM(出去|想)p-LM(运动|出去) = 1/36p-LM("今天 上午 的 天气 很好 呢") = p-LM("今天")p-LM("上午|今天")p-LM("的|上午").... = 0p-LM("的|上午") = 0N-gram: Estimating Probablity语料库:N = 3"今天 上午 有 课程"
= p-LM("今天")*p-LM("上午"|"今天")*p-LM("有|今天,上午")*p-LM("课程|上午,有")

四、评估语言模型

Evaluation of Language ModelQ:训练出来的语言模型效果好还是坏?理想情况下:1、假设两个语言模型 A、B
2、选定一个特定的任务比如拼写纠错
3、把两个模型A,B都应用在此任务中
4、最后比较准确率,从而判断A,B的表现核心思路:今天 __今天天气 __今天天气很好,__........Perplexity:(无监督的方式下,针对文本的评估方法)Perplexity = 2^(-x)  x:average log likelihoodPerplexity越小越好假设应用Bigram训练好的Bigramp(天气|今天) = 0.01、P(今天) = 0.002、p(很好|天气) = 0.1、p(适合|很好) = 0.01、p(出去|适合) = 0.02、P(运动|出去) = 0.1likelihood(今天) p(今天) = 0.002 => logp(今天) = a1
今天(天气) p(天气|今天) = 0.01 => logp(天气|今天) = -2
今天天气(很好) p(很好|天气) = 0.1 => logp(很好|天气) = -1
今天天气很好,(适合) p(适合|很好) = 0.01 => log p(适合|很好) = -2
今天天气很好,适合(出去) p(出去|适合) = 0.02 => log p(出去|适合) = a2
今天天气很好,适合出去(运动) p(运动|出去) = 0.1 => log p(运动|出去) = -1x = (a1-2-1-2+a2-1)/6Perplexity = 2^(-x)很多出现概率为0的情况,采取平滑的方法Bigram"今天 训练营 没有" = P-LM("今天")*P-LM("训练营|今天")P-LM(没有|训练营) = 0"今天 没有 训练营 课程" = 0从语法上可以看出两个都是0,但是实际质量并不是相同的,第二个会好一些

五、平滑(Smoothing)

SmoothingAdd-one SmoothingAdd-k SmoothingInterperationGood-Turning Smoothing

NLP-基础知识-002 (语言模型)相关推荐

  1. NLP基础知识(语法语义、LDA、N-gram、词嵌入)

    文章目录 本节课大纲 Hyper-simplified linguistics Term spotting + handling negation, uncertainty ML to expand ...

  2. NLP基础知识(三)-AI应用篇

    文本间的推理关系,又称为文本蕴含关系 (TextualEntailment),作为一种基本的文本间语义联系,广泛存在于自然语言文本中. 简单的来说文本蕴含关系描述的是两个文本之间的推理关系,其中一个文 ...

  3. NLP基础:n-gram语言模型和神经网络语言模型

    文章目录 语言模型的计算 n-gram 语言模型 n-gram 平滑技术 神经网络语言模型(NNLM) 基本思想 神经网络语言模型小结 语言模型评价指标-困惑度 语言模型是自然语言处理中的重要技术,假 ...

  4. 【NLP基础知识】1.前言及研究方向概述

    目录 1.前言 什么是NLP? 学习课程前的重点申明 如何学? 教材推荐录 读过的很有收获的笔记(research篇) 读过的很有收获的笔记(工程实验篇) 重要模型一览 语言模型 自然语言处理的基本方 ...

  5. NLP基础知识之语音识别

    1. 语音识别的输出类别: 1)phoneme:输出为发音,比较简单,因为语音跟发音是一一对应的,但是需要一个词汇表,表示发音跟word的对应. 2)Grapheme:字母或者token 3)word ...

  6. NLP汉语自然语言处理入门基础知识介绍

    NLP汉语自然语言处理入门基础知识介绍 自然语言处理定义: 自然语言处理是一门计算机科学.人工智能以及语言学的交叉学科.虽然语言只是人工智能的一部分(人工智能还包括计算机视觉等),但它是非常独特的一部 ...

  7. 电子学——第002课:基础知识(电阻、电压、电流)

    目录 电子学--第002课:基础知识(电阻.电压.电流) 欧姆 测量皮肤的电阻 电池的内部构造 实验2:短路一个电池 实验3:如何熔断保险丝 基础知识: 伏特 安培 直流电和交流电 电池的发明者 电磁 ...

  8. NLP基础——语言模型(LM)

    文章目录 NLP基础:语言模型(LM) 1. 模型评估(概率估计) 2. 平滑方法 3. LM在拼写纠正(Spell Correction)中的应用 NLP基础:语言模型(LM) 语言模型(LM,La ...

  9. Penn Treebank数据集介绍+句法分析parsed的基本语法+句法分析基础知识+NLP常用公开数据集汇总及下载

    Penn Treebank数据集介绍+句法分析parsed的基本语法+句法分析基础知识+NLP常用公开数据集汇总及下载 Penn Treebank数据集介绍 NLP底层技术之句法分析 NLP常用公开数 ...

最新文章

  1. javascript之执行上下文堆栈
  2. 基于MATLAB的仿windows画图板功能的实现
  3. ML之NB:利用朴素贝叶斯NB算法(TfidfVectorizer+不去除停用词)对20类新闻文本数据集进行分类预测、评估
  4. win7 asp虚拟服务器,win7怎么利用ASP获取服务器IP地址 win7利用ASP获取服务器IP地址教程...
  5. php json_decode NULL
  6. IE6/7下不同的inline-block
  7. 通过一个最简单的程序入门Windows编程
  8. 2019全球最强100家AI公司名单出炉,6家中国公司上榜
  9. 增长量计算n+1原则_资料分析几大常用公式,增速、A/B型公式.....
  10. 十三天学会C语言笔记
  11. 通过尾注设置参考文献
  12. 基于kinect的人体动作识别系统
  13. 护眼台灯界的“变形金刚”,性能爆表还帅气十足 | 钛空智慧星球推荐
  14. 和导师的微信聊天翻车现场,你一定也经历过!
  15. 信息与计算机科学丛书,信息与计算科学丛书: 典藏版
  16. 了解ZigBee以及硬件环境
  17. Python2.X无换行无空格输出
  18. 解读PMP考点:管理储备和应急储备
  19. IP地址更改小工具(bat命令)
  20. MachineLearning---Hebbian Learning

热门文章

  1. docker数据卷备份恢复以及配置桥接网络
  2. 【Connection Events】【BLE】【原创】
  3. mysql 关于日期时间的字段类型
  4. 个人学习Linux决心书
  5. c#实现数据集合转换为csv文本
  6. JDBC驱动的动态加载
  7. ***后门与密码破解
  8. 【Google官方教程】第三课:缓存Bitmap
  9. nginx+fastcgi+c/c++搭建高性能Web框架
  10. 合并多个Word文档