淘宝领卷网站什么做,制造网站开发,直通车推广计划方案,企业网站seo价格语言模型介绍一 语言模型语言模型概念语言模型应用-语音识别声纹特征提取语言模型挑选成句 语言模型应用-手写识别语言模型应用-输入法语言模型分类语言模型评价指标-困惑度PPL N-gram语言模型马尔科夫假设平滑问题平滑问题解决一平滑问题解决二 插值优化语言模型应用-文本纠错… 语言模型介绍一 语言模型语言模型概念语言模型应用-语音识别声纹特征提取语言模型挑选成句 语言模型应用-手写识别语言模型应用-输入法语言模型分类语言模型评价指标-困惑度PPL N-gram语言模型马尔科夫假设平滑问题平滑问题解决一平滑问题解决二 插值优化语言模型应用-文本纠错实现方案 语言模型
语言模型概念
概念 语言模型用于计算文本的成句概率。
示例 P(今天天气不错) P(今错不天天气)。
释义 语言模型评价一句话是否“合理”或“是人话”。
语言模型应用-语音识别
流程图
声纹特征提取
流程 1.声音本质是一种波,将波按时间段切分很多帧如25ms一段 2.之后进行声学特征提取将每一帧转化成一个向量 3.经过经过声学模型预测得到音素音素与拼音类似 语言模型挑选成句
音素序列对应多条文本序列由语言模型挑选出成句概率最高的序列 为了提高效率会使用beam search或维特比的方式解码
语言模型应用-手写识别 识别模型将图片中文字转化为候选汉字一般分定位和识别两步再有语言模型挑选出成句概率最高的序列
比如识别到 浙 江 淅 冮 gang 明显浙江是我们常用的词下面的词都不知道有没有这个组合语言模型则会挑选出来
语言模型应用-输入法
释义 输入即为拼音序列每个拼音自然的有多个候选汉字根据语言模型挑选高概率序列
难点 输入法是一个细节繁多的任务在语言模型这一基础算法上需要考虑打字手误常见误读拼音缩略中英混杂输出符号用户习惯等能力
语言模型分类
按照复杂程度和发展分类 1.统计语言模型 SLM S Statistics ngram语言模型等
2.神经语言模型NLM N Neural rnn语言模型等
3.预训练语言模型PLM) P Pre-train Bert、GPT等
4.大语言模型LLM) L Large ChatGPT等
预测的方向来分类 1.自回归auto regressive语言模型 在训练时由上文预测下文或反过来 单向模型仅使用单侧序列信息 代表N-gramELMO, GPT
2.自编码auto encoding语言模型 在训练时预测序列中任意位置的字符 双向模型吸收上下文信息 代表BERT
语言模型评价指标-困惑度PPL
计算方式1
计算公式2
释义 根据上面两种计算公式推导可以知道PPL与成句概率成反比。
我们怎么通过PPL判断模型好坏呢 因为我们知道这是个相对的值即我们输入一些正常的句子成句概率高PPL小输入一些糟糕的句子成局概率小PPL大我们就说能够区别真句子和假句子这个模型可以。
局限性分析 我们知道按照上面的计算方式PPL的评判是有很大的局限的 1.好的句子成句概率高并不能说明模型很好 2.糟糕的句子只有在具体的场景中去验证因为如果只是随机拼接的糟糕句子实际在场景中也基本不会出现验证没有价值只有具体场景的具体情况进行分析和验证才行。 N-gram语言模型
计算成句概率 用S代表句子w代表单个字或词 S w1w2w3w4w5…wn P(S) P(w1,w2,w3,w4,w5…wn) 即S的概率为组成其所有的词按照顺序出现的概率词W1~Wn按顺序出现的概率 公式 P(w1,w2,w3,…,wn) P(w1)P(w2|w1)P(w3|w1,w2)…P(wn|w1,…,wn-1) 理解 就是首先在一个大的语料中统计出w1出现的概率然后统计在w1出现的次数中后面出现w2的概率.…一直往下就可以得到整个句子各个字或者词出现的概率相乘的到成句概率。
举例 P(今天) Count(今天) / Count_total 语料总词数
P(天气|今天) Count(今天 天气) / Count(今天)
P(不错|今天 天气) Count(今天 天气 不错) / Count(今天 天气)
P(今天天气不错) P(今天) P(天气|今天) P(不错|今天 天气)
n-gram 如果是统计两个词的成句概率就叫2-gram三个词就叫3-gram
二元组今天 天气 2 gram 三元组今天 天气 不错 3 gram
马尔科夫假设
起因 上面Ngram我们可以看出如果是10多个词甚至几十个词我们要计算的数据就太大了因为词的组合在每个语言中都太多了。那么超出所有的句子并且计算出每一个词的条件概率比较困难无法枚举。
所以提出了马尔科夫假设是为了简化计算。
假设 假设第n个词出现的概率只和它前面的有限个词有关那么公式就可以简化为
P(wn|w1,…,wn-1) ≈ P(wn|wn-3,wn-2,wn-1)
举例 P(今天天气不错) P(今)*P(天|今) *P(天|今天) *P(气|天天) *P(不|天气) *P(错|气不)
缺陷 1.影响第n个词的因素可能出现在前面很远的地方 2.影响第n个词的因素可能出现在其后面 动作的目标比如我 * 球 》打 3.影响第n个词的因素可能并不在文中 和地点有关 但是基于马尔科夫假设下依然可以得到非常有效的模型 平滑问题
引子 问题 如何给出语料中没出现过的词概率 举例 P(今天 天气 糟糕) P(今天)*P(天气|今天) *P(糟糕|天气)
释义 如果语料中没有出现过糟糕在天气后面出现的情况那么这句话的概率就为0语言模型的目的是计算成句的概率两句话如果都出现语料中的结构那概率都为零没法比较并且不论出现什么情况我们都不希望一句话的成句概率为零第一次出现也只能说明它的概率为零
上述就是我们说的语言模型中出现的平滑问题 1.理论上说任意的词组合成的句子概率都不应当为零 2.如何给没见过的词或ngram分配概率即为平滑问题 3.也称折扣问题discounting 平滑问题解决一
解决办法1.回退backoff 当三元组a b c不存在时退而寻找b c二元组的概率 P(c | a b) P(c | b) * Bow(ab) Bow(ab)称为二元组a b的回退概率和ab同时出现概率有关如果ab同时出现的概率高则说明是固定词的情况越大后面跟C的概率越小 回退概率有很多计算方式甚至可以设定为常数 回退可以迭代进行如序列 a b c d 1.P(d | a b c) P(d | b c) * Bow(abc) 2.P(d | bc) P(d | c) * Bow(bc) 3.P(d | c ) P(d) * Bow© 上述还是有个问题即最后回退到单个字出现的概率P(d)如果都没有怎么处理呢
解决办法2.1加1平滑 问题 即P(word)不存在如何处理。
两种情况这个字或者词在我们的语料里面没有它属于生僻字在字典上可以找到或者这个字或者词就从来没有出现过、
那么对这个没有出现的词的概率我们可以用下面公式表示 释义 1.V代表我们词表的大小既然之前没有出现过这个词那我们就假设本次出现了这一次。但是原来是没有的我们就假设所有的词表次都出现了一次 2.所以分母需要加上词表大小V 解决办法2.2平滑
释义 c代表统计语料中出现的次数即countWi-1Wi是一个词Wi-1是词中的一个字。比如我们和我。
平滑问题解决二 1.将低频词替换为 UNK 2.预测中遇到的未见过的词也用 UNK 代替 3.一语成谶 - 一语成 UNK 4.P( UNK |一 语 成) 这是一种nlp处理未登录词OOV的常见方法 UNK 是ngram模型中的一种特殊字符这样就可以避免概率为零的情况出现 插值优化
释义 受到回退平滑的启发在计算高阶ngram概率是同时考虑低阶的ngram概率值以插值给出最终结果 公式如下 结论 实践证明这种方式效果有提升 λ 可以在验证集上调参确定
语言模型应用-文本纠错
举例 我今天去了天暗门看人民英雄记念碑 我今天去了天安门看人民英雄纪念碑 错误可能是同音字或形近字等
实现方案
步骤 1.对每一个字建立一个混淆字集合 2.计算整句话成句概率 3.用混淆字集合中的词替代原句中的字重新计算概率 4.选取得分最高的一个候选句子如果这个句子比原句的得分增长超过一定的阈值 5.对下一个字重复步骤3-4直到句子末尾 如下
缺陷 1.无法解决多字少字问题 2.阈值的设置非常难把握如果设置过大达不到纠错效果如果设置过小造成大量替换有可能改变句子的原意 3.混淆字字表难以完备 4.语言模型的领域性会影响修改结果 5.连续的错字会大幅提升纠错难度 例如今天上午要过来办事 - 今天商务要过来办事 解决办法 限定一个修改白名单只判断特定的字词是否要修改 如限定只对所有发音为shang wu的片段计算是否修改为“商务”其余一概不做处理 对于深度学习模型而言错别字是可以容忍的所以纠错本身的重要性在下降一般只针对展示类任务