版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenshi_2753/article/details/84288341
第一部分:分词的方法概述
- 基于词表: 正向最大匹配法、逆向最大匹配法
- 基于统计: 基于N-gram语言模型的分词方法
- 基于序列标注: 基于HMM/CRF/DeepLearning的端到端的分词方法
第二部分:方法简要说明
- 正向最大匹配法:
- 逆行向最大匹配法:
这种基于词表的方法,前提是有一个已经分的较好的词表,然后匹配。正向与逆向只是匹配的方式不同而已。这种基于词表的方法,前提是有一个已经分的较好的词表,然后匹配。正向与逆向只是匹配的方式不同而已。详细见:百科 - N-gram语言模型分词
随机变量S是一个汉字的序列,W是S上所有可能的切分路径。求解使条件概率P(W|S)最大的切分路径W*。
根据贝叶斯公式:
其中,P(W|S)为恒定的值1.P(S)为归一化因子。所以求P(W)即可。 - 基于HMM的分词
分词问题就是对句子中的每个字打标注,标注要么是一个词的开始(B),要么是一个词的中间位置(M),要么是一个词的结束位置(E),还有单个字的词,用S表示。例如:
我 | 喜 | 欢 | 在 | 黑 | 龙 | 江 |
---|---|---|---|---|---|---|
S | B | E | S | B | M | E |
做简单的描述:
设观察集合为:
状态集合为:
当输入观察序列为:
得到对应的状态序列:
基于HMM的分词方法:属于由字构词的分词方法,由字构词的分词方法思想并不复杂,它是将分词问题转化为字的分类问题(序列标注问题)。从某些层面讲,由字构词的方法并不依赖于事先编制好的词表,但仍然需要分好词的训练语料。
- 基于CRF的分词
HMM是生成式模型,而CRF是判别式模型,CRF通过定义条件概率p(Y|X)来描述模型。基于CRF的分词的模型的求解方法和传统ML算法类似,给定feature(字级别的各种信息)输出lable(词位)
解释:
分词所使用的是Linear-CRF,它由一组特征函数组成,包括权重λ和特征函数f,特征函数f的输入是整个句子s、当前 、前一个词位 ,当前词位 。
CRF的 分词原理:
CRF把分词当做成字的词位的分类问题,通常定义字的词位信息如下:
词首,常用B表示;
词中,常用M表示;
词尾,常用E表示;
单子词,常用S表示。
备:和HMM做法类似。
比较:
类型 | CRF | vs | 基于词表 |
---|---|---|---|
速度上 | 周期长,计算量大 | 高效 | |
歧义词/未登录词 | 较好。考虑词出现的频率+上下文语境信息 |
类型 | CRF | vs | HMM |
---|---|---|---|
上下文 | 可以 | 其输出独立性假设,导致其不能考虑上下文的特征,限制了特征的选择 | |
局部的最优值 | 最大熵隐马模型则解决了隐马的无上下文的问题,可以任意选择特征,但由于其在每一节点都要进行归一化,只能找到局部最优解 | 其并不在每一个节点进行归一化,而是所有特征进行全局归一化,因此可以求得全局的最优值 |
- 基于深度学习的端到端的分词方法
解释:
输入层为wordembedding,经过 双向LSTM网络编码,输出层是一个CRF层,经过LSTM网络输出的实际上是当前位置对于各词性的得分,CRF是对词性得分加上前一位置的词性概率转移的约束,其好处是引入一些语法规则的先验信息。
数学公式表示为:
其中,A是词性的转移矩阵,P是BiLSTM网络的判别得分。