基于HMM和维特比算法的中文分词

本文介绍了使用隐马尔可夫模型(HMM)和维特比算法进行中文分词的方法。通过HMM的观测独立性假设简化问题,然后利用维特比算法动态规划求解最优路径,实现高效分词。在微软亚洲研究院的测试数据集上,HMM分词的精确率和召回率分别达到了0.762和0.789,与jieba分词工具相比效果相近。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

隐马尔可夫模型(HMM)是将分词作为字在字串中的序列标注任务来实现的。其基本思路是:每个字在构造一个特定的词语时都占据着一个确定的构词位置,现规定每个字最多只有四个构词位置:即B(词首)、M(词中)、E(词尾)和S(单独成词),那么下面句子(1)的分词结果就可以直接表示成如(2)所示的逐字标注形式:

(1)中文/分词/是/文本处理/不可或缺/的/一步!

(2)中/B文/E分/B词/E是/S文/B本/M处/M理/E不/B可/M或/M缺/E的/S一/B步/E!/S

用数学抽象表示如下:用\lambda =\lambda _{1}\lambda _{2}...\lambda _{n}代表输入的句子,n为句子长度,\lambda _{i}表示字,o=o_{1}o_{2}...o_{n}代表输出的标签,那么理想的输出即为:

max=maxP(o_{1}o_{2}...o_{n}|\lambda _{1}\lambda _{2}...\lambda _{n})

在分词任务上,o即为B、M、E、S这四种标记,\lambda为诸如“中”“文”等句子中的每个字,包括标点等非中文字符。

需要注意的是,P(o|\lambda )是关于2n个变量的条件概率,且n不固定。因此,几乎无法对P(o|\lambda )进行精确计算。这里引入观测独立性假设,即每个字的输出仅仅与当前字有关,于是就能得到下式:

P(o_{1}o_{2}...o_{n}|\lambda _{1}\lambda _{2}...\lambda _{n})=P(o_{1}|\lambda _{1})P(o_{2}|\lambda _{2})...P(o_{n}|\lambda _{n})

事实上,P(o_{k}|\lambda _{k})的计算要容易得多。通过观测独立性假设,目标问题得到极大简化。然而该方法完全没有考虑上下文,且会出现不合理的情况。比如按照之前设定的B、M、E和S标记,正常来说B后面只能是M或者E,然而基于观测独立性假设,我们很可能得到诸如BBB、BEM等的输出,显然是不合理的。

HMM就是用来解决该问题的一种方法。在上面的公式中,我们一直期望求解的是P(o|\lambda ),通过贝叶斯公式能够得到:

P(o|\lambda )=\frac{P(o,\lambda) }{P(\lambda) }=\frac{P(\lambda |o)P(o)}{P(\lambda )}

\lambda为给定的输入,因此

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值