本文共 782字,阅读大约须要 2分钟 !
HanLP 是基于 Java开发的 NLP工具包,由一系列模型与算法组成,目标是普及天然语言处理在生产环境中的应用。并且 HanLP具有功能完善、性能高效、架构清晰、语料时新、可自定义的特色,所以十分好上手,本文就结合 Spring Boot来将 HanLP用起来!php
注: 本文首发于 My Personal Blog:CodeSheep·程序羊,欢迎光临 小站
本文内容脑图以下:java
因为 HanLP库将数据与代码分离,所以咱们须要分别下载所需数据和 jar包:git
下载完成之后,首先解压 hanlp-release.zip
压缩包,而后将解压出的 HanLP的 jar包引入 Spring Boot工程,而后须要来放置 HanLP所需配置和数据:github
hanlp-release.zip
压缩包中的 hanlp.properties
配置文件置于项目的 resources
资源目录下data.zip
压缩包,将解压出的 data目录一样至于 resources
目录下( data 中的数据包很重要,是 HanLP工做所需的词典和模型 )HanLP 提供了 IO适配器,用户能够实现其提供的 com.hankcs.hanlp.corpus.io.IIOAdapter
接口以在不一样的平台(HDFS、Redis等)上运行HanLP,默认的 IO适配器 IOAdapter = com.hankcs.hanlp.corpus.io.FileIOAdapter
是基于普通文件系统的。算法
接下来咱们重写一下 IOAdapter
类,使用读写静态资源文件的方法来读取HanLP所需的词典和模型数据( 即resources目录下刚放置的 data目录 )spring
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是一个技术博客!") ); }
分词结果以下:ide
[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目录下的模型、字典等数据来知足特定需求,所以仍是十分强大的。
因为能力有限,如有错误或者不当之处,还请你们批评指正,一块儿学习交流!