对语言模型(Language Model)与n-gram的理解
目录
1 语言模型(Language Model)的定义
2 N-gram
2.1 链式法则(chain rule)
2.2 马尔可夫假设和n-gram
2.3 拉普拉斯平滑(Laplace Smoothing)
2.4 语言模型的评价标准(n如何选取?)
1 语言模型(Language Model)的定义
- 定义:语言模型是一个单纯的、统一的、抽象的形式系统,语言客观事实经过语言模型的描述,比较适合于电子计算机进行自动处理,因而语言模型对于自然语言的信息处理具有重大的意义。
- 数学角度理解:语言模型就是对于一个语素序列 ,计算出这个语素序列的概率,即: (语素指语言中最小的音义结合体,一般来说就是独立的词)
简单来说就是通过一些数学手段,计算出对于一个句子的概率大小,概率大这句话就是正确的,概率小这句话就是错误的。例如:,这里是存在语序的。
语言模型主要有三种类型:1. 生成性模型,2. 分析性模型,3. 辨识性模型。这里我的理解就是NLG和NLU,NLG就是根据意思生成文本或语音,NLU就是根据语音或文本理解它的意思,第三个是前两者的结合体从而实现更强大的功能。
2 N-gram
2.1 链式法则(chain rule)
首先需要知道链式法则:
把上面提到的语言模型带入可以得到:
其中 、、都可以看做条件概率,因此带入条件概率的公式可以得到:
、等等,以此类推。
是词在语料库中出现的概率,用极大似然估计计算条件概率可以得到:
、,其中count是计算一个或几个词共同出现在语料中的次数。
但是这个方法存在几个缺陷:
- 根据上面的链式规则,求一个长度为n的句子的概率,使用链式规则展开后有n项,当n比较大的时候计算起来很麻烦。
- 更重要的是,当n很大时,在语料中同时出现的概率几乎为0,导致在使用链式法则,连乘计算概率的时候很容易崩溃,这样的计方法显然不合理。
由此引出了马尔可夫假设和n-gram。
2.2 马尔可夫假设和n-gram
马尔可夫假设(Markov assumption)指的是下一个词的出现仅依赖于它前面的一个或几个词。这样就可以有效减少使用链式法则后的长度,同时很少的几个词在语料中同时出现的概率较大,使它不容易崩溃。即:假设当前词出现的概率只依赖于前 个词,使用公式表示马尔可夫假设:
基于马尔科夫假设,提出了n-gram模型如下:
- 当时,每个词的出现只与自己有关,因此每个词相互独立,被称之为Unigram
- 当时,每个词的出现只与前一个词有关,被称为Bigram
- 当时,每个词的出现只与前两个词有关,被称为Trigram
所以n-gram的n表示下一个单词的出现依赖于前个单词,这个n可以根据具体情况来取,但是一般Unigram、Bigram、Trigram比较常用,n太大也会出现上面提到的问题。
2.3 拉普拉斯平滑(Laplace Smoothing)
拉普拉斯平滑主要是用来解决零概率问题,在这个模型中,当某个单词没有在预料库中出现(OOV)导致MLE计算概率时分子分母均为0,导致模型崩溃。以及上面提到的,当某几个单词的序列没有出现在语料中时,也会出现这个问题,因此引出了拉普拉斯平滑。
即在分母加上语料库的大小V,在分子加上1,分子+1是防止概率为0,分母+分类数是为了使得所有概率相加等于1。
当然也可以在分母加上语料库的大小kV,在分子加上k,k是一个超参。
这样就保证所有的概率均大于0,不会出现零概率问题,同时也保证了概率的归一化。平滑技术在朴素贝叶斯中也有应用。
2.4 语言模型的评价标准(n如何选取?)
在此引入困惑度的概念(Perplexity),Perplexity衡量了一个语言模型的好坏,Perplexity的计算公式如下:
是平均对数似然函数,困惑度越小,模型越好。
对语言模型(Language Model)与n-gram的理解相关推荐
- NLP中的语言模型(language model)
什么是语言模型 本文参考维基百科语言模型 language model 统计语言模型是一个单词序列上的概率分布,对于一个给定长度为m的序列,它可以为整个序列产生一个概率 P(w_1,w_2,-,w_m ...
- 【PyTorch】语言模型/Language model
1 模型描述 (1)语言模型的定义,来自于维基百科 统计式的语言模型是一个几率分布.语言模型提供上下文来区分听起来相似的单词和短语.例如,短语"再给我两份葱,让我把记忆煎成饼"和& ...
- Statistical language model 统计语言模型
学习笔记来自斯坦福公开课的自然语言处理(https://class.coursera.org/nlp/),以其中讲义为主,加入自己的学习理解,以加深学习印象. 内容提纲: 1. N-GRAM介绍 2. ...
- NLP问题特征表达基础 - 语言模型(Language Model)发展演化历程讨论
1. NLP问题简介 0x1:NLP问题都包括哪些内涵 人们对真实世界的感知被成为感知世界,而人们用语言表达出自己的感知视为文本数据.那么反过来,NLP,或者更精确地表达为文本挖掘,则是从文本数据出发 ...
- 统计语言模型(Statistical Language Model)
自然语言处理的一个基本问题就是为其上下文相关的特性建立数学模型,即统计语言模型(Statistical Language Model),它是自然语言处理的基础. 1 用数学的方法描述语言规律 假定S表 ...
- 论文阅读:A Neural Probabilistic Language Model 一种神经概率语言模型
A Neural Probabilistic Language Model 一种神经概率语言模型 目录 A Neural Probabilistic Language Model 一种神经概率语言模型 ...
- 【预训练语言模型】WKLM: Pretrained Encyclopedia: Weakly Supervised Knowledge-Pretrained Language Model
[预训练语言模型]WKLM:Pretrained Encyclopedia: Weakly Supervised Knowledge-Pretrained Language Model 知识增强的 ...
- 自然语言处理从入门到应用——自然语言处理的语言模型(Language Model,LM)
分类目录:<自然语言处理从入门到应用>总目录 语言模型(Language Model,LM)(也称统计语言模型)是描述自然语言概率分布的模型,是一个非常基础和重要的自然语言处理任务.利用语 ...
- A Neural Probabilistic Language Model 论文阅读及实战
1.词向量介绍 在NLP任务中,第一步首先将自然语言转化成数学符号表示.一般常用的词汇表示方法:one-hot表示,这种方法是将每个单词表示为一个很长的向量,这个向量的长度是词汇表的大小,其中绝大数元 ...
- NTU 课程笔记 :NLP - language model
1 language model 一个语言模型会接受一组历史单词,然后尝试着预测跟在这组单词之后的单词
最新文章
- 随笔:项目感想、知识总结、未来展望
- pytorch:多项式回归
- html不用点击自动执行,页面自动执行(加载)js的几种方法
- (五)SpringBoot 能挣钱的几个项目!!!
- python编程求导数_面向对象编程 —— java实现函数求导
- php三级分销系统制作_微分销商城系统创建三级微商分销体系方法
- Springboot 页面访问不到静态资源Failed to load resource: the server responded with a status of 404 ()
- py编程技巧-2.5-如何在一个for语句中迭代多个可迭代队象(并行串行)?
- c语言求100∑k=1k 30,C语言程序设计〔第三章〕.ppt
- 制作首页的显示列表(2017.11.29)
- Linux 信号(signal)
- 让APK只包含指定的ABI(转)
- bootstrapt使用
- UnityWebPlayer使用(2) 动态改变src
- html5理财计算,理财收益怎么算(一般理财产品的收益计算方法)
- Tagxedo在线云词成像制作工具
- 关于CM3/CM4位带操作的总结
- 近距离看GPU计算(2)
- oracle限定词,ORACLE诊断事件
- [zz]Freeware, Open source and Commercial Website Security Tools and Services