- 摘要
本次咱们将开始新的分享系列——自然语言解决(NLP),NLP 能够被利用于很多畛域:机器翻译、情感剖析、智能问答、文本分类等等。本次咱们将分享中文自然语言解决的一个重要技术:中文分词技术。在通常的语言了解中,词是最小的可能独立流动的语言成分。只有将词确定下来,中文才可能向英文那样过渡到短语划分以及主题剖析,以至自然语言解决。
- 中文分词技术
因为汉语构造与欧体系语种差别较大,对词的形成边界方面很难进行定位。在英文中,单词自身就是词的示意,一篇英文文章就是单词加空格来示意。在汉语中,词以字为单位,但一篇汉语文章的语义却仍以词来划分。因而,在解决中文文档时,须要进行分词解决,将文档转换成词来示意。这个切词过程就是中文分词。通过计算机自动识别出句子的词,在词间退出边界标识符,分隔出各个词汇,次要的难点在于分词歧义。
中文分词次要有三个流派:规定分词、统计分词、混合分词。
- 规定分词
规定分词:基于规定的分词是一种机械分词办法,次要是通过保护词典,将语句中的每一个字符串与词表中的词逐个匹配,匹配到就切分,否则不予切分。依照匹配切分的形式,次要有正向最大匹配法、逆向最大匹配法和双向最大匹配法。
正向最大匹配法思维:假如分词词典中的最长词有 i 个字符,那么用被解决文档的以后字符串的前 i 个字符作为匹配字段,查找字典。若字典中存在这样一个 i 长度字词,则匹配胜利,匹配字段则被作为一个词切分进去。如果词典中找不到这样的一个 i 长度字词,则匹配失败。此时便将匹配字段中的最初一个字去掉,对残余的字符串从新匹配解决。依据这样的规定解决上来,直到匹配胜利,即切分出一个词或残余字符串的长度为 0 为止。这样就实现一轮匹配,而后取下一个 i 长度字符串进行匹配解决,直到文档被扫描完为止。
逆向最大匹配法思维:基本原理与正向最大匹配法雷同,不同的是分词切分的方向与正向最大匹配法相同。相应的,它应用的分词词典是逆序词典,其中的每个词条都将按逆序形式寄存。在理论的解决时,先将文档进行倒排解决,生成逆序文档。而后,依据逆序词典,对逆序文档用正向最大匹配法解决即可。
因为汉语中偏正结构较多,若从后向前匹配,能够适当进步精准度。所以,逆向最大匹配法比正向最大匹配法的误差要小。统计结果表明,单纯应用正向最大匹配的错误率为 1 /169,单纯应用逆向最大匹配法的错误率为 1 /245。
双向最大匹配法思维:将正向最大匹配法失去的分词后果和逆向最大匹配法失去的后果进行比拟,而后依照最大匹配准则,选取词数切分起码的作为后果。
基于规定的分词,个别都比较简单高效,然而词典的保护是一个很宏大的工程。而且网络新词频频呈现,很难通过词典笼罩到所以词。
- 统计分词
统计分词:次要思维是把每个词看作是由词的最小单位的各个字组成的,如果相连的字在不同的文本中呈现的次数越多,就证实这相连的字很可能就是一个词。因而咱们就能够利用字与字相邻呈现的频率来反映成词的牢靠度,统计语料中相邻共现的各个字的组合的频率,当组合频率高于某一个临界值时,咱们能够认为这个字的组合可能会形成一个词语。
基于统计的分词,通常须要两个步骤操作:
(1)建设统计语言模型;
(2)对句子进行单词划分,而后对划分后果进行概率计算,取得概率最大的分词形式。这里就要用到了统计学习算法。
语言模型:用概率论的专业术语描述语言模型就是,为长度为 m 的字符串确定其概率分布 P(w1,w2, …,wm),其中 w1 到 wm 顺次示意文本中的每个词语。个别采纳链式法则计算其概率值。
P(w1,w2, …,wm)=P(w1)P(w2|w1)P(w3|w1,w2)
…P(wi|w1,w2, …,wi-1) …P(wm|w1,w2, …,wm-1)
当文本过长时,公式右部从第三项起的每一项计算难度都很大。为了解决该问题,提出了 n 元模型用来升高该计算难度。所谓的 n 元模型就是在估算条件概率时,疏忽间隔大于等于 n 的上文词的影响,那么此时,计算公式能够简化为
P(wi|w1,w2, …,wi-1) ≈P(wi|wi-(n-1), …,wi-1)
当 n = 1 时称为一元模型,此时整个句子的概率能够示意为 P(w1,w2,…,wm)=P(w1)P(w2)…P(wm)。在一元模型中,整个句子的概率等于各个词语概率的乘积。也能够看作是各个词之间是互相独立的,这无疑是齐全损失了句子中的程序信息。所以一元模型的成果并不现实。
image.png
由下面表达式可见,当 n 越大时,模型蕴含的词程序信息越丰盛,但同时计算量也随之增大。此时长度越长的文本序列呈现的次数也会缩小。依据公式预计 n 元条件概率时,就会呈现分子分母为零的状况。因而,在个别的 n 元模型中须要配合相应的平滑算法解决该问题,例如拉普拉斯平滑算法。
HMM 模型:隐马尔可夫模型 (HMM) 是将分词作为字在字串中的序列标注工作来实现的。根本思维是,每一个字在结构一个特定词语时都占据着一个确定的构词地位(简称词位),现规定每个字最多只有 4 个构词地位,即 B(词首)、M(词中)、E(词尾)、S(独自成词),那么对常见的一句话,咱们展现成果为。
原句:留给中国足球队的工夫曾经不多了!
切词后:留给 / 中国 / 足球队 / 的 / 工夫 / 曾经 / 不多了!
逐字标注后:留 /B 给 /E 中 /B 国 /E 足 /B 球 /M 队 /E 的 /S 时 /B 间 /E 已 /B 经 /E 不 /B 多 /M 了 /M!/E
应用数学形象示意:用 λ =λ1λ2…λn 代表输出的句子,n 为句子的长度 λi 示意字,o=o1o2…on 代表输入的标签,这样最现实的输入能够示意为:
Max=maxP(o1o2…on|λ1λ2…λn)
在分词的工作中,o 即为 B、M、E、S 这 4 种标记,λ 则示意文本中“足”“球”“队”等独自的字,也包含标点符号等非中文字符。须要留神的是,P(o|λ)是对于 2n 个变量的条件概率,且 n 不固定。因而,简直是无奈对 P(o|λ)进行准确计算的。在这里要引入观测独立性假如,即每个字的输入仅仅与以后的字无关,于是就能够失去上面表达式:
P(o1o2…on|λ1λ2…λn)=P(o1|λ1)P(o2|λ2)…P(on|λn)
通过了观测独立性假如后,指标问题失去了极大的简化,P(ok|λk)在计算上容易了很多。然而咱们会发现这种办法齐全没有思考上下文环境,所以这是十分不合理的。
HMM 就是用来解决上述问题的。在下面公式中,咱们冀望求解的是 P(o|λ),那么通过贝叶斯公式剖析能够失去:
P(o|λ)=P(o,λ)/P(λ)=P(λ|o)P(o)/P(λ)
λ 为给定的输出,因而 P(λ)计算为常数,因而最大化 P(o,λ)等价于最大化 P(λ|o)P(o)。
此时对 P(λ|o)P(o)作马尔可夫假如,能够失去:
P(λ|o)=P(λ1|o1)P(λ2|o2)…P(λn|on)
同时,对 P(o)有:
P(o)=P(o1)P(o2|o1)P(o3|o1,o2)…P(on|o1,o2,…,on-1)
这是也会面临计算艰难的问题,从公式中的第三项开始,计算难度就十分大,这里 HMM 做了另一个假如——齐次马尔可夫假如:每次输入仅与上一个的输入相干,那么公式能够简化为:
P(o)=P(o1)P(o2|o1)P(o3|o2)…P(on|on-1)
这时,对于 P(λ|o)P(o)就能够示意为:
P(λ|o)P(o)≈P(λ1|o1)P(o2|o1)P(λ2|o2)P(o3|o2)…P(λn|on)P(on|on-1)
在 HMM 中,将 P(λk|ok)称为发射概率,P(ok|ok-1)称为转移概率。并且能够通过设置 P(ok|ok-1)=0,排除上述中不合理的状况。在咱们列出的马尔可夫式子中就是一个二元语言模型,在理论的分词中也多采纳二元模型。
HMM 求解 MaxP(λ|o)P(o)的罕用办法是 Veterbi 算法。算法思维是:如果最终的最优门路通过某个 oi,那么从初始节点到 oi- 1 点的门路也必然是最优门路。因为每个节点 oi 只会影响前后两个 P(oi-1|oi)和 P(oi|oi+1)。
和机械分词相比,统计分词办法不须要保护词典,还能较好的解决歧义和一些未登录词,是目前很支流的办法,但分词的成果很依赖训练语料的品质,并且计算量高于机械分词很多。
- 混合分词
在目前罕用的分词办法中,在具体的分词工作中,成果上并未有很显著的差距。在理论的工程利用中,首先是先基于一种分词算法应用,而后将其余分词办法辅助应用。
通常的应用形式是先基于机械分词办法进行分词,而后再应用统计分词办法辅助对准未登录词和歧义词,这样混合应用会有比繁多应用有更好的成果。
- 总结
本次分享了中文自然语言解决我的项目分词的相干技术,基于词典匹配下的规定分词:正向最大匹配法、逆向最大匹配法以及双向最大匹配法。以及为了打消词语歧义和为登录词的基于统计原理的的分词技术:HMM 模型。并介绍了通常实战分词时应用的混合分词策略。