自然语言处理(NLP)之三:语言模型
- 语言模型的定义
语言模型是一种预测语句符合语法规范1的概率的计算方法。对给定语句S=W1,W2,…,WnS = W_1, W_2, \dots, W_nS=W1,W2,…,Wn,其符合语法规范的概率为:
P(S)=P(W1,W2,…,Wn)(1)P(S) = P(W_1, W_2, …, W_n) \tag{1} P(S)=P(W1,W2,…,Wn)(1)
在条件概率公式的链式传导下,式(1)式(1)式(1)中联合概率可拆解成多个条件概率的乘积,所以语句符合语法规范的概率可改写为:
P(S)=P(W1,W2,…,Wn)=P(W1)P(W2∣W1)⋯P(Wn∣W1,W2,…,Wn−1)P(S) = P(W_1, W_2, …, W_n) = P(W_1)P(W_2| W_1) \cdots P(W_n| W_1, W_2, \dots , W_{n-1}) P(S)=P(W1,W2,…,Wn)=P(W1)P(W2∣W1)⋯P(Wn∣W1,W2,…,Wn−1)P(S)=P(W1,W2,…,Wn)=∏t=1nP(Wt∣W1,⋯,Wt−1)(2)P(S) = P(W_1, W_2, …, W_n) = \prod_{t=1}^{n} P(W_t | W_1, \cdots, W_{t-1} ) \tag{2} P(S)=P(W1,W2,…,Wn)=t=1∏nP(Wt∣W1,⋯,Wt−1)(2)具体来说,语言模型可理解为式(2)式(2)式(2)中条件概率 P(Wt∣W1,⋯,Wt−1)P(W_t | W_1, \cdots, W_{t-1} )P(Wt∣W1,⋯,Wt−1) 的计算方法。且按技术的发展阶段和模型功能不同,语言模型的发展脉络大致可归纳为:统计语言模型,神经网络语言模型、文本生成模型和预训练语言模型。
2. 语言模型的评估方法
2.1 直接评估法
在理想情况下,我们希望直接在特定任务中测试使用某语言模型后的任务效果,来评价语言模型的好坏。但该评价结果局限于某一具体任务,因此,独立于任务之外的间接模型评估方法被探索建立。
2.2 间接评估法
2.2.1 困惑度(perplexity)
困惑度(perplexity)方法由语言模型定义衍生而出,它的核心思想是:通过语言模型对符合语法规范的标准语句预测概率的高低,来评价语言模型的效果。其计算公式如下所示:
perplexity(S)=perplexity(W1,W2,…,Wn)=2−1n∑1nlog[P^LM(Wt∣W1,⋯,Wt−1)](6)perplexity(S) = perplexity(W_1, W_2, …, W_n) = 2^{-\frac{1}{n} \sum_{1}^{n} log[ \hat{P}_{LM}(W_t | W_1, \cdots, W_{t-1} ) ]} \tag{6} perplexity(S)=perplexity(W1,W2,…,Wn)=2−n1∑1nlog[P^LM(Wt∣W1,⋯,Wt−1)](6)
3 统计语言模型
单词在句子出现的概率及条件概率可直接从语料库中统计得到,但随着预测语句长度增长,许多单词在预测语句中出现的上文搭配,在训练语料中未曾出现过。这导致统计得到的单词条件概率为0,使语言模型预测失效。为此衍生出了多种基于统计学原理,简化复杂前置条件概率计算的语言模型,如:Unigram 和 Ngram。
3.1 Unigram
为简化具有复杂前置的条件概率计算,最理想的假设是认为单词在句中出现的概率相互独立,这称作Unigram模型。此条件下,单词在句中出现的条件概率等于该单词独立出现的概率,所以语句符合语法规范的概率可简化为:
P(S)=P(W1,W2,…,Wn)=P(W1)P(W2)⋯P(Wn)(3)P(S) = P(W_1, W_2, …, W_n) = P(W_1)P(W_2) \cdots P(W_n) \tag{3} P(S)=P(W1,W2,…,Wn)=P(W1)P(W2)⋯P(Wn)(3)
3.2 N-gram
Unigram模型简化假设过于理想,实际单词间往往存在语境关系、其出现概率不相互独立,所以衍生出基于马尔科夫假设简化条件概率的 nnn 元语法模型(N-gram)。关于 N-gram model 的详细内容,请参见作者文章:语言模型:N元语法模型(N-gram)
3.3 统计语言模型的平滑方法
虽然N-gram等模型有效缓解了长语句预测中,单词在预测语句上文条件下的条件概率极度稀疏(在语句较长时,近乎一定等于0)的问题。但训练得到的语言模型条件概率仍十分稀疏、容易引起模型预测失效,为此可引入模型平滑方法,进一步改善条件概率稀疏问题。详细内容,请参见作者文章:语言模型:统计语言模型的平滑方法
4 神经网络语言模型
神经网络语言模型是解决统计语言模型(N-gram)条件概率稀疏的有效方法,它可以在保证最大 nnn 值的同时,获得稠密的单词条件概率 P(Wt∣W1,⋯,Wt−1)P(W_t | W_1, \cdots, W_{t-1} )P(Wt∣W1,⋯,Wt−1)。
4.1 神经网络语言模型的结构
神经网络语言模型的结构一般可抽象为顺序排列的嵌入层、特征层和输出层三部分。其中,嵌入层负责将非数值类型的输入(文本)序列 (x1,⋯,xT)(x_1, \cdots, x_T)(x1,⋯,xT),转换成数值类型的编码向量 (e1,⋯,eT)(e_1, \cdots, e_T)(e1,⋯,eT);特征层负责从输入序列中提取特征,输出为一个可以表示历史信息的(隐藏)状态向量 (h1,⋯,hT)(h_1, \cdots, h_T)(h1,⋯,hT);输出层根据接收到的特征向量进行标签预测 (o1,⋯,oT)(o_1, \cdots, o_T)(o1,⋯,oT)。
其特征层,可使用多种类型的神经网络来提取特征,常见的有简单平均、前馈神经网络(前馈神经网络(feedforward neural network)可以是全连接神经网络或卷积神经网络)和循环神经网络三种2。
简单平均能处理不定长输入序列,它简单地将序列上文全部单词的词向量的直接平均值或加权平均值3作为本时刻的(隐藏)状态向量。
前馈神经网络要求输入是一个固定长度的序列,它与 N-gram 模型类似,都假设句子此时刻所表达的历史(语义)信息(即:隐藏状态)只与前面的 n−1 个词(token)有关;前馈神经网络某时刻的状态向量 ht=fDense/Conv(et−n+1,⋯,et−1;θ),t=1,2,3,⋯,Th_t = f_{Dense/Conv}(e_{t-n+1},\cdots, e_{t-1} ; \ \theta), \ \ t=1, 2, 3, \cdots, Tht=fDense/Conv(et−n+1,⋯,et−1; θ), t=1,2,3,⋯,T。
循环神经网络综合前两者优点,在能处理不定长输入序列的同时,也能有效提取输入序列中的特征信息。与只能接受前
自然语言处理(NLP)之三:语言模型相关推荐
- 自然语言处理NLP之语义相似度、语言模型、doc2vec
自然语言处理NLP之语义相似度.语言模型.doc2vec 目录 自然语言处理NLP之语义相似度.语言模型.doc2vec 语义相似度
- 深度学习与自然语言处理教程(5) - 语言模型、RNN、GRU与LSTM(NLP通关指南·完结)
作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/36 本文地址:https://www.showmeai.tech/article-d ...
- 自然语言处理NLP(3)——神经网络语言模型、词向量
在上一部分中,我们了解到了统计语言模型,n-gram模型以及语料库的基本知识: 自然语言处理NLP(2)--统计语言模型.语料库 在这一部分中,我们将在此基础上介绍神经网络语言模型以及词向量的相关知识 ...
- 自然语言处理NLP——ERNIE-M:基于回译机制的“预训练-微调”多语言模型
目录 系列文章目录 一.背景介绍 1.多语言任务 1.1 多语言任务定义 1.2 多语言任务难题 2.多语言模型 2.1 多语言模型定义与原理 2.2 多语言模型困难 3.论文简介 3.1 背景与开发 ...
- 大数据分析深度学习在自然语言处理NLP中的应用
通过深度学习的先进技术,自然语言处理取得了令人难以置信的进步.了解这些强大的模型,并发现这些方法与人类水平的理解有多近(或遥远). 人类有很多感觉,但我们的感官体验通常以视觉为主.考虑到这一点,现代机 ...
- 自然语言处理NLP简介
自然语言处理NLP简介 NLP简介 1 引言 人工智能.机器学习.深度学习 什么是自然语言处理? 人工智能的流派 2 NLP发展历史 人工智能发展历史 推理期 知识期 学习期 文本的预训练可分为两个重 ...
- 医学自然语言处理(NLP)相关论文汇总之 NAACL 2021
医学自然语言处理(NLP)相关论文汇总之 NAACL 2021 [写在前面]NAACL2021前段时间已经放榜,自己抽时间整理了一下该会议在医疗自然语言处理方向上的相关论文,放在这里,希望对大家有一定 ...
- 自然语言处理NLP(10)——语义分析
在上一部分中,我们介绍了句法分析中的局部句法分析以及依存关系分析(自然语言处理NLP(9)--句法分析c:局部句法分析.依存关系分析),至此,繁复冗长的句法分析部分就结束了. 在这一部分中,我们将要介 ...
- NLP常见语言模型及数据增强方法总结
文章目录 一.NLP常见语言模型 1.词的离散表示 1.One-hot编码(独热编码) 2.Bag of Words(BOW,词袋模型) 3.N-gram语言模型 2.词的分布式表示 1.共现矩阵(C ...
最新文章
- 慕课python第四周测试卷_中国大学慕课用Python玩转数据期末考试查题公众号答案...
- 执行系统命令,subprocess使用说明
- 你所不知道的SQL Server数据库启动过程,以及启动不起来的各种问题的分析及解决技巧(转)...
- 傅里叶变换是用来做什么的,具体举例一下应用?
- Android之混淆代码总结
- 关于Java浮点数运算精度丢失问题
- mysql插入性能测试
- asp 基础操作之增删改查
- visio2010绘制思维导图方法
- insert用法小结
- Nuscenes——环视相机下BEV时序融合:前后帧空间对齐操作
- 华为HCIP-DATACOM(821)411-440
- TIME_WAIT状态(2MSL)的作用
- 微信小程序 - 音乐播放器源码
- 搜索思维[PPT制作]
- Ubuntu出现Authentication failure(认证失败)的解决方法(转)
- 【白嫖系列】教育邮箱申请最新专业绘图软件OriginPro(官方渠道)
- win11怎么设置电脑字体大小
- MySql如何储存和获取ip地址?以及mysql储存和获取ip地址的底层实现原理!!
- 华硕笔记本扇热声音大
热门文章
- 【HDU 1846】 Brave Game DP爆破法
- 6.18科技新闻(2)
- 学术英语视听说2听力原文_大学英语新世纪视听说第二册听力原文及答案免费...
- hjr-MUD游戏(五):字符串与二进制与protobuf通信
- 【Python错误】Simplify chained comparison
- Caché程序员必须知道符号与缩写 第二章 ObjectScript中使用的缩写
- TypeScript类
- 为什么 Google 总是在不断地关闭产品呢?
- sql取上个月年月_SQL Server 取日期时只要年月或年月日
- 国庆来临,外贸人出货必须注意的几个点(附节日营销技巧)