zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Java基础——java中String、StringBuffer、StringBuilder的区别
    Java基础——深入剖析Java中的装箱和拆箱
    Java内存分配全面浅析
    基于Appium的移动端UI自动化测试
    测试比对工具,辅助型QA转型之路
    读懂了腾讯和阿里的区别,就读懂了中国商业的秘密!
    Python中的基础数据类型(List,Tuple,Dict)及其常用用法简析
    阿里妈妈技术质量再度重磅开源:国内首个智能化功能测试开源平台Markov
    卧槽,极客时间今天专栏课程突然免费,啥情况?
    Flask 与 Django 先学哪个呢
  • 原文地址:https://www.cnblogs.com/adnb34g/p/11162114.html
Copyright © 2011-2022 走看看