·目前的實作方式是以遠端詞庫的内容重新建構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
測試urlhttp://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
最後,代碼全是抄的,這個項目隻是基本的搬運,可能對新手會有點幫助