赞
踩
资源下载地址:https://download.csdn.net/download/sheziqiong/85787813
资源下载地址:https://download.csdn.net/download/sheziqiong/85787813
MacBook Air M1,全部使用Python进行实验
1.基于词典的分词方法中,我们使用了四种分词方法,即完全切分式,正向最长匹配,逆向最长匹配,双向最长匹配。此处代码见附录1。
这里的词典我选择使用了北京大学统计好的词典作为词典参考来进行实验。
我们随意输入几个句子并输出结果,根据结果来看,各个方法分词的效果还算不错。接下来我们使用人民日报的分好的语料库进行一个全篇的预测。
首先我们使用前向切分的方法,可以看到P,R,F1三个值,以及用时26.92s。
接下来使用后向切分的分法,正确率微微提升,同时用时27.51s。
最后使用双向切分的方法,正确率几乎不变,用时52s,几乎翻倍的时间。
P | R | F1 | Time | |
---|---|---|---|---|
前向 | 0.8413 | 0.8864 | 0.8864 | 26.91 |
后向 | 0.8482 | 0.8934 | 0.8934 | 27.51 |
双向 | 0.8489 | 0.8939 | 0.8708 | 52.73 |
可见,基于词典的分词方式,不论哪种方法,正确率基本稳定在这个范围上。效果还算可以。
2.基于语料的统计分词,使用二元语法模型来构建词库,然后将句子生成词网,在使用viterbi算法来计算最优解,在这当中使用+1法来处理前后之间概率。代码放在附录2
首先我们处理原始文件,将人民日报语料库的带空格的文件处理成csv的表格形式方便我们进行分词的整理。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OOh3EBmL-1653569658646)(https://www.writebug.com/myres/static/uploads/2022/5/26/c38fb5abc4b27f328c58b4a7e39ec605.writebug)]
这里是二元语法模型的核心代码:
这里是生成句子词网的核心代码:
这里是+1平滑处理的核心代码:
这里是viterbi算法的核心代码:
测试集和训练集均为人民日报语料库,接下来是最终训练出来的效果。
展示了P,R,F1的值
可以看到还是达到了一个近乎99%的正确率,同时训练+预测共耗时307。
P = 0.9905
R = 0.9843
F1 = 0.9873
3.对分词的结果进行词性标注。使用了统计的方法。此处代码同附录2.
我们先对人民日报带词性标注的txt文件进行一个转换,转换成便于我操作的csv文件。
下面是我们词性标注的训练核心代码,统计所有词性和他们的个数,获得相应的词性转移矩阵,在统计每个词语的词性概率。
这里是推测词性的核心代码:
下面是对分词结果的正确性评估,这里我使用了书中使用的方法,仅计算一个Accuracy作为正确率评估标准,同时我只对之前分词正确的结果结果进行词性评估,这样可以避免其它的错误。
通过检测结果来看,词性标注的正确率大概在95%左右,同时共计耗时315s。还算一个相对不错的效果。
最终得出的训练结果中,正确率不变,说明我们能很好的将标点符号分开,但是时间却缩小了一些,说明缩短句子确实有助于减少大规模词网的运算量。
资源下载地址:https://download.csdn.net/download/sheziqiong/85787813
资源下载地址:https://download.csdn.net/download/sheziqiong/85787813
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。