NLP基础——语言模型(LM)
文章目录
- NLP基础:语言模型(LM)
- 1. 模型评估(概率估计)
- 2. 平滑方法
- 3. LM在拼写纠正(Spell Correction)中的应用
NLP基础:语言模型(LM)
语言模型(LM,Language Model)就是用来判断某个句子是否语义通顺。首先对句子进行分词,句子的概率可以表示为各个词的联合概率:P(s)=P(w1,w2,...,wn)P(s)=P(w_1,w_2,...,w_n)P(s)=P(w1,w2,...,wn)。
根据Chain rule: P(A,B,C,D)=P(A)P(B|A)P(C|A,B)P(D|A,B,C),可以转化:
P(s)=P(w1,w2,...,wn)=P(w1)P(w2∣w1)P(w3∣w1,w2)...P(wn∣w1,w2,w3,...,wn−1)P(s)=P(w_1,w_2,...,w_n)=P(w_1)P(w_2|w_1)P(w_3|w_1,w_2)...P(w_n|w_1,w_2,w_3,...,w_{n-1}) P(s)=P(w1,w2,...,wn)=P(w1)P(w2∣w1)P(w3∣w1,w2)...P(wn∣w1,w2,w3,...,wn−1)
对于概率P(wn∣w1,w2,w3,...,wn−1)P(w_n|w_1,w_2,w_3,...,w_{n-1})P(wn∣w1,w2,w3,...,wn−1),条件很长,corpus里找不到单词,就容易导致稀疏性(sparsity),因此引入Markov Assumption:
- Unigram Model(1-gram): P(wn∣w1,w2,w3,...,wn−1)=P(wn)P(w_n|w_1,w_2,w_3,...,w_{n-1})=P(w_n)P(wn∣w1,w2,w3,...,wn−1)=P(wn)
- Bigram Model(2-gram): P(wn∣w1,w2,w3,...,wn−1)=P(wn∣wn−1)P(w_n|w_1,w_2,w_3,...,w_{n-1})=P(w_n|w_{n-1})P(wn∣w1,w2,w3,...,wn−1)=P(wn∣wn−1)
- Trigram Model(3-gram): P(wn∣w1,w2,w3,...,wn−1)=P(wn∣wn−2,wn−1)P(w_n|w_1,w_2,w_3,...,w_{n-1})=P(w_n|w_{n-2},w_{n-1})P(wn∣w1,w2,w3,...,wn−1)=P(wn∣wn−2,wn−1)
- …
- N-gram Model
因此,语言模型可表示为:
- Unigram Model: P(w1,w2,...,wn)=∑i=1nP(wi)P(w_1,w_2,...,w_n)= \sum_{i=1}^n P(w_i)P(w1,w2,...,wn)=∑i=1nP(wi)
- Bigram Model: P(w1,w2,...,wn)=P(w1)∑i=2nP(wi∣wi−1)P(w_1,w_2,...,w_n)= P(w_1)\sum_{i=2}^n P(w_i|w_{i-1})P(w1,w2,...,wn)=P(w1)∑i=2nP(wi∣wi−1)
- Trigram Model: P(w1,w2,...,wn)=P(w1)P(w2∣w1)∑i=3nP(wi∣wi−1,wi−2)P(w_1,w_2,...,w_n)= P(w_1)P(w_2|w_1)\sum_{i=3}^n P(w_i|w_{i-1},w_{i-2})P(w1,w2,...,wn)=P(w1)P(w2∣w1)∑i=3nP(wi∣wi−1,wi−2)
那么如何估计每个单词的概率呢?统计语料库corpus里出现的单词的频数来估计概率,即模型的训练过程。
比如,根据以下不同阶段的工作或选择构建不同的LM?
- N-gram里N的选择:Unigram, Bigram, Trigram,…
- 平滑处理方法的不同:Laplace smoothing, Interpolation, Good-Turing smoothing等10几种方法。(计算概率避免出现概率为0,在文本分类的问题中,当一个词语没有在训练样本中出现,该词语调概率为0,使用连乘计算文本出现概率时也为0。)
- 预处理方法:语料中去掉某些特定的人名地名等词,停用词等。
1. 模型评估(概率估计)
根据不同的选择可以有很多LM,又如何从中选择最好的一个呢?训练出来的语言模型效果是好还是坏?
理想情况下:
- 假设有语言模型A,B
- 选定一个特定的任务,比如拼写纠错,机器翻译(MT,Machine Translation)
- 把两个模型都应用到此任务中
- 最后比较准确率,从而判断A,B的表现
核心思路:P(w1,w2,...,wn)=P(w1)P(w2∣w1)P(w3∣w1,w2)...P(wn∣w1,w2,w3,...,wn−1)P(w_1,w_2,...,w_n)= P(w_1)P(w_2|w_1)P(w_3|w_1,w_2)...P(w_n|w_1,w_2,w_3,...,w_{n-1})P(w1,w2,...,wn)=P(w1)P(w2∣w1)P(w3∣w1,w2)...P(wn∣w1,w2,w3,...,wn−1)使概率乘积最大。
更简单的评估方法,不需要放在特定任务中——Perplexity:
Perplexity=2−x,x:averageloglikelihood\text{Perplexity}=2^{-x}, \quad x:average\quad log\quad likelihood Perplexity=2−x,x:averageloglikelihood
例如,Bigram Model:
BigramModel:P(w1,w2,w3,w4,w5)=P(w1)P(w2∣w1)P(w3∣w2)P(w4∣w3)P(w5∣w4)x=logP(w1)+logP(w2∣w1)+logP(w3∣w2)+logP(w4∣w3)+logP(w5∣w4)5⟹Perplexity=2−xBigram Model: P(w_1,w_2,w_3,w_4,w_5)=P(w_1)P(w_2|w_1)P(w_3|w_2)P(w_4|w_3)P(w_5|w_4)\\ x =\frac{logP(w_1)+logP(w_2|w_1)+logP(w_3|w_2)+logP(w_4|w_3)+logP(w_5|w_4)}{5} \Longrightarrow \text{Perplexity}=2^{-x} BigramModel:P(w1,w2,w3,w4,w5)=P(w1)P(w2∣w1)P(w3∣w2)P(w4∣w3)P(w5∣w4)x=5logP(w1)+logP(w2∣w1)+logP(w3∣w2)+logP(w4∣w3)+logP(w5∣w4)⟹Perplexity=2−x
Perplexity越小(LM中所有单词的概率乘积越大),LM越好。
2. 平滑方法
为了解决使用N-Gram模型时可能引入的稀疏数据问题,人们设计了多种平滑算法。
计算概率应避免出现概率为0,在文本分类的问题中,当一个词语没有在训练样本中出现,该词语概率为0,使用连乘计算文本出现概率时也为0。
可以用平滑处理方法:Laplace smoothing, Interpolation, Good-Turing smoothing等10几种方法。
- Add-one Smoothing(Laplace Smoothing)
P(wi∣wi−1)=c(wi−1,wi)+1c(wi−1)+VP(w_i|w_{i-1})=\frac{c(w_{i-1},w_i)+1}{c(w_{i-1})+V} P(wi∣wi−1)=c(wi−1)+Vc(wi−1,wi)+1
,V是词库大小(分母+V为了归一化,所有概率和=1)
- Add-K Smoothing(Laplace Smoothing)
P(wi∣wi−1)=c(wi−1,wi)+kc(wi−1)+kVP(w_i|w_{i-1})=\frac{c(w_{i-1},w_i)+k}{c(w_{i-1})+kV} P(wi∣wi−1)=c(wi−1)+kVc(wi−1,wi)+k
,V是词库大小(V=set(corpus))
Interpolation插值
在使用插值算法时,把不同阶别的N-Gram模型线性加权组合后再来使用。简单线性插值(Simple Linear Interpolation)可以用下面的公式来定义:
P(wi∣wi−2,wi−1)=λ1P(wi)+λ2P(wi∣wi−1)+λ3P(wi−2,wi−1)λ1+λ2+λ3=1P(w_i|w_{i-2},w_{i-1})=\lambda_1P(w_i)+\lambda_2P(w_i|w_{i-1})+\lambda_3P(w_{i-2},w_{i-1}) \\ \lambda_1 + \lambda_2 + \lambda_3 = 1 P(wi∣wi−2,wi−1)=λ1P(wi)+λ2P(wi∣wi−1)+λ3P(wi−2,wi−1)λ1+λ2+λ3=1
Good-Turing smoothing
基本思想: 用观察计数较高的 N-gram 数量来重新估计概率量大小,并把它指派给那些具有零计数或较低计数的 N-gram.
Idea: reallocate the probability mass of n-grams that occur r+1 times in the training data to the n-grams that occur r times.
在 Good Turing 下,对每一个计数 r,我们做一个调整,变为 r′r'r′,nrn_rnr表示出现过r次的N-gram:
r′=(r+1)nr+1/nrP(x:c(x)=r)=r′/Nr'= (r+1)n_{r+1}/n_r \\ P(x:c(x)=r)=r'/N r′=(r+1)nr+1/nrP(x:c(x)=r)=r′/N
3. LM在拼写纠正(Spell Correction)中的应用
一般地,拼写错误有两种:第一,词拼写错;第二,没有错词,语法有问题。
对于错词,之前的方法VS现在的方法
之前的方法:用户输入 --> 从词典中寻找编辑距离最小的词(需要遍历整个词典O(|V|) --> 返回现在的方法:用户输入 --> 生成编辑距离为1,2的字符串(candidates) --> 过滤 (根据上下文)--> 返回
如何过滤?
假设w是错词,改成正确的形式c:
c∗=argmaxc∈CandidatesP(c∣w)=argmaxc∈CandidatesP(w∣c)P(c)/P(w)=argmaxc∈CandidatesP(w∣c)P(c)\begin{aligned} c^{*} &= \mathop{\arg\max}\limits_{c \in Candidates} P(c|w) \\ &= \mathop{\arg\max}\limits_{c \in Candidates} P(w|c)P(c)/P(w) \\ &= \mathop{\arg\max}\limits_{c \in Candidates} P(w|c)P(c) \\ \end{aligned} c∗=c∈CandidatesargmaxP(c∣w)=c∈CandidatesargmaxP(w∣c)P(c)/P(w)=c∈CandidatesargmaxP(w∣c)P(c)
P(w∣c)P(w|c)P(w∣c)是(w,c)相关的score,P(c)P(c)P(c)是语言模型
第一,词拼写错:
- 首先是获取candidates,w所有可能的c,有两种方法来过滤出最优的正确词。
Edit Distance
设定不同编辑距离下(w,c)相关的score,例如d=1, score=0.8; d=2, score=0.2; other, score=0.
Collected data
P(w|c):当用户拼c时,有多少概率把它拼错位w?
从搜索引擎可以得到相关的历史数据,例如输入搜索词“appl",搜索框历史给出相关的可能的匹配词,统计出现的频率即可。
- 然后对候选词根据N-gram的概率最大化来选择最优的词c。
第二,没有错词,语法有问题。
根据LM来检查。
欢迎各位关注我的个人公众号:HsuDan,我将分享更多自己的学习心得、避坑总结、面试经验、AI最新技术资讯。
NLP基础——语言模型(LM)相关推荐
- 语言模型(LM)介绍及实操
原文地址:https://medium.com/analytics-vidhya/a-comprehensive-guide-to-build-your-own-language-model-in-p ...
- NLP常见语言模型及数据增强方法总结
文章目录 一.NLP常见语言模型 1.词的离散表示 1.One-hot编码(独热编码) 2.Bag of Words(BOW,词袋模型) 3.N-gram语言模型 2.词的分布式表示 1.共现矩阵(C ...
- 2021秋招-NLP基础任务模型-NER
NLP基础任务模型-NER 注: 基本全是转载,也都附加了转载链接,侵删. 多谢各位大佬的总结. 目录: 任务定义 简单综述 数据集细节总结 模型细节总结 损失函数计算 总结 NLP实战-中文命名实体 ...
- NLP基础:编辑距离+拼写纠错实战
NLP基础:编辑距离+拼写纠错实战 1. 编辑距离相关 1.1 编辑距离的计算 1.2 运行结果 1.3 生成特定编辑距离的字符串 1.3.1 生成与目标字符编辑距离为1的字符 1.3.2 运行结果 ...
- NLP《语言模型(一)-- 基于统计的N-Gram语言模型》
前言,上一篇我们学习了一些基于醉打匹配规则的分词方法,这一篇我们介绍基于概率统计的方法之一,概率语言模型LM. 一:什么是语言模型? 每一句话,都是由若干个词语组成,这些词语的排列组合由若干种,但是只 ...
- nlp基础—8.隐马尔科夫模型(HMM)分词实现
文章目录 引言 HMM分词实现 理论部分传送门: nlp基础-7.隐马尔可夫模型(HMM算法) 数据代码链接见:https://gitee.com/lj857335332/hmm-for-word-s ...
- 文本标注十要点 | NLP基础
NLP基础系列 1. 浅论语言与认知的关系 2. 为什么要处理自然语言 3. 计算机是如何理解自然语言的 文本标注十要点 实验 vs 应用 自然语言处理(NLP)是机器学习领域非常有挑战的一个分支. ...
- NLP基础 - 计算文本的相似度
NLP基础 - 计算文本的相似度 一.计算文本的相似度简介 二.举例 一.计算文本的相似度简介 计算两个文本间的相似度在NLP领域中的应用非常广,包括:搜索引擎.问答系统.聊天机器人.文本分类等. 计 ...
- bio和bieos哪个标注模式好_2021秋招-NLP基础任务模型-NER
NLP基础任务模型-NER 注: 基本全是转载,也都附加了转载链接,侵删. 多谢各位大佬的总结. 目录: 任务定义 简单综述 数据集细节总结 模型细节总结 损失函数计算 总结 NLP实战-中文命名实体 ...
最新文章
- 第一次冲刺-个人工作总结01
- C#实现树型结构TreeView节点拖拽的简单功能,附全部源码,供有需要的参考
- 教师计算机考试登记网,计算机等级考试及计算机资格考试
- 让Apache支持Wap网站
- wepy公共样式_小程序开发wepy框架类vue的开发方式
- 年底绩效考核期又来临,企业如何挑选一款好用的绩效考核管理系统?
- DUET DISPLAY分屏软件IOS账号共享
- weka进行十折交叉验证
- C++ 字符跑酷#3 游戏制作实录
- (32)【文件下载漏洞专题】Filedownload原理、漏洞出现、危害、漏洞利用……
- 移动硬盘不被系统识别的处理
- navicat的基本使用技巧
- Mixly for Mac米思齐安装过程遇到的问题(已解决)
- vue+node(express)+socket实现简单聊天
- FL Studio水果软件好用吗?对电脑硬件环境有哪些需求
- 熊掌号PHP,MIP企业网站模板(熊掌号)
- 【§狼族少年之淳伊美女主题(oo)】
- 旋转标注框数据标签制作-roLabelImg
- 图卷积神经网络--Graph Convolutional Networks for Hyperspectral Image Classification
- (三)ls-dyna做入水冲击仿真操作步骤