說明html
·目前的實現方式是以遠程詞庫的內容從新構建CustomDictionary.trie,demo主要是爲了實現同步遠程詞庫,對性能暫不做考慮,對性能要求要以CustomDictionary.dat爲基礎實現java
按hanlp做者述 trie後期可能會取消nginx
目前CustomDictionary使用DAT儲存詞典文件中的詞語,用BinTrie儲存動態加入的詞語,前者性能高,後者性能低git
之因此保留動態增刪功能,一方面是歷史遺留特性,另外一方面是調試用;來可能會去掉動態增刪特性。github
·ik的方案,遠程詞庫並不含有詞性詞頻等額外信息,這裏爲了保證詞庫和複用也保持一致,默認詞性爲Nature.nz,詞頻爲1 CoreDictionary.Attribute att = new CoreDictionary.Attribute(Nature.nz, 1);web
·ik支持多個遠程詞庫,該示例只支持單項docker
多詞庫在現方案下,要做任務協做的處理,雖然不難,但改動後和ik原碼的差距會比較大apache
項目只是個參考,所以代碼儘可能和ik保持一致,一個遠程詞庫,對大部分場景也夠用了瀏覽器
測試curl
啓動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
最後,代碼全是抄的,這個項目只是基本的搬運,可能對新手會有點幫助
文章轉載自 :https://github.com/cclient/hanlp-remote-dict