Spring MVCD框架中呼叫HanLP分詞的方法
專案簡要:關於 java web的一個專案,用的Spring MVCd 框架。鑑於參與此次專案的人中並不是所人都做的Spring,為了能夠提高效率,建議大家是先拋開SPring來寫自己負責的模組,最後再把各個模組在Spring裡面整合。
專案裡有一個文字分析的模組是一個同學用 hanlp寫的,由於在最後整合的時候直接使用maven新增的依賴,但最終測試時無法透過。後經分析發現她坐了實體識別,是自己改了hanlp的詞典,手動加了很多詞,而且在後期版本的迭代中還有可能繼續改了hanlp的詞典,這就意味著不能用maven直接匯入倉庫裡的包了,只有將修改後的data檔案放到本地,然後指定路徑給hanlp。
網上有一些解決的方法,但都是在專案部署的時候,把 hanlp的詞典資料放到伺服器上一個固定位置上,然後再配置hanlp的配置檔案,指定一個固定位置。這種方法雖然比較直接,但是並不能夠把hanlp的詞典資料與整個專案打包到一起,後期的管理也比較麻煩。 倘若把資料直接作為專案的資原始檔,部署到 Tomcat上後無論怎麼在配置裡寫路徑都會提示找不到詞典檔案。
在分析了 HanLP的issue之後,發現這個專案支援自定義讀寫檔案的IO類。在一個將詞典資料放到HDFS上的一個blog啟發下, 嘗試透過 重寫一個 IOAdapter類,使用讀寫靜態資原始檔的方法讀取詞典資料了,這樣不就可以把data跟專案打包到一起了。
程式碼如下:
1| package com.car.util.nlp;
2|
3| import com.hankcs.hanlp.corpus.io.IIOAdapter;
4| import org.springframework.core.io.ClassPathResource;
5| import java.io.*;
6|
7| public class ResourcesFileIoAdapter implements IIOAdapter{
8| @Override
9| public InputStream open(String path) throws IOException {
10| ClassPathResource resource = new ClassPathResource(path);
11| InputStream is = new FileInputStream(resource.getFile());
12| return is;
13| }
14| @Override
15| public OutputStream create(String path) throws IOException{
16| ClassPathResource resource = new ClassPathResource(path);
17| OutputStream os = new
18| FileOutputStream(resource.getFile());
19| return os;
20| }
21| }
整好了之後把 data資料夾和hanlp.properties放到專案的資原始檔夾裡,在配置檔案裡修改一下路徑和IOAdapte:
1| root=
2|
3| IOAdapte=com.car.util.nlp.ResourcesFileIoAdapter
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524777/viewspace-2650066/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HanLP分詞工具中的ViterbiSegment分詞流程HanLP分詞Viterbi
- 分詞工具Hanlp基於感知機的中文分詞框架HanLP中文分詞框架
- python呼叫hanlp分詞包手記PythonHanLP分詞
- Hanlp在java中文分詞中的使用介紹HanLPJava中文分詞
- Elasticsearch整合HanLP分詞器ElasticsearchHanLP分詞
- HanLP-實詞分詞器詳解HanLP分詞
- HanLP分類模組的分詞器介紹HanLP分詞
- HanLP中文分詞Lucene外掛HanLP中文分詞
- java分詞工具hanlp介紹Java分詞HanLP
- NLP自然語言處理中的hanlp分詞例項自然語言處理HanLP分詞
- 基於hanlp的es分詞外掛HanLP分詞
- Ansj與hanlp分詞工具對比HanLP分詞
- Hanlp分詞之CRF中文詞法分析詳解HanLP分詞CRF詞法分析
- 基於 HanLP 的 ES 中文分詞外掛HanLP中文分詞
- HanLP分詞命名實體提取詳解HanLP分詞
- Spark中分散式使用HanLP(1.7.0)分詞示例Spark分散式HanLP分詞
- Hanlp中使用純JAVA實現CRF分詞HanLPJavaCRF分詞
- 中文分詞演算法工具hanlp原始碼解析中文分詞演算法HanLP原始碼
- HanLP程式碼與詞典分離方案與流程HanLP
- NLP入門學習中關於分詞庫HanLP匯入使用教程分詞HanLP
- Spring Boot中對自然語言處理工具包hanlp的呼叫詳解Spring Boot自然語言處理HanLP
- MapReduce實現與自定義詞典檔案基於hanLP的中文分詞詳解HanLP中文分詞
- Spring HTTP invoker (spring框架中的一個遠端呼叫模型)SpringHTTP框架模型
- Hanlp等七種優秀的開源中文分詞庫推薦HanLP中文分詞
- hanlp中文智慧分詞自動識別文字提取例項HanLP分詞
- Hanlp分詞例項:Java實現TFIDF演算法HanLP分詞Java演算法
- hanlp原始碼解析之中文分詞演算法詳解HanLP原始碼中文分詞演算法
- HanLP-停用詞表的使用示例HanLP
- Hanlp自然語言處理中的詞典格式說明HanLP自然語言處理
- Hanlp配置自定義詞典遇到的問題與解決方法HanLP
- Spring 3中非同步方法呼叫Spring非同步
- 開源自然語言處理工具包hanlp中CRF分詞實現詳解自然語言處理HanLPCRF分詞
- PHP通過FFI呼叫CJieba分詞PHPJieba分詞
- PHP透過FFI呼叫CJieba分詞PHPJieba分詞
- 自然語言處理工具HanLP-N最短路徑分詞自然語言處理HanLP分詞
- 自然語言處理工具python呼叫hanlp的方法步驟自然語言處理PythonHanLP
- Hanlp在ubuntu中的使用方法介紹HanLPUbuntu
- Hanlp分詞1.7版本在Spark中分散式使用記錄HanLP分詞Spark分散式