HanLP在IDEA中的配置及使用

HanLP在IDEA中的配置及使用

HanLP介绍

image-20211130110708316

HanLP是一款面向生产环境的自然语言处理工具包。

中文分词中有众多分词工具,如jieba、hanlp、盘古分词器、庖丁解牛分词等;其中庖丁解牛分词仅仅支持java,分词是HanLP最基础的功能,HanLP实现了许多种分词算法,每个分词器都支持特定的配置。接下来我将介绍如何配置Hanlp来开启自然语言处理之旅,每个工具包都是一个非常强大的算法集合。

  • 具有如下功能:

中文分词 词性标注 命名实体识别 依存句法分析 语义依存分析 新词发现 关键词短语提取 自动摘要 文本分类聚类 拼音简繁 自然语言处理

【官方地址】HanLP

【GitHUb地址】源码

  • 类似于Python中的jieba中文分词库,在Java中被封装成为HanLP

HanLP安装

①引入Maven仓库

pom.xml文件中添加依赖

        <dependency>
            <groupId>com.hankcs</groupId>
            <artifactId>hanlp</artifactId>
            <version>portable-1.7.7</version>
        </dependency>

image-20211130111525216

引入IDEA中的Maven项目,重新加载完成后即可使用基本功能(除由字构词、依存句法分析外的全部功能)

image-20211130111924947

Maven中自带的依赖下载较缓慢,如未更改戳下配置

IDEA更改Maven镜像源

以上的HanLP配置仅仅满足基本使用,当处理的分词量较大,较杂需要更多的依赖时则失效,翻阅了各类论坛,搜寻资料,踩坑整理,写在了第二模块做为拓展部分,仅作记录,有需求的朋友目光下移。

②完整配置

问题引申

对于分词来说,StandardTokenizer标准分词器可用,但是NLPTokenizer分词器会出错,需要data包才能支持hanlp.properties,也就是可配置data,无需手动引入jar包

依赖获取

下载jar、data、hanlp.properties,

如下已给出HanLP1.7.6下载的依赖,追求更高版本的朋友,自行去官网搜寻即可

data.zip包含

dictionary和mode文件夹。
lhanlp-release.zip包含

hanlp-1.7.6.jar、hanlp-1.7.6-sources.jar以及最重要的hanlp.properties。

解决问题

解压data.zip得到data文件夹。

将解压后的data文件夹、hanlp.properties移动到java项目中,有开发经验的朋友默认选择放在resources目录下

image-20211130113530030

修改hanlp.properties中的root路径(data的父目录):

root=./src/main/resources

注:引入jar包(如果同时在Maven项目中引入就不需要此步骤),日常使用中配置Maven项目有个基础依赖即可解决大多数问题,完整配置在这里只是做个扩展,帮助有需求的朋友解决需求,避免去各类帖子踩坑,了解更多自行百度,不同IDAE配置方式不同。

HanLP使用

HanLP分词

import java.util
 
import com.hankcs.hanlp.HanLP
import com.hankcs.hanlp.seg.common.Term
import com.hankcs.hanlp.tokenizer.StandardTokenizer
 
import scala.collection.JavaConverters._
 
/**
 * HanLP 入门案例,基本使用
 */
object HanLPTest {
    def main(args: Array[String]): Unit = {
        // 入门Demo
        val terms: util.List[Term] = HanLP.segment("羊村村民懒羊羊")
        println(terms)
        //处理为数组展示
        println(terms.asScala.map(_.word.trim))

        // 标准分词
        val terms1: util.List[Term] = StandardTokenizer.segment("懒羊羊++699--lanyy")
        println(terms1)
        println(terms1.asScala.map(_.word.replaceAll("\\s+", "")))

    }
}

image-20211130115416198

结果展示

[羊村/ns, 村民/n, 懒羊羊/nz]
ArrayBuffer(羊村, 村民, 懒羊羊)
[懒羊羊/nz, ++/w, 699/m, --lanyy/nx]
ArrayBuffer(懒羊羊, ++, 699, --lanyy)

image-20211130115531371

更多实例请移步【官方GitHub-Demo】

image-20211130120017781

了解更多知识请戳下:

@Author:懒羊羊

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会撸代码的懒羊羊

打赏5元,买杯咖啡醒,继续创作

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值