一、词典分词的切分算法
1. 完全切分
2. 正向最长匹配
3. 逆向最长匹配
4. 双向最长匹配
二、 速度测评
词典分词的规则没有技术含量,消歧效果也不好,核心不在于精度,而是在于速度。
1. 同等条件下,python的运行速度要比java慢,效率只有java的一半不到
2. 正向与逆向的速度差不多,是双向的两倍。
3. java实现的正向匹配快于逆向匹配。
三、 字典树
匹配算法的瓶颈之一在于如何判断集合中是否包含字符串,字典树是速度快内存占用少的数据结构。 字典树加上前缀的使用,效率会进一步提高。
双数组字典树,将状态转移复杂度为常数的数据结构。
四、AC自动机
AC自动机是在前缀树的基础上为前缀树的每个节点创建一棵后缀树,节省了大量的查询。
AC自动机由goto表、fail表和output表组成。
五、基于双数组字典树的AC自动机
将AC自动机中的goto表也使用双数组字典树来实现。
六、准确率评测
准确率是用来衡量一个系统的准确程度的值。但是在中文分词的任务中,是使用精准率、召回率以及F1值来衡量。
1.混淆矩阵 TP(真阳)、FP(假阳)、TN(真阴)、FN(假阴)
精确率:预测结果中正类数量占全部结果的比率 P= TP/(TP+FP)
召回率:正类样本被找出来的比率 R=TP/(TP+FN)
F1值: 精确率与召回率很难平衡,召回率高的系统往往精确率低,可以通过调和平均,这样就可以综合衡量。