自然语言处理工具包 HanLP在 Spring Boot中的应用
本文共 782字,阅读大约需要 2分钟 !
概 述
HanLP 是基于 Java开发的 NLP工具包,由一系列模型与算法组成,目标是普及自然语言处理在生产环境中的应用。而且 HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点,因此十分好上手,本文就结合 Spring Boot来将 HanLP用起来!
注: 本文首发于 My Personal Blog:CodeSheep·程序羊,欢迎光临 小站
本文内容脑图如下:
下载 HanLP数据和程序
由于 HanLP库将数据与代码分离,因此我们需要分别下载所需数据和 jar包:
- 所需 data数据包下载地址为 data.zip
- 所需 jar包下载地址为 hanlp-release.zip
工程搭建
-
创建一个普通的 Spring Boot工程,不赘述
-
引入 HanLP数据 和 配置
下载完成以后,首先解压 hanlp-release.zip
压缩包,然后将解压出的 HanLP的 jar包引入 Spring Boot工程,然后需要来放置 HanLP所需配置和数据:
-
将解压后
hanlp-release.zip
压缩包中的hanlp.properties
配置文件置于项目的resources
资源目录下 -
然后解压
data.zip
压缩包,将解压出的 data目录同样至于resources
目录下( data 中的数据包很重要,是 HanLP工作所需的词典和模型 )
创建 IO适配器
HanLP 提供了 IO适配器,用户可以实现其提供的 com.hankcs.hanlp.corpus.io.IIOAdapter
接口以在不同的平台(HDFS、Redis等)上运行HanLP,默认的 IO适配器 IOAdapter = com.hankcs.hanlp.corpus.io.FileIOAdapter
是基于普通文件系统的。
接下来我们重写一下 IOAdapter
类,使用读写静态资源文件的方法来读取HanLP所需的词典和模型数据( 即resources目录下刚放置的 data目录 )
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,有两处需要改为以下配置:
root= // 我们不再需要这种指定data目录的方式 IOAdapter=cn.codesheep.springbt_hanlp_userdefine.config.ResourceFileIoAdapter // 指定自定义的IOAdapter
好,现在项目就可以工作了,我们接下来写几个测试用例测试体验一把 !
实验测试
随便写几个例子来感受一番:
- 分词功能
@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的接口来获取详情
- 文本推荐
@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 → [《时代》年度人物最终入围名单出炉 普京马云入选]
- 关键字提取
@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]
体验一番我们发现其自带的模型、字典等数据给出的实验效果已经是非常不错了,而且用户还可以自定义或修改 data目录下的模型、字典等数据来满足特定需求,因此还是十分强大的。
后 记
由于能力有限,若有错误或者不当之处,还请大家批评指正,一起学习交流!
- My Personal Blog:CodeSheep 程序羊
- 我的半年技术博客之路
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Web API 持续集成:PostMan+Newman+Jenkins(图文讲解)
本文由葡萄城技术团队于OSChina原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 上篇文章我们已经完成了API测试工具选型,接下来是一系列周期性的开发测试过程:接口开发、检出代码、运行测试、记录结果、发送报告。为了快速发现问题,并减少重复过程以节省时间、费用和工作量,我们需要一套完整的持续集成解决方案,除接口开发之外其他环节全部自动完成,无需太多的人工干预。 这篇文章将对持续集成解决方案进行一步一步的讲解,希望对大家能有帮助。 1. Web Api 测试工具选型 目前市场有很多的用于API 测试的工具,如Postman, SoapUI, YApi, HttpRunner等等。 在进行了很多的尝试后,我们最终还是决定在Postman和Soap UI间做出抉择,在经过我们详细的对比后:https://my.oschina.net/powertoolsteam/blog/2243550 最终我们选择了Postman。 2. 用Postman创建项目 选型做好了,第二步当然是Postman用起来了,创建自己的项目。参照Postm...
- 下一篇
SpringBoot | 第三十一章:MongoDB的集成和使用
前言 上一章节,简单讲解了如何集成Spring-data-jpa。本章节,我们来看看如何集成NoSQL的Mongodb。mongodb是最早热门非关系数据库的之一,使用也比较普遍。最适合来存储一些非结构数据了,适合对大量或者无固定格式的数据进行存储,比如:日志、缓存等。 一点知识 以下部分关于Mongodb介绍,来自网站:https://www.mongodb.com/cn 、纯洁的微笑 MongoDB简介 MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是可以应用于各种规模的企业、各个行业以及各类应用程序的开源数据库。作为一个适用于敏捷开发的数据库,MongoDB的数据模式可以随着应用程序的发展而灵活地更新。与此同时,它也为开发人员 提供了传统数据库的功能:二级索引,完整的查询系统以及严格一致性等等。 MongoDB能够使企业更加具有敏捷性和可扩展性,各种规模的企业都可以通过使用MongoDB来创建新的应用,提高与客户之间的工作效率,加快产品上市时间,以及降低企业成本。 **MongoDB是专为可扩展性,高性能和高可用性而设计的数据库。**它可以从单服务器部...
相关文章
文章评论
共有0条评论来说两句吧...