自然语言处理工具包 HanLP在Spring Boot中的应用

图灵汇官网

概述

HanLP 是一款基于 Java 开发的自然语言处理工具包,由一系列模型和算法组成,旨在推广自然语言处理在实际应用中的使用。HanLP 具备功能完善、性能高效、架构清晰、语料及时更新、支持自定义等特点,使得它非常易于上手。本文将介绍如何结合 Spring Boot 来使用 HanLP。

内容结构图

(此处省略图片)

下载 HanLP 数据和程序

HanLP 库将数据与代码分离,因此需要分别下载所需的数据和 JAR 包:

  • 数据包:访问 http://nlp.hankcs.com/download.php?file=data 下载。
  • JAR 包:访问 http://nlp.hankcs.com/download.php?file=jar 下载。

工程搭建

创建 Spring Boot 工程

创建一个普通的 Spring Boot 工程,具体步骤不赘述。

引入 HanLP 数据和配置

下载完成后,首先解压 hanlp-release.zip 文件,然后将解压出的 HanLP 的 JAR 包引入到 Spring Boot 工程中。接下来,需要放置 HanLP 所需的数据和配置:

  1. 将解压后的 hanlp.properties 文件放置在项目的 resources 目录下。
  2. 解压 data.zip 文件,并将解压出的 data 目录同样放在 resources 目录下(data 目录包含重要的词典和模型)。

创建 IO 适配器

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 的 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]

后记

由于能力有限,如果有任何错误或不当之处,希望您能够批评指正,共同学习交流!

作者更多系列文章

(此处省略具体内容)

结束语

感谢您的阅读,希望本文对您有所帮助!如果您有任何问题或建议,欢迎随时联系我。

本文来源: 图灵汇 文章作者: AI黑石