话接上篇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初体验的更多相关文章

  1. webpack教程(一)——初体验

    首先全局安装webpack,再npm初始化一个项目,并局部安装webpack开发工具 $ npm install webpack -g npm init (项目名称) $ npm install we ...

  2. Docker深入浅出系列教程——Docker初体验

    我是张飞洪,钻进浩瀚代码,十年有余,人不堪其累,吾不改其乐.我喜欢把玩代码,琢磨词句!代码算法让我穿透规律,文章摘句让我洞察人情.如果你觉得和我的看法不一样,请关注我的头条号,那我们一定合得来. Do ...

  3. Apache Flink教程----安装初体验

    1.window 版本安装 https://flink.apache.org/downloads.html#apache-flink-164 D:\flink-1.6.2-bin-scala_2\fl ...

  4. Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验

    Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出E ...

  5. Xamarin.iOS开发初体验

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0

  6. 【Knockout.js 学习体验之旅】(1)ko初体验

    前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...

  7. 百度EChart3初体验

    由于项目需要在首页搞一个订单数量的走势图,经过多方查找,体验,感觉ECharts不错,封装的很细,我们只需要看自己需要那种类型的图表,搞定好自己的json数据就OK.至于说如何体现出来,官网的教程很详 ...

  8. Flume日志采集系统——初体验(Logstash对比版)

    这两天看了一下Flume的开发文档,并且体验了下Flume的使用. 本文就从如下的几个方面讲述下我的使用心得: 初体验--与Logstash的对比 安装部署 启动教程 参数与实例分析 Flume初体验 ...

  9. python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨

    python系列均基于python3.4环境 ---------@_@? --------------------------------------------------------------- ...

随机推荐

  1. Java 程序 关于Properties 类使用Store方法时不能会覆盖以前Properties 文件的内容

    F:\\Demo.properties 文件内容: #\u65B0\u589E\u4FE1\u606F#Wed Sep 14 11:16:24 CST 2016province=广东tt=近蛋city ...

  2. OFRecord 数据集加载

    OFRecord 数据集加载 在数据输入一文中知道了使用 DataLoader 及相关算子加载数据,往往效率更高,并且学习了如何使用 DataLoader 及相关算子. 在 OFrecord 数据格式 ...

  3. A,B,C,D分别为不同的整数,满足以下乘法公式,求A,B,C,D的值

    问题:A,B,C,D分别为不同的整数,满足以下乘法公式,求A,B,C,D的值 解题思路: 由题意可知A,B,C,D为不同的整数,则A!=B,A!=C,A!=D,B!=C,B!=D,C!=D 再由给出公 ...

  4. python+selenium_鼠标事件

    引言--在实际的web产品测试中,对于鼠标的操作,不单单只有click(),有时候还要用到右击.双击.拖动等操作,这些操作包含在ActionChains类中. 一.ActionChains类中鼠标操作 ...

  5. spring IOC DI AOP MVC 事务, mybatis 源码解读

    demo https://gitee.com/easybao/aop.git spring DI运行时序 AbstractApplicationContext类的 refresh()方法 1: pre ...

  6. vulhub-struts2-s2-007

    0x00 漏洞原理   当配置了验证规则 <ActionName>-validation.xml 时,若类型验证转换出错,后端默认会将用户提交的表单值通过字符串拼接,然后执行一次 OGNL ...

  7. APP的闪退和无响应

    1.app闪退(crash,崩溃):程序异常退出不再运行 闪退的原因: a.程序内部逻辑错误(因算法或网络连接引起的异常,或是为捕捉到的错误) b.系统自身异常:一般自定ROM或刷机后比较常见 c.运 ...

  8. LuatOS | 全新在线模拟器,随时随地发挥创意

    LuatOS --运行在嵌入式硬件的实时操作系统,开启全新物联网生态. 聚焦嵌入式应用生态,内置功能可支持绝大多数物联网应用场景.深度整合Lua语言,只需少量内存和Flash空间就能运行.不局限于合宙 ...

  9. .NetCore使用Docker安装ElasticSearch、Kibana 记录日志

    前言 最近园子里看到一篇<.Net Core with 微服务 - Elastic APM> 的文章(主要用于对接口的调用链.性能进行监控),非常实用,这里讲解.NetCore将日志写入E ...

  10. Android Studio用上国产杰出代表夜神模拟器

    背景介绍 在Windows上除了官方的AVD(Android Virtual Device)我们还可以使用更加便捷的国产安卓模拟器,比如杰出的代表就是夜神模拟器. 我们现在是假设你已经安装好了Andr ...