天天看點

hanlp 加載遠端詞庫示例

說明

·目前的實作方式是以遠端詞庫的内容重新建構CustomDictionary.trie,demo主要是為了實作同步遠端詞庫,對性能暫不作考慮,對性能要求要以CustomDictionary.dat為基礎實作

按hanlp作者述 trie後期可能會取消

目前CustomDictionary使用DAT儲存詞典檔案中的詞語,用BinTrie儲存動态加入的詞語,前者性能高,後者性能低

之是以保留動态增删功能,一方面是曆史遺留特性,另一方面是調試用;來可能會去掉動态增删特性。

·ik的方案,遠端詞庫并不含有詞性詞頻等額外資訊,這裡為了保證詞庫和複用也保持一緻,預設詞性為Nature.nz,詞頻為1 CoreDictionary.Attribute att = new CoreDictionary.Attribute(Nature.nz, 1);

·ik支援多個遠端詞庫,該示例隻支援單項

多詞庫在現方案下,要作任務協作的處理,雖然不難,但改動後和ik原碼的差距會比較大

項目隻是個參考,是以代碼盡量和ik保持一緻,一個遠端詞庫,對大部分場景也夠用了

測試 啟動nginx作為遠端詞庫服務

docker run -d --name nginx -p 1888:80 -v $(pwd)/nlp:/usr/share/nginx/html/nlp nginx:1.13.12

測試是否成功

curl http://127.0.0.1:1888/nlp/words.txt

啟動服務

編譯

mvn clean package -Dmaven.test.skip=true

執行

java -jar target/hanlp-web-2.0.0.RC2.jar

測試url

http://127.0.0.1:1889/hanlp?sentence=小明北飄在北京

詞庫同步任務間隔1分鐘,服務啟動後浏覽器多重新整理幾次便能看到差別

如要擴充至本地項目

1 添加依賴

<dependency>

<groupId>org.apache.httpcomponents</groupId>

<artifactId>httpclient</artifactId>

<version>4.5.2</version>

</dependency>

2 拷貝ExtDictionary,Monitor

3 添加配置resources/hanlp_ext.properties

最後,代碼全是抄的,這個項目隻是基本的搬運,可能對新手會有點幫助