当前位置:   article > 正文

HanLP在IDEA中的配置及使用_hanlp.properties

hanlp.properties

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>
  • 1
  • 2
  • 3
  • 4
  • 5

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
  • 1

注:引入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+", "")))

    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

image-20211130115416198

结果展示

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

image-20211130115531371

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

image-20211130120017781

了解更多知识请戳下:

@Author:懒羊羊

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/357548
推荐阅读
相关标签
  

闽ICP备14008679号