词性标注HMM模型之TnT — A Statistical Part-of-Speech Tagger (2000) 论文解读

概述

该文作者是德国萨尔大学的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...xny1,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(x1y1,y2...yn)p(x2y1,y2...yn)...p(xny1,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(x1y1,)p(x2y2)...p(xnyn)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=0n[p(xiyi)]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=1n[p(xiyi)]p(yny1,y2...yn1)p(yn1y1,y2...yn2)...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=1n[p(xiyi)]i=2n[p(yiyi1,yi2)]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(tlni+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)

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
About A Part-Of-Speech Tagger (POS Tagger) is a piece of software that reads text in some language and assigns parts of speech to each word (and other token), such as noun, verb, adjective, etc., although generally computational applications use more fine-grained POS tags like 'noun-plural'. This software is a Java implementation of the log-linear part-of-speech taggers described in these papers (if citing just one paper, cite the 2003 one): Kristina Toutanova and Christopher D. Manning. 2000. Enriching the Knowledge Sources Used in a Maximum Entropy Part-of-Speech Tagger. In Proceedings of the Joint SIGDAT Conference on Empirical Methods in Natural Language Processing and Very Large Corpora (EMNLP/VLC-2000), pp. 63-70. Kristina Toutanova, Dan Klein, Christopher Manning, and Yoram Singer. 2003. Feature-Rich Part-of-Speech Tagging with a Cyclic Dependency Network. In Proceedings of HLT-NAACL 2003, pp. 252-259. The tagger was originally written by Kristina Toutanova. Since that time, Dan Klein, Christopher Manning, William Morgan, Anna Rafferty, Michel Galley, and John Bauer have improved its speed, performance, usability, and support for other languages. The system requires Java 1.6+ to be installed. Depending on whether you're running 32 or 64 bit Java and the complexity of the tagger model, you'll need somewhere between 60 and 200 MB of memory to run a trained tagger (i.e., you may need to give java an option like java -mx200m). Plenty of memory is needed to train a tagger. It again depends on the complexity of the model but at least 1GB is usually needed, often more. Several downloads are available. The basic download contains two trained tagger models for English. The full download contains three trained English tagger models, an Arabic tagger model, a Chinese tagger model, and a German tagger model. Both versions include the same source and other required files. The tagger can be retrained on any language, given POS-annotated training text for the language.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值