HanLP的CoreBiGramTableDictionary读取自己训练的模型Bug解决

问题详情

Python调用HanLP的CoreBiGramTableDictionary载入自己训练的模型数据时,使用getBiFrequency查看,发现读取的所有二元语法数据均为0。

排除的可能原因

1.若没有设置HanLP.Config.BiGramDictionaryPath,则显示的结果应为默认模型的结果,而不是0。

2.若设置的HanLP.Config.BiGramDictionaryPath路径为空,应报错而不是0。

问题原因:编码格式错误

通过检查,发现一元语法导出的文件编码格式为UTF-8,而二元语法导出的文件编码格式为GBK,所以怀疑是因为编码格式错误导致的问题。

于是我将导出的二元语法模型文件的编码格式由GBK改为UTF-8,再使用CoreBiGramTableDictionary读取训练的模型,发现二元语法数据不再为0。于是确认问题就是因为默认编码格式的问题。

最优解决方案

我后来再大神的论坛“蝴蝶效应”中,找到了“为啥运行的代码总是乱码呢?”帖子,其中提到了一个修复的补丁。可以通过下载最新版的HanLP替换pyhanlp/static/hanlp-1.7.5.jar解决以上编码问题。

最新版HanLP下载地址:https://github.com/hankcs/HanLP/files/3894918/hanlp-1.7.5.jar.zip

pyhanlp文件夹你的Python安装路径的Lib\\site-packages文件夹下。


分享到:


相關文章: