赞
踩
HanLP集成到Springboot及使用自定义词典
开源工具包,提供词法分析、句法分析、文本分析和情感分析等功能,具有功能完善、性能高效、架构清晰、语料时新、可自定义等特点。
官网:https://www.hanlp.com/
开发文档:https://github.com/hankcs/HanLP/blob/1.x/README.md
Maven依赖引入
<dependency>
<groupId>com.hankcs</groupId>
<artifactId>hanlp</artifactId>
<version>portable-1.8.4</version>
</dependency>
使用
创建分词器:Segment segment = HanLP.newSegment()
分词:List<Term> termList = segment.seg(sentence);
根据词性提取需要的单词:词性类Nature
示例,提取地名
// 允许地名识别
Segment segment = HanLP.newSegment().enablePlaceRecognize(true);
List<Term> termList = segment.seg(sentence);
// 过滤地名词性:
List<String> list = termList.stream().filter(term -> Objects.equals(term.nature, Nature.ns)).map(term -> term.word).collect(Collectors.toList());
由于内置的词典所包含的数据量不够大,因而某些单词词性的识别存在误差,需要引入更完善的字典库
resources目录下增加配置文件hanlp.properties
配置自定义词典数据包
# 根目录
root=
# 自定义词典路径,相对于根目录的路径
CustomDictionaryPath=data/dictionary/custom/CustomDictionary.txt;
引入词典数据包
判断配置的目录下是否有核心词典库
// 查看java根目录
System.out.println(new File("").getAbsolutePath());
// 查看hanlp根目录是否存在词典
System.out.println(new File(HanLP.Config.CoreDictionaryPath).exists());
项目代码打成jar包,需要将词典独立于jar包外
# 自定义IO适配器(则可以使用相对hanlp配置文件的路径)
IOAdapter=com.dotwith.framework.manager.MyIOAdapter
# 根目录,词典所在的父级目录(window需改成本机
root=hanlp
# 自定义词典路径,相对于根目录的路径
CustomDictionaryPath=data/dictionary/custom/CustomDictionary.txt;data/dictionary/custom/全国地名大全.txt ns
使用相对路径:自定义IO适配器
public class MyIOAdapter implements IIOAdapter {
@Override
public InputStream open(String path) throws IOException {
System.out.println("path=" + this.getClass().getClassLoader().getResource(path).getFile());
return new FileInputStream(this.getClass().getClassLoader().getResource(path).getFile());
}
@Override
public OutputStream create(String path) throws IOException {
return new FileOutputStream(this.getClass().getClassLoader().getResource(path).getFile());
}
}
其他路径问题参考地址
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。