在上篇(https://bbs.eeworld.com.cn/thread-1178634-1-1.html)中,我们在米尔MYS-8MMQ6-8E2D-180-C的板卡上尝试对词性进行了标注,发现jieba缺省库中的词性识别并不是特别准确,同时而且分词还存在一些问题,本篇进一步学习NLP,并尝试解决这些问题。
解决上述词典质量不佳问题的最简单方法就是重建一个词典,但那样的话,工作量实在太大,好在jieba里面,支持多词典的叠加使用,可以使用类似jieba.add_word('阿紫道',tag='err')直接屏蔽识别错误的词语,也可以使用类似jieba.load_userdict("wg.txt")重新加载词典。
作为一个武侠迷,花了近两周时间做了一个金庸武侠招式的字典,自定义了拳、掌(爪)、腿、刀、剑等各种招式的字典,加载成功以后尝试运行,结果如下:
射雕英雄传:
天龙八部:
发现似乎有点什么不对劲,刀法里面的那个“不要”是哪里来的呢?
自定义的字典很明确是没有这个的,那么只可能是jiaba自己带进来的了,这个词应该是非常常用的。
搜索dict.txt文件,找到在/usr/lib/python2.7/site-packages/jieba/dict.txt。
可以看到不要被标注成为了“df”,与我们自定义的“刀法”缩写重合了,造成了误判;而且在词典中,仅有这一个“df”标记,推测是标记写错了,可以在代码中直接将“不要”改为v,再尝试执行:
很明显,刀法中的“不要”就已经没有了。自定义词典功能验证成功。