HanLP使用教程——NLP初体验
话接上篇NLP的学习坑 自然语言处理(NLP)——简介 ,使用HanLP进行分词标注处词性。
HanLP使用简介
HanLP是一系列模型与算法组成的NLP工具包,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。
目前,基于深度学习的HanLP 2.0正处于alpha测试阶段。如果是java用户我们搜索的时候进入到官网可能看回浪费一些事件去搞清楚怎么使用,因为2.0目前貌似是python可以使用,而且在测试阶段,并且现在做了线上商业化api调用。
多数文档是围绕2.0的线上api调用的,所以截至目前如果你是使用java那么直接看1.x分支进行使用就好了。github 地址:https://github.com/hankcs/HanLP/tree/1.x。
根据文档说明有两种方式使用HanLP,第一是直接 maven 依赖,第二种就是 下载jar和配置文件。现在我们来体验下HanLP的使用,let's go
Maven使用
1、我们先建一个简单的maven项目 hanlpdemo

为了方便用户,特提供内置了数据包的Portable版,pom.xml加入依赖,maven reload一下,下载包。
<dependency>
<groupId>com.hankcs</groupId>
<artifactId>hanlp</artifactId>
<version>portable-1.8.2</version>
</dependency>

2、写一个简单的测试方法
/**
* HanLP分词
*
* @param inputStr
*/
public static void HanLpSegment(String inputStr) {
//标准分词
List<Term> termList = StandardTokenizer.segment(inputStr);
System.out.println(termList);
//标准分词封装
System.out.println(HanLP.segment(inputStr));
// NLP分词 词性标注和命名实体识别
System.out.println(NLPTokenizer.segment(inputStr));
}
3、run一下看看结果

分词有多种方式:标准分词、NLP分词、索引分词、 N-最短路径分词等等,其它的这里先不测试了。
上面三种方法的分词中,前面两个已经出来结果了,并且标注了词性,而第三个为什么报错(打开失败:data/model/perceptron/large/cws.bin)?
因为Maven的方式零配置,即可使用基本功能(除由字构词、依存句法分析外的全部功能)。如果用户有自定义的需求,可以参考方式二,使用hanlp.properties进行配置(Portable版同样支持hanlp.properties)。
所以NLPTokenizer.segment方法应该是用到了其中的功能,我们使用第二种方式,配置hanlp.properties。既然已经依赖了maven就不用添加jar包了,直接下载data和配置hanlp.properties就行了。
下载jar、data、hanlp.properties
1、下载: data.zip
下载解压后我们将data文件夹放到src/main/resources 下面,放到其它位置也可以,hanlp.properties里面要配置data的路径。

2、下载jar和配置文件:hanlp-release.zip
解压后我们只需要hanlp.properties文件,放到src/main/resources 下面,修改 root=D:/JavaProjects/HanLP/ 为 root=./src/main/resources


这是第二种配置使用HanLP的方法,因为我们已经Maven依赖了所以这里就不用添加jar包了,如果不用maven还需要将jar添加进项目引用。
3、再run一下

