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环境 ---------@_@? --------------------------------------------------------------- ...
随机推荐
- unity texture 占用内存大小对比
打包多种类型的项目,空项目和10张放在Resources文件夹中的图为比较案例.以下是比较数据. IPHONE: 1.空项目----空间占用量42.3MB----IPA大小10MB 2.10张1200 ...
- GO学习-(8) Go语言基础之数组
Go语言基础之数组 Array(数组) 数组是同一种数据类型元素的集合. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化. 基本语法: // 定义一个长度为3元素类型为 ...
- pytest - 失败重运行机制:rerun
失败重运行机制 用例失败的情况下,可以重新运行用例 一旦用例失败,马上重新运行 安装插件:pip install pytest-rerunfailures 使用命令:--reruns 重试次数 如 - ...
- Keil MDK5 安装教程(附安装包百度云)
关注微信公众号"龙行单片机",后台回复"安装包"获取最新安装包百度云链接. 1.MDK5.11a 安装 双击 mdk511a.exe,进行安装.这里我们将其安装 ...
- MindSpore整体架构介绍
MindSpore整体架构介绍 MindSpore框架架构总体分为MindSpore前端表示层.MindSpore计算图引擎和MindSpore后端运行时三层. MindSpore前端表示层(Mind ...
- 深度学习调用TensorFlow、PyTorch等框架
深度学习调用TensorFlow.PyTorch等框架 一.开发目标目标 提供统一接口的库,它可以从C++和Python中的多个框架中运行深度学习模型.欧米诺使研究人员能够在自己选择的框架内轻松建立模 ...
- 视频系列:RTX实时射线追踪(上)
视频系列:RTX实时射线追踪(上) Video Series: Practical Real-Time Ray Tracing With RTX RTX在游戏和应用程序中引入了一个令人兴奋的和根本性的 ...
- SQL进阶总结(一)
学而不思则罔,趁着假期好好总结下SQL的编程知识. 掌握SQL,首先有两个知识点要明确,要贯穿在我们整个学习SQL的过程中. SQL 不同于之前学习的面向过程.面向编程语言,SQL是一门面向集合的编程 ...
- 在Visual Studio 中使用git——标记(Tag)管理(十)
在Visual Studio 中使用git--什么是Git(一) 在Visual Studio 中使用git--给Visual Studio安装 git插件(二) 在Visual Studio 中使用 ...
- fiddler抓取手机APP包相关的设置
一.设置手机的代理服务器 1.前提:手机与电脑用的是同一个网络 2.fiddler设置允许远程连接,并设置好端口 3.查询电脑所在网络的ip地址(windows下,命令行窗口使用:ipconfig进行 ...