论坛
门户
内部优惠
喜欢
话题
VIP会员
搜索
新浪微博
登录
注册
100%
100%
首页
>
网络技术
>
网络技术
>
Spring MVCD框架中调用HanLP分词的方法
回复
« 返回列表
hadoop小学生
精灵王
注册日期
2018-09-13
发帖数
160
QQ
3234520070
火币
360枚
粉丝
0
关注
0
加关注
写私信
打招呼
阅读:
6170
回复:
0
Spring MVCD框架中调用HanLP分词的方法
楼主
#
更多
只看楼主
倒序阅读
发布于:2019-07-10 10:29
hanlp分词
保存
100%
100%
[]
点我领京东618现金红包! 必中!
项目简要:关于
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
喜欢
0
评分
0
最新喜欢:
DKHadoop用着还不错!
回复
100%
发帖
回复
« 返回列表
普通帖
您需要登录后才可以回帖,
登录
或者
注册
100%
返回顶部
关闭
最新喜欢