Hanlp配置自定義詞典遇到的問題與解決方法

adnb34g發表於2019-06-17


本文是整理了部分網友在配置 hanlp自定義詞典時遇到的一小部分問題,同時針對這些問題,也提供另一些解決的方案以及思路。這裡分享給大家學習參考。

要使用 hanlp載入自定義詞典可以透過修改配置檔案hanlp.properties來實現。

要注意的點是 :

  1.root根路徑的配置:

    hanlp.properties中配置如下:

      #本配置檔案中的路徑的根目錄,根目錄+其他路徑=完整路徑(支援相對路徑)

      #Windows使用者請注意,路徑分隔符統一使用/

     root=D:/Project/public_sentiment_monitor/plugin/hanlp1.6.8/

  2.自定義詞典路徑的配置,配置檔案中已經指明瞭相應的用法。

    hanlp.properties中配置如下:

      #自定義詞典路徑,用;隔開多個自定義詞典,空格開頭表示在同一個目錄,使用“檔名 詞性”形式則表示這個詞典的詞性預設是該詞性。優先順序遞減。

      #所有詞典統一使用UTF-8編碼,每一行代表一個單詞,格式遵從[單詞] [詞性A] [A的頻次] [詞性B] [B的頻次] ... 如果不填詞性則表示採用詞典的預設詞性。

    CustomDictionaryPath=data/dictionary/custom/hanlp_custom.txt; 搜狗金融詞庫.txt n; CustomDictionary.txt; 現代漢語補充詞庫.txt; 全國地名大全.txt ns; 人名詞典.txt

  3.配置檔案做好以後,自定義詞典不起作用問題

    (1). 需要先刪除custom資料夾下的所有bin檔案,然後再使用hanlp,hanlp會自動載入一個新的bin檔案,自定義詞典就可以使用了。

貌似載入出的 bin檔案只有CustomDictionaryPath這一行配置中的第一個檔案對應的bin,但是內容應該是將所有的自定義詞典都包含了的。

    (2). 如果自定義詞典txt檔案中存在含有空格的詞, 比如說"16 金立債 nz 100"這種配置,回導致自定義詞典載入程式將"16"認為是詞,"金立債"認為是詞性,"nz"認為是詞頻,然後出現Java報錯: 

      java.lang.NumberFormatException: For input string: "nz"

      雖然仍然生成了 bin檔案,但是實際上自定義詞典中的所有詞都是無法使用的。所以在生成自定義詞典txt檔案的過程中,一定要注意詞中是否含有空格,是否符合"詞 詞性 詞頻"的格式。

    (3)如何將含有空格的詞加入自定義詞典中:

      CustomDictionary = JClass('com.hankcs.hanlp.dictionary.CustomDictionary')

      CustomDictionary.add('攻城 獅')

 

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524777/viewspace-2647836/,如需轉載,請註明出處,否則將追究法律責任。

相關文章