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文件夾下。


分享到:


相關文章: