自然语言处理笔记
自然语言处理笔记 第二章 二元语法与中文分词-CSDN博客
自然语言处理笔记 第三章 隐马尔科夫模型与序列标注-CSDN博客
自然语言处理笔记 第五章 条件随机场与序列标注-CSDN博客
语言模型LM: 给定一个句子w ,语言模型就是计算句子的出现概率p(w)
的模型
朴素语言模型:
语料库:
基于这个语料库的计数统计,我们可以估计出世界上任何一个汉语句子的概率:
其他句子的概率都为0
实际遇到的句子大部分都在语料库之外,这意味着它们的概率都被当作0 ,这种现象被称为数据稀疏
更现实的计算方法,把句子表示为单词列表w=w1w2…wk ,每个wt,t∈[1,k]
都是一个单词,然后定义语言模型:
最大似然估计MLE:
c(w0…wt) 表示w0…wt
的计数(count),比如
p(商品 和 服务)=p(商品|BOS)p(和|BOS 商品)p(服务|BOS 商品 和)p(EOS|BOS 商品 和 服务=23×12×11×11=13
缺点:1、计算代价大 2、语料库中没有出现过的单词搭配概率为0
改进:
马尔科夫模型:
马尔可夫假设:有一串事件顺序发生,假设每个事件的发生概率只取决于前一个事件,这串事件构成的因果链被称作马尔可夫链
由于每次计算只涉及连续两个单词的二元接续,此时的语言模型称为二元语法模型
解决了计算代价大的问题
例:
新句子: 朴素模型中 p(商品 和 货币)=0
对于未知单词搭配概率为0的问题:
平滑策略:定义新的二元语法概率为:
模型的训练
加载语料库(训练集)如: 这就是个语料库
统计一元语法 统计二元语法
预测 (有一定的泛化能力)
构建词网:词网指的是句子中所有一元语法构成的网状结构
将句子中所有单词找出来,起始位置相同的单词写作一行,得到词网
第i行中长l的单词与第i+l行的所有单词互相连接,构成一个“词图”
若我们为词图每条边赋予二元语法的概率作为距离,中文分词任务转换为有向图的最长路径问题
(3) λ, μ∈(0,1) 两个平滑因子
(4)(0,1)的浮点数连乘会发生下溢出(P0),对概率取负对数,将浮点数乘法转化为负对数之间的加法:最长路径问题转化为负对数求和的最短路径问题
由马尔可夫链构成的网状图上的最短路径算法称为维特比算法
(5)
向前计算每一步的花费,向后才计算最短路径
与用户词典的集成
集成:将这个语料库( )的分词结果与用户词典(始终存在的核心大模型,存了一堆一元词)融合
语料库模型在训练时利用统计模型的消歧能力,辅以用户词典处理新词
模型训练和集成有两种方式:
干预词网:先扫描用户词典,将句子中用户词典出现的词语加入词网
误差分析,模型调整
前4个样本都可以通过增添用户词典来弥补
第5个句子则无法通过一元语法词典解决,因为“输”“气”“管道”3个词语已经在核心词典里。解决方法:增加二元语法及频次