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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31524777/viewspace-2650066/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值