话接上篇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. C语言实现推箱子游戏完整代码

    C语言实现推箱子游戏完整代码 前言 自己做的,可能有些代码不够工整,或者有些小问题,但游戏的基本操作是可以实现的 代码效果 代码一共分为8个部分,4个控制上下左右移动,2个判断输赢,1个统计归为的个数 ...

  2. Nginx 配置实例-配置高可用

    Nginx 配置实例-配置高可用 1. 实现效果 2. 两台机器 nginx 的安装 2.1 192.168.25.120 中 nginx 的安装 2.1.1 安装 pcre 依赖 2.1.2 安装其 ...

  3. Django(51)drf渲染模块源码分析

    前言 渲染模块的原理和解析模块是一样,drf默认的渲染有2种方式,一种是json格式,另一种是模板方式. 渲染模块源码入口 入口:APIView类中dispatch方法中的:self.response ...

  4. CVPR2020论文解读:OCR场景文本识别

    CVPR2020论文解读:OCR场景文本识别 ABCNet:  Real-time Scene Text Spotting with Adaptive Bezier-Curve Network∗ 论文 ...

  5. 从单一图像中提取文档图像:ICCV2019论文解读

    从单一图像中提取文档图像:ICCV2019论文解读 DewarpNet: Single-Image Document Unwarping With Stacked 3D and 2D Regressi ...

  6. TensorFlow分布式(多GPU和多服务器)详解

    本文介绍有关 TensorFlow 分布式的两个实际用例,分别是数据并行(将数据分布到多个 GPU 上)和多服务器分配. 玩转分布式TensorFlow:多个GPU和一个CPU展示一个数据并行的例子, ...

  7. 如何使用 Python 统计分析 access 日志?

    一.前言 性能场景中的业务模型建立是性能测试工作中非常重要的一部分.而在我们真实的项目中,业务模型跟线上的业务模型不一样的情况实在是太多了.原因可能多种多样,这些原因大大降低了性能测试的价值. 今天的 ...

  8. 提高GUI自动化测试稳定性解决方案

    针对"GUI自动化测试稳定性问题"这个问题,最典型的情景就是:同样的测试用例,在同样的测试执行环境下,测试的结果有时是Success,有时是Fail,这严重降低了GUI测试的可信度 ...

  9. 基于Android平台的图书管理系统的制作(4)

    讲解完学生.职员.书籍这些基础层之后,我们可以来了解一些应用层的活动. 新书上架.借阅排行.黑名单.图书馆介绍.图书馆新闻. 新书上架是查询数据库里的Book表,将最近注册的五本书的基本信息(若图书馆 ...

  10. 【SQLite】教程07-C/C++上使用SQLite3

    1.配置好C/C++项目环境 2.源码 1 #include <iostream> 2 #include <vector> 3 #include <string> ...