博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【中文分词】二阶隐马尔可夫模型2-HMM
阅读量:6974 次
发布时间:2019-06-27

本文共 4169 字,大约阅读时间需要 13 分钟。

在中介绍了用HMM做中文分词,对于未登录词(out-of-vocabulary, OOV)有良好的识别效果,但是缺点也十分明显——对于词典中的(in-vocabulary, IV)词却未能很好地识别。主要是因为,HMM本质上是一个Bigram的语法模型,未能深层次地考虑上下文(context)。对于此,本文将介绍更为复杂的二阶HMM以及开源实现。

1. 前言

n-gram语法模型

n-gram语法模型用来:在已知前面\(n-1\)个词\(w_1, \cdots, w_{n-1}\)的情况下,预测下一个词出现的概率:

\[ P(w_n | w_1, \cdots, w_{n-1}) \]

常见的n-gram有Unigram(一元)、Bigram(二元)、Trigram(三元),分别表示当前词出现的概率为自身词频、只与前面一个词相关、只与前面两个词相关;对应的计算公式如下:

\begin{align}

\text{Unigram:} \quad & \hat{P} (w_3) = \frac{f(w_3)}{N} \cr
\text{Bigram:} \quad & \hat{P} (w_3|w_2) = \frac{f(w_2, w_3)}{f(w_2)} \cr
\text{Trigram:} \quad &\hat{P} (w_3|w_1,w_2) = \frac{f(w_1, w_2, w_3)}{f(w_1,w_2)} \
\end{align}

其中,\(N\)为语料中总词数,\(f(w_i)\)为词\(w_i\)在语料中出现的次数。

两种CWS模型

中文分词(Chinese word segmentation, CWS)的统计学习模型大致可以分为两类:Word-Based Generative ModelCharacter-Based Discriminative Model [3]. Word-Based Generative Model采用最大联合概率来对最佳分词方案建模,比如,对于句子\(c_1^{n}=c_1, \cdots, c_n\),最佳分词\(w_1^m=w_1, \cdots, w_m\)应满足:

\begin{equation}

\arg \mathop{\max}\limits_{w_1^m} P(w_1^m)
\end{equation}

此模型可以简化为二阶Markov链(second order Markov Chain)——当前词的转移概率只与前两个词相关,即为Trigram语法模型:

\begin{equation}

P(w_1^m) = \prod_{i=1}^{m}P(w_i|w_1^{i-1}) \approx \prod_{i=1}^{m}P(w_i|w_{i-2}^{i-1})
\end{equation}

Character-Based Discriminative Model采用类似与POS(Part-of-Speech)那一套序列标注的方法来进行分词:

\begin{equation}

\arg \mathop{\max}\limits_{t_1^n} P(t_1^n | c_1^n)
\label{eq:pos}
\end{equation}

\(t_i\)表示字符\(c_i\)对应的词标注。

HMM分词

根据贝叶斯定理,式\eqref{eq:pos}可改写为

\[ \begin{aligned} \arg \mathop{\max}\limits_{t_1^n} P(t_1^n | c_1^n) & = \arg \mathop{\max}\limits_{t_1^n} \frac{P(c_1^n | t_1^n) P(t_1^n)}{P(c_1^n)} \\ & = \arg \mathop{\max}\limits_{t_1^n} P(c_1^n | t_1^n) P(t_1^n)\\ \end{aligned} \]

HMM做了两个基本假设:齐次Markov性假设与观测独立性假设,即

  • 状态(标注)仅与前一状态相关;

\[ P(t_{i}|t_{1}^{i-1}) = P(t_i| t_{i-1}) \]

  • 观测相互独立,即字符相对独立:

\[ P(c_1^n|t_1^n) = \prod_{i=1}^{n} P(c_i|t_1^n) \]

  • 观测值依赖于该时刻的状态,即字符的出现仅依赖于标注:

\[ P(c_i|t_1^n) = P(c_i | t_i) \]

将上述三个等式代入下式:

\[ \begin{aligned} P(c_1^n | t_1^n) P(t_1^n) & = \prod_{i=1}^{n} P(c_i|t_1^n) \times [P(t_n|t_{1}^{n-1}) \cdots P(t_i|t_{1}^{i-1}) \cdots P(t_2|t_1)] \\ & = \prod_{i=1}^{n} [P(c_i|t_i) \times P(t_i|t_{i-1})]\\ \end{aligned} \]

因此,用HMM求解式子\eqref{eq:pos}相当于

\begin{equation}

\arg \mathop{\max}\limits_{t_1^n} \prod_{i=1}^{n} [P(t_i|t_{i-1}) \times P(c_i|t_i)]
\end{equation}

