词性标注HMM模型之TnT — A Statistical Part-of-Speech Tagger (2000) 论文解读
这里写目录标题
- 概述
- 内容背景介绍
- 模型体系架构
- 目标函数推导
- Smoothing 处理
- 未知词的处理
- 大小写问题
- 定向搜索
- 总结
概述
该文作者是德国萨尔大学的Thorsten Brants,作者认为Tri-Grams’n’Tages(TnT)可以作为一种有效的词性标记统计方法,并且作者认为基于马尔科夫(Markov model)的标记器理论上性能是和其他模型相当的,此外使用平滑的方法(Smoothing)处理了未出现词的概率。下面我们就来看看该文作者具体是怎么实现的。
内容背景介绍
语言处理系统都会使用词性标记器进行预处理。标记器为输入中的每个标记分配一部分(唯一或不明确的)语音标记,并将其输出传递到下一个处理级别,通常是解析器。
当时的时间点下,基于最大熵框架的统计方法表现出了很强的应用性。但是,作者认为马尔可夫模型和良好的平滑技术对未知单词的处理可以获得了很高的准确度,而且在训练和标记方面都是最快的。
模型体系架构
目标函数推导
TnT使用二阶Markov模型进行词性标注。模型隐含层为词性标注,观测值为句中单词,转换概率取决于隐含层的状态矩阵。此外,输出概率仅取决于最近的类别。目标函数可以表示为(文献中):
该公式我不太了解作者是怎么推导的,我按照他的Tri-Grams进行了重新推导,推导过程如下:
如图所示为HMM模型的概率图结构,其中x标签为观测值在词性标注中为观测到的单词,y为隐含层在词性标注中为需要预测的单词词性。
HMM是一种生成模型其目标概率是最大化x和y的联合概率:
a r g m a x ( p ( x 1 , x 2 . . . x n , y 1 , y 2 . . . y n ) ) argmax (p(x_1,x_2...x_n,y_1,y_2...y_n)) argmax(p(x1,x2...xn,y1,y2...yn))
使用条件概率将上述公式展开:
a r g m a x [ p ( x 1 , x 2 . . . x n ∣ y 1 , y 2 . . . y n ) ∗ p ( y 1 , y 2 . . . y n ) ] argmax[p(x_1,x_2...x_n|y_1,y_2...y_n)*p(y_1,y_2...y_n)] argmax[p(x1,x2...xn∣y1,y2...yn)∗p(y1,y2...yn)]
基于观测独立假设上述公式简化为:
a r g m a x [ p ( x 1 ∣ y 1 , y 2 . . . y n ) ∗ p ( x 2 ∣ y 1 , y 2 . . . y n ) . . . p ( x n ∣ y 1 , y 2 . . . y n ) ∗ p ( y 1 , y 2 . . . y n ) ] argmax[p(x_1|y_1,y_2...y_n)*p(x_2|y_1,y_2...y_n)...p(x_n|y_1,y_2...y_n)*p(y_1,y_2...y_n)] argmax[p(x1∣y1,y2...yn)∗p(x2∣y1,y2...yn)...p(xn∣y1,y2...yn)∗p(y1,y2...yn)]
进一步简化为:
a r g m a x [ p ( x 1 ∣ y 1 , ) ∗ p ( x 2 ∣ y 2 ) . . . p ( x n ∣ y n ) ∗ p ( y 1 , y 2 . . . y n ) ] argmax[p(x_1|y_1,)*p(x_2|y_2)...p(x_n|y_n)*p(y_1,y_2...y_n)] argmax[p(x1∣y1,)∗p(x2∣y2)...p(xn∣yn)∗p(y1,y2...yn)]
即:
a r g m a x [ ∏ i = 0 n [ p ( x i ∣ y i ) ] ∗ p ( y 1 , y 2 . . . y n ) ] argmax[\prod \limits_{i=0}^n[p(x_i|y_i)]*p(y_1,y_2...y_n)] argmax[i=0∏n[p(xi∣yi)]∗p(y1,y2...yn)]
继续使用条件概率将上述公式转化为:
a r g m a x [ ∏ i = 1 n [ p ( x i ∣ y i ) ] ∗ p ( y n ∣ y 1 , y 2 . . . y n − 1 ) ∗ p ( y n − 1 ∣ y 1 , y 2 . . . y n − 2 ) . . . p ( y 1 ) ) ] argmax[\prod \limits_{i=1}^n[p(x_i|y_i)]*p(y_n|y_1,y_2...y_{n-1})*p(y_{n-1}|y_1,y_2...y_{n-2})...p(y_1))] argmax[i=1∏n[p(xi∣yi)]∗p(yn∣y1,y2...yn−1)∗p(yn−1∣y1,y2...yn−2)...p(y1))]
使用Tri-Grams假设,当前x只与前两个x有关,上述公式简化为:
a r g m a x [ ∏ i = 1 n [ p ( x i ∣ y i ) ] ∗ ∏ i = 2 n [ p ( y i ∣ y i − 1 , y i − 2 ) ] ∗ p ( y 1 ) ] argmax[\prod \limits_{i=1}^n[p(x_i|y_i)]*\prod \limits_{i=2}^n[p(y_i|y_{i-1},y_{i-2})] *p(y_1)] argmax[i=1∏n[p(xi∣yi)]∗i=2∏n[p(yi∣yi−1,yi−2)]∗p(y1)]
上述公式与该文献中的略有区别,这是由于该文作者将首单词概率并到连乘内部了,这样做的好处是可以考虑标点符号的影响。
Smoothing 处理
由语料库生成的三元概率通常不能直接使用,这是由于没有足够的实例可以让每个trigrams组都能得到可靠的估计概率。总会存在未能包含在语料库的trigrams组,但是又不能直接将该单词的概率直接设置为0.
作者采用unigrams、bigrams和trigrams的线性插值作为平滑范式。因此,trigrams概率计算如下:
三个系数相加和为1,公式中的三个系数的计算采用如下算法得到:
注:减去1意味着将未看到的数据考虑在内,如果没有这个减法,模型会过拟合训练数据,通常会产生更差的结果。
未知词的处理
文章对未知词的词性标记的处理是通过计算后缀名相似概率得到的,对于一个有m个字母 l 的单词其词性概率的计算通过如下公式得到,公式中i为单子的尾字母个数。
P ( t ∣ l n − i + 1 , . . . l n ) P(t|l_{n-i+1},...l_n) P(t∣ln−i+1,...ln)
该概率的计算在文章中使用了一种递归的求解方法:
通过最大似然估计法计算
将所有θi设置为训练集中标签的无条件最大似然概率的标准偏差,即:
大小写问题
这一部分是专门针对有大小写区分的语言(中文就没有),在Tri-Grams概率中增加了一个bool的C标记,以此标记单词是否为大写,转化后概率为:
定向搜索
这部分是求解的方法,内容要是展开的话还是比较多的,有感兴趣的小伙伴可以仔细研究,时间有限,这里我就不详细展开了。
总结
这篇文章阐述了二阶HMM的实现方法和一些细节处理,有兴趣的同学可以自己阅读该论文,毕竟写博客的时间有限很多也没有解释特别清楚。
注:isnowfy大神在项目Snownlp实现TnT与Character-Based Discriminative Model;并且在博文中给出两者与最大匹配、Word-based Unigram模型的准确率比较,可以看出Generative Model的准确率较高。Snownlp的默认分词方案采用的是CharacterBasedGenerativeModel。
hankcs, 基于HMM2-Trigram字符序列标注的中文分词器Java实现.
文章链接:TnT — A Statistical Part-of-Speech Tagger (2000)
词性标注HMM模型之TnT — A Statistical Part-of-Speech Tagger (2000) 论文解读相关推荐
- 中文分词之HMM模型详解
文章转载自: http://yanyiwu.com/work/2014/04/07/hmm-segment-xiangjie.html HMM(Hidden Markov Model): 隐式马尔科夫 ...
- HMM模型及相关算法
HMM模型及相关算法 写在前面:本文主要参考了刘建平Pinard老师的博客,做了一定程度的归纳,其中也有一些自己的理解,包括图和公式,希望对大家学习有所帮助. 一.HMM定义和前置知识 1.条件独立的 ...
- HMM模型 forward backward viterbi算法
在这里插入图片描述 评估问题 隐马尔可夫模型中包含一个评估问题:已知模型参数,计算某一特定输出序列的概率.通常使用forward算法解决. 比如计算活动序列{读书,做清洁,散步,做清洁,散步}出现的概 ...
- 机器学习算法 10 —— HMM模型(马尔科夫链、前向后向算法、维特比算法解码、hmmlearn)
文章目录 系列文章 隐马尔科夫模型 HMM 1 马尔科夫链 1.1 简介 1.2 经典举例 2 HMM简介 2.1 简单案例 2.2 案例进阶 问题二解决 问题一解决 问题三解决 3 HMM模型基础 ...
- 机器学习HMM模型算法实例
目录 1 前向算法求HMM观测序列的概率 1.1 流程梳理 1.2 算法总结 1.3 HMM前向算法求解实例 1.4 用后向算法求HMM观测序列的概率 1.4.1 流程梳理 1.4.2 后向算法流程 ...
- HMM模型及其在中文分词中的应用
HMM模型及其在中文分词中的应用 马尔可夫模型 有限状态集 s s s 初始时刻的状态概率分布 π \pi π 状态转移概率矩阵 A A A 马尔可夫模型实例 隐马尔可夫模型 观测集 V V V 发射 ...
- HMM模型——隐含马尔科夫模型【详细分析+图】
HMM(隐马尔可夫模型) 含义 HMM(Hidden Markov Model), 中文称作隐含马尔科夫模型, 因俄国数学家马尔可夫而得名. 它一般以文本序列数据为输入, 以该序列对应的隐含序列为输出 ...
- 机器学习基础 HMM模型(隐马尔科夫)
文章目录 一.马尔科夫链 1. 简介 2. 经典举例 3. 小结 二.HMM简介 1. 简单案例 2. 三个基本问题 三.HMM模型基础 1. 什么样的问题需要HMM模型 2. HMM模型的定义 3. ...
- 【学习笔记】-【HMM模型建模方法学习1】
开始 今天是2019.10.1,使用CSDN已经有一段时间了,发现这里有很多不错的博客,所以打算从今天开始将这里作为我的一个做学习笔记的地方,记录我学习过程中遇到的各种问题,记录我解决过得问题以及解决 ...
最新文章
- CUDA Samples: 获取设备属性信息
- 精通有状态vs无状态(Stateful vs Stateless)一
- Python中maketrans和translate方法
- hdu 5492(矩阵模型的变形)
- ios获取新数据要不要关_iPhone用户注意!不要再滑动关后台,否则……
- mysql集群session_集群session解决方案
- 微信开通检测软件使用心得与技巧
- 信息学奥赛一本通-第一章答案合集
- 酷比魔方iplay20_799元买国产“山寨板”是否值得?酷比魔方iPlay20 Pro评测
- Spring IOC/DI和AOP
- 阿里巴巴校园招聘在线面试之附加题
- 《浮生六记》年表整理
- vba mysql·教程_Excel VBA ADO SQL入门教程004:SQL中的Excel表
- Chrome渲染分析之Rendering工具使用
- 正交设计 python算法_Python实现正交实验法-高级篇
- tplink错误代码51215_tplink升级提示错误代码18000导致升级不成功解决办法
- flac如何转换成wav?
- [VLDB 2021]ICS-GNN_ Lightweight Interactive Community Search via Graph Neural Network
- Windows 10设置菜单打不开
- java基础学习(三)
热门文章
- vb操作html5,vb基本操作
- 在线迷宫生成器 python_在Python/Pygame中创建迷宫,但不确定如何创建墙
- LSTM中遗忘门,输入门和输出门的实际意义是什么
- python的微信支付代码
- Android Systrace 基础知识(9)-MainThread 和 RenderThread 解读
- oak深度相机入门教程-创建自定义模型
- 指定wsus服务器,WSUS 服务器的搭建;
- 【Avalon总线】3.avalon总线MM从设备
- 【Java修行之路】--Scanner类
- 颜色分类问题 快速排序day02