成功运行起来了,大家可以看到NLPTokenizer.segment方法分词的结果和标准分词的结果不同。“2021年7月15日” 被标注成了时间/t,文档说NLPTokenizer会执行词性标注和命名实体识别,所以被标注成了时间/t命名实体。
再来看下词性标注和命名实体是什么,这个说明更能解释这篇文章而已,看我上篇也有定义,反正定义不是我定义的,神似型不似而已怎么说都有理!
词性标注是什么:
词性是词汇基本的语法属性,也称为词类。词性标注是在给定句子中判定每个词的语法范畴,确定其词性并加以标注的过程。
命名实体是什么:
命名实体识别(Named Entity Recognition,简称NER),又称作“专名识别”,是指识别文本中具有特定意义的实体,其目的是识别语料中人名、地名、组织机构名等命名实体。
命名实体是命名实体识别的研究主体,一般包括三大类(实体类、时间类和数字类)和七小类(人名、地名、机构名、时间、日期、货币和百分比)命名实体。
最后
有了NLP的概念了解,也有了NLP的工具,所以也算是要入门 NLP 了(囧)。目前没有实战的需求,只是个人兴趣学习下,反正时间浪费了也是浪费,希望后面又更多的学习和实践分享!
参考:
1、维基百科
2、HanLp 官网
3、HanLP github
HanLP使用教程——NLP初体验的更多相关文章
- webpack教程(一)——初体验
首先全局安装webpack,再npm初始化一个项目,并局部安装webpack开发工具 $ npm install webpack -g npm init (项目名称) $ npm install we ...
- Docker深入浅出系列教程——Docker初体验
我是张飞洪,钻进浩瀚代码,十年有余,人不堪其累,吾不改其乐.我喜欢把玩代码,琢磨词句!代码算法让我穿透规律,文章摘句让我洞察人情.如果你觉得和我的看法不一样,请关注我的头条号,那我们一定合得来. Do ...
- Apache Flink教程----安装初体验
1.window 版本安装 https://flink.apache.org/downloads.html#apache-flink-164 D:\flink-1.6.2-bin-scala_2\fl ...
- Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验
Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出E ...
- Xamarin.iOS开发初体验
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0
- 【Knockout.js 学习体验之旅】(1)ko初体验
前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...
- 百度EChart3初体验
由于项目需要在首页搞一个订单数量的走势图,经过多方查找,体验,感觉ECharts不错,封装的很细,我们只需要看自己需要那种类型的图表,搞定好自己的json数据就OK.至于说如何体现出来,官网的教程很详 ...
- Flume日志采集系统——初体验(Logstash对比版)
这两天看了一下Flume的开发文档,并且体验了下Flume的使用. 本文就从如下的几个方面讲述下我的使用心得: 初体验--与Logstash的对比 安装部署 启动教程 参数与实例分析 Flume初体验 ...
- python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨
python系列均基于python3.4环境 ---------@_@? --------------------------------------------------------------- ...
随机推荐
- 安装篇--xshell评估过期解决方法
打开XSHELL6(以自身版本为准,没有版本限制),弹出如上提示框,解决如下: 1.点击取消,不用卸载原来的,直接进入官网下载安装免费授权的https://www.netsarang.com/ 2.点 ...
- MyBatis执行器
Mybatis的执行器 下面先展示一张图,用来说明一下Mybatis执行器的整体架构 SimpleExecutor 首先SimpleExecutor是我们最常使用的一个执行器,无论我们执行什么方法默认 ...
- python 获取时间范围内日期列表
python 获取时间范围内日期列表 import datetime def dateRange(beginDate, endDate): dates = [] dt = datetime.datet ...
- Linux基础服务——Bind DNS服务 Part1
Linux基础服务--Bind DNS服务 Part1 DNS正向解析 实验环境: CentOS8.3.2011 IP地址:192.168.100.50 VMware虚拟环境 NAT网段 需要解析的区 ...
- curl 常用操作总结
前言 curl 是一个强大的命令行工具,支持 HTTP, HTTPS, SCP 等多种协议,本文主要总结一下其常用的功能,方便及时查阅. curl --version curl 7.68.0 (x86 ...
- 通过 DLPack 构建跨框架深度学习编译器
通过 DLPack 构建跨框架深度学习编译器 深度学习框架,如Tensorflow, PyTorch, and ApacheMxNet,快速原型化和部署深度学习模型提供了强大的工具箱.不幸的是,易用性 ...
- CVPR2019目标检测论文看点:并域上的广义交
CVPR2019目标检测论文看点:并域上的广义交 Generalized Intersection over Union Generalized Intersection over Union: A ...
- PyTorch 数据并行处理
PyTorch 数据并行处理 可选择:数据并行处理(文末有完整代码下载) 本文将学习如何用 DataParallel 来使用多 GPU. 通过 PyTorch 使用多个 GPU 非常简单.可以将模型放 ...
- 新版 ZooKeeper 启动时一直报: Starting zookeeper … FAILED TO START
https://www.pianshen.com/article/74551582443/ 这里引用别人博客,自己验证过,确实如此
- 在VScode 中使用RT-Thread Studio初体验
前言 工欲善其事,必先利其器,VScode是什么东东,想必大家都非常熟悉了,丰富的插件,有好的开发界面,是很多程序开发者的不二之选,RT-Thread竟然也开发了Vscode插件,真的是非常的nice ...