HanLP 是一款基于 Java 开发的自然语言处理工具包,由一系列模型和算法组成,旨在推广自然语言处理在实际应用中的使用。HanLP 具备功能完善、性能高效、架构清晰、语料及时更新、支持自定义等特点,使得它非常易于上手。本文将介绍如何结合 Spring Boot 来使用 HanLP。
(此处省略图片)
HanLP 库将数据与代码分离,因此需要分别下载所需的数据和 JAR 包:
创建一个普通的 Spring Boot 工程,具体步骤不赘述。
下载完成后,首先解压 hanlp-release.zip 文件,然后将解压出的 HanLP 的 JAR 包引入到 Spring Boot 工程中。接下来,需要放置 HanLP 所需的数据和配置:
hanlp.properties 文件放置在项目的 resources 目录下。data.zip 文件,并将解压出的 data 目录同样放在 resources 目录下(data 目录包含重要的词典和模型)。HanLP 提供了一个 IO 适配器,用户可以通过实现 com.hankcs.hanlp.corpus.io.IIOAdapter 接口在不同平台上运行 HanLP。默认的 IO 适配器是基于普通文件系统的。
接下来,我们将重写 IOAdapter 类,使用读写静态资源文件的方法来读取 HanLP 所需的词典和模型数据(即 resources 目录下的 data 目录):
```java public class ResourceFileIoAdapter implements IIOAdapter { @Override public InputStream open(String path) throws IOException { ClassPathResource resource = new ClassPathResource(path); InputStream is = new FileInputStream(resource.getFile()); return is; }
@Override
public OutputStream create(String path) throws IOException {
ClassPathResource resource = new ClassPathResource(path);
OutputStream os = new FileOutputStream(resource.getFile());
return os;
}
} ```
配置 HanLP 的 hanlp.properties 文件,修改两处配置:
properties
root= // 不再需要指定 data 目录的方式
IOAdapter=cn.codesheep.springbt_hanlp_userdefine.config.ResourceFileIoAdapter // 指定自定义的 IOAdapter
接下来,我们将编写几个测试用例来体验 HanLP 的功能。
java
@Test
public void testSegment() {
System.out.println(HanLP.segment("www.codesheep.cn 是一个技术博客!"));
}
分词结果如下:
[www/nx, .w, codesheep/nx, .w, cn/nx, 是/vshi, 一个/mq, 技术/n, 博客/n, !/w]
每个词段后的 /nx, /w 等是 HanLP 定义的词性,可以查看 HanLP 的接口来获取详细信息。
```java @Test public void testSuggest() { Suggester suggester = new Suggester(); String[] titleArray = ( "威廉王子发表演说 呼吁保护野生动物n" + "《时代》年度人物最终入围名单出炉 普京马云入选n" + "“黑格比”横扫菲:菲吸取“海燕”经验及早疏散n" + "日本保密法将正式生效 日媒指其损害国民知情权n" + "人工智能如今是非常火热的一门技术").split("n");
for (String title : titleArray) {
suggester.addSentence(title);
}
System.out.println(suggester.suggest("机器学习", 1)); // 语义
System.out.println(suggester.suggest("危机公共", 1)); // 字符
System.out.println(suggester.suggest("mayun", 1)); // 拼音
} ```
三个关键字的语句推荐结果为: - 机器学习 → 人工智能如今是非常火热的一门技术” - 危机公共 → 威廉王子发表演说 呼吁保护野生动物 - mayun → 《时代》年度人物最终入围名单出炉 普京马云入选
java
@Test
public void testKeyExtract() {
String content = "苹果公司(Apple Inc. )是美国一家高科技公司。由史蒂夫·乔布斯、斯蒂夫·沃兹尼亚克和罗·韦恩(Ron Wayne)等人于1976年4月1日创立,并命名为美国苹果电脑公司(Apple Computer Inc. ),2007年1月9日更名为苹果公司,总部位于加利福尼亚州的库比蒂诺。";
List<String> keywordList = HanLP.extractKeyword(content, 5);
System.out.println(keywordList);
}
提取结果为:
[公司, 苹果, 美国, Inc, Apple]
由于能力有限,如果有任何错误或不当之处,希望您能够批评指正,共同学习交流!
(此处省略具体内容)
感谢您的阅读,希望本文对您有所帮助!如果您有任何问题或建议,欢迎随时联系我。