一 、语言模型
1.1 语言模型
语言模型是对语言现象的数学抽象,用来计算句子的出现概率的模型。
1.2 数据稀疏
计算句子出现的概率是通过枚举形成的语料库,但是靠枚举无法估计语料库之外的句子的概率,而实际遇到的句子大部分在语料库之外,导致概率为0的情况。
1.3 语言模型面临的问题
语言模型随着句子长度的增加,必然会遇到数据稀疏、计算代价大的问题。
1.4 马尔可夫链与二元语法
解决语言模型的问题,需要使用马尔可夫假设来简化语言模型。就是给定时间线上有一串事件顺序发生,假设每个时间的发生概率取决于前一个事件,那么这串事件构成的因果链称为马尔可夫链。
马尔可夫链假设每个单词现身的概率只取决于前一个单词,基于此假设,每次计算只需要涉及连续两个单词的二元接续,此语言模型称为二元语法模型。
1.5 n元语法
每个单词的概率仅取决于该单词之前的n个单词。n大于3时,稀疏与计算代价显著起来,实际工程几乎不使用。另外深度学习采用递归神经网络语言模型,理论上可以记忆无限个单词,称为"无穷元语法"。 但是n越大,数据稀疏问题更严峻。(理论上我觉得就接近于整句的概率了)
1.6 平滑策略
最简单的一种策略就是线性插值法,增加一个常数平滑因子。
二、中文分词语料库
1. 1998年“人民日报”语料库PKU (准确率比较低)
2. 微软亚洲研究院语料库MSR
3. 繁体中文分词语料库(短平快不需要专门标注繁体语料库,追求精准则需本地语料库)
香港大学的CITYU、台湾中央研究院的AS
4.语料库的统计(统计语料库字数、词语种数和总词频)
词语种数指语料库中有多少不重复的词语,衡量用语的丰富程度。
总词频是指所有词语的词频之和,衡量用语的规模大小。
三、训练
训练是指 给定样本集来估计模型参数的过程。
1. 加载语料库
2. 统计一、二元语法 (一元可理解为一个单词,二元可理解为两个单词)
四、预测
预测是指利用模型对样本(句子)进行推断的过程,在中文分词任务中也就是利用模型推断分词序列。
1.加载模型
2.构建词网(词网是指句子中所有一元语法构成的网状结构)
3.节点间的距离计算
4.词图上的维特比算法(由马尔可夫链构成的网状图上的最短路径算法,分为前向/后向两个步骤)
5.与用户词典的集成(语料库规模有限,存在OOV的情况,HanLP支持词典优先级)
五、评测
1.标准化评测(训练、预测、计算准确率)
2.误差分析
3.调整模型
(人工调整模型技巧可以在补充下训练模型的情况下快速调整线上模型的分词结果,本质上与增量训练是一样的,除非万不得已,否则尽量用语料标注与统计方法解决问题)