二阶HMM的状态转移依赖于其前两个状态,类似地,分词模型如下:

\begin{equation}

\arg \mathop{\max}\limits_{t_1^n} \left[ \prod_{i=1}^{n} P(t_i|t_{i-1},t_{i-2}) P(c_i|t_i) \right] \times P(t_{n+1}|t_n)
\label{eq:tnt}
\end{equation}

其中,\(t_{-1},t_0,t_{n+1}\)分别表示序列的开始标记与结束标记。

2. TnT

论文[2]基于二阶HMM提出TnT (Trigrams'n'Tags) 序列标注方案,对条件概率\(P(t_3|t_2, t_1)\)采取了如下平滑(smooth)处理:

\[ P(t_3|t_2, t_1)=\lambda_1 \hat{P}(t_3) + \lambda_2 \hat{P}(t_3|t_2) + \lambda_3 \hat{P}(t_3|t_2, t_1) \]

为了求解系数\(\lambda\),TnT提出如下算法:

399159-20161215154234323-346177247.png

算法中,如果分母为0则置式子的结果为0.

3. Character-Based Generative Model

鉴于两种CWS模型的利弊:

  • Word-Based Generative Model高召回IV、低召回OOV;
  • Character-Based Discriminative Model高召回OOV,低召回IV

论文[3]结合两者提出了Character-Based Generative Model:

\[ \arg \mathop{\max}\limits_{t_1^n} P([c,t]_1^n)= \arg \mathop{\max}\limits_{t_1^n} \prod_{i=1}^n P([c,t]_i | [c,t]_{i-k}^{i-1}) \]

论文[3]中公式6的连乘下标k应为i,猜测应该是作者写错了。

4. 开源实现Snownlp

isnowfy大神在项目实现TnT与Character-Based Discriminative Model;并且在中给出两者与最大匹配、Word-based Unigram模型的准确率比较,可以看出Generative Model的准确率较高。Snownlp的默认分词方案采用的是CharacterBasedGenerativeModel

from snownlp import SnowNLPs = SnowNLP('小明硕士毕业于中国科学院计算所,后在日本京都大学深造')print('/'.join(s.words))# 小明/硕士/毕业/于/中国/科学院/计算/所/,/后/在/日本/京都/大学/深造# Jieba HMM: 小明/硕士/毕业于/中国/科学院/计算/所/,/后/在/日/本京/都/大学/深造

通过分析TnTCharacterBasedGenerativeModel源码,发现作者在求解\eqref{eq:tnt}、Generative Model的最大值都是采用穷举法,导致了较低的分词效率。此外,HanLP的作者hankcs大神给出了TnT算法的。

5. 参考资料

[1] Manning, Christopher D., and Hinrich Schütze. Foundations of statistical natural language processing. Vol. 999. Cambridge: MIT press, 1999.

[2] Brants, Thorsten. "TnT: a statistical part-of-speech tagger." Proceedings of the sixth conference on Applied natural language processing. Association for Computational Linguistics, 2000.
[3] Wang, Kun, Chengqing Zong, and Keh-Yih Su. "Which is More Suitable for Chinese Word Segmentation, the Generative Model or the Discriminative One?." PACLIC. 2009.
[4] isnowfy,
[5] hankcs, .

转载地址:http://feesl.baihongyu.com/

你可能感兴趣的文章
jetty 基础
查看>>
码栈开发手册(三)---编码方式开发(高级课程②)
查看>>
Hbase 学习(十) HBase Snapshots
查看>>
记一次8小时惊心动魄的服务器+网站升级
查看>>
too many open files
查看>>
Eclispe清除项目缓存无需删除.metadata文件
查看>>
Fedora14升级到Fedora15问题汇总(原创)
查看>>
Oracle数据库语句大全
查看>>
系统知识点笔记
查看>>
Gradle 2.3 发布
查看>>
数据库内核月报 - 2015 / 10-MySQL · 特性分析 · MySQL权限存储与管理
查看>>
Swift教程_零基础学习Swift完整实例(五)_swift完整实例(构建数据层)
查看>>
[Angularjs]asp.net mvc+angularjs+web api单页应用
查看>>
仿Linux中的cp操作
查看>>
【ANDROID游戏开发十五】关于ANDROID 游戏开发中 ONTOUCHEVENT() 触屏事件的性能优化笔记!...
查看>>
移动端web开发 chapter 1 – introduction
查看>>
获取时间的方法及常用时间类
查看>>
Git忽略文件
查看>>
如何删除或重置spfile中的参数
查看>>
Spring Boot 之 HelloWorld详解
查看>>