此文整理的基础是建立在hanlp较早版本的基础上的,虽然hanlp的最新1.7版本已经发布,但对于入门来说差别不大!分享一篇比较早的“旧文”给需要的朋友!

安装HanLP

HanLP将数据与程序分离,给予用户自定义的自由。 HanLP由三部分组成:HanLP = .jar + data + .properties ,请前往 项目主页 下载这三个部分。

1、下载jar

放入classpath并添加依赖。

2、下载数据集

HanLP 中的数据分为 词典 和 模型 ,其中 词典 是词法分析必需的, 模型 是句法分析必需的,data目录结构如下:

data

├─dictionary

└─model

用户可以自行增删替换,如果不需要句法分析功能的话,随时可以删除model文件夹。

可选数据集

3、配置文件

示例配置文件:

#本配置文件中的路径的根目录,根目录+其他路径=绝对路径

#Windows用户请注意,路径分隔符统一使用/

root=E:/JavaProjects/HanLP/

#核心词典路径

CoreDictionaryPath=data/dictionary/CoreNatureDictionary.txt

#2元语法词典路径

BiGramDictionaryPath=data/dictionary/CoreNatureDictionary.ngram.txt

#停用词词典路径

CoreStopWordDictionaryPath=data/dictionary/stopwords.txt

#同义词词典路径

CoreSynonymDictionaryDictionaryPath=data/dictionary/synonym/CoreSynonym.txt

#人名词典路径

PersonDictionaryPath=data/dictionary/person/nr.txt

#人名词典转移矩阵路径

PersonDictionaryTrPath=data/dictionary/person/nr.tr.txt

#繁简词典路径

TraditionalChineseDictionaryPath=data/dictionary/tc/TraditionalChinese.txt

#自定义词典路径,用;隔开多个自定义词典,空格开头表示在同一个目录,使用“文件名 词性”形式则表示这个词典的词性默认是该词性。优先级递减。

#另外data/dictionary/custom/CustomDictionary.txt是个高质量的词库,请不要删除

CustomDictionaryPath=data/dictionary/custom/CustomDictionary.txt; 现代汉语补充词库.txt; 全国地名大全.txt ns; 人名词典.txt; 机构名词典.txt; 上海地名.txt ns;data/dictionary/person/nrf.txt nrf

配置文件的作用是告诉HanLP数据包的位置,只需修改第一行

root=usr/home/HanLP/

为data的 父目录 即可,比如data目录是 /Users/hankcs/Documents/data ,那么 root=/Users/hankcs/Documents/ 。

l 如果选用mini数据包的话,则需要修改配置文件:

CoreDictionaryPath=data/dictionary/CoreNatureDictionary.mini.txt

BiGramDictionaryPath=data/dictionary/CoreNatureDictionary.ngram.mini.txt

最后将HanLP.properties放入classpath即可:

对于Eclipse来讲

project/bin

对于IntelliJ IDEA来讲

project/target/classes

或者

project/out/production/project

Web项目的话可以放在如下位置:

Webapp/WEB-INF/lib

Webapp/WEB-INF/classes

Appserver/lib

JRE/lib

 

快速上手

HanLP 几乎所有的功能都可以通过工具类 HanLP 快捷调用,当你想不起来调用方法时,只需键入 HanLP. ,IDE应当会给出提示,并展示HanLP完善的文档。

推荐用户始终通过工具类 HanLP 调用,这么做的好处是,将来 HanLP 升级后,用户无需修改调用代码。

所有Demo都位于 com.hankcs.demo 下。

第一个Demo:

System.out.println(HanLP.segment("你好,欢迎使用HanLP!"));

l 内存要求

1.HanLP 对词典的数据结构进行了长期的优化,可以应对绝大多数场景。哪怕 HanLP 的词典上百兆也无需担心,因为在内存中被精心压缩过。

2.如果内存非常有限,请使用小词典。 HanLP 默认使用大词典,同时提供小词典,请参考配置文件章节。

3.在一些句法分析场景中,需要加载几百兆的模型。如果发生 java.lang.OutOfMemoryError ,则建议使用JVM option -Xms1g -Xmx1g -Xmn512m。

l 写给正在编译 HanLP 的开发者

1.如果你正在编译运行从Github检出的 HanLP 代码,并且没有下载data,那么首次加载词典/模型会发生一个 自动缓存 的过程。

2.自动缓存 的目的是为了加速词典载入速度,在下次载入时,缓存的词典文件会带来毫秒级的加载速度。由于词典体积很大, 自动缓存 会耗费一些时间,请耐心等待。

3.自动缓存 缓存的不是明文词典,而是双数组Trie树、DAWG、AhoCorasickDoubleArrayTrie等数据结构。

如果一切正常,您会得到类似于如下的输出:

[你好/vl, ,/w, 欢迎/v, 使用/v, HanLP/nx, !/w]

如果出现了问题,一般是由路径配置不对而引发的,请根据控制台输出的警告调整。比如:

核心词典

/Users/hankcs/JavaProjects/HanLP/data/data/dictionary/CoreNatureDictionary.txt加载失败

说明HanLP.properties中的root项配置不对,应当去掉后缀 data/,改为:

root=/Users/hankcs/JavaProjects/HanLP/

自然语言处理hanlp的入门基础的更多相关文章

  1. 自然语言处理NLP快速入门

    自然语言处理NLP快速入门 https://mp.weixin.qq.com/s/J-vndnycZgwVrSlDCefHZA [导读]自然语言处理已经成为人工智能领域一个重要的分支,它研究能实现人与 ...

  2. mybatis入门基础(二)----原始dao的开发和mapper代理开发

    承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...

  3. 01shell入门基础

    01shell入门基础 为什么学习和使用shell编程 shell是一种脚本语言,脚本语言是相对于编译语言而言的.脚本语言不需要编译,由解释器读取程序并且执行其中的语句,而编译语言需要编译成可执行代码 ...

  4. Markdown入门基础

    // Markdown入门基础 最近准备开始强迫自己写博文,以治疗严重的拖延症,再不治疗就“病入骨髓,司命之所属,无奈何”了啊.正所谓“工欲善其事,必先利其器”,于是乎在写博文前,博主特地研究了下博文 ...

  5. JavaScript入门基础

    JavaScript基本语法 1.运算符 运算符就是完成操作的一系列符号,它有七类: 赋值运算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&=).算术运 ...

  6. C++ STL编程轻松入门基础

    C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试 ...

  7. HTML入门基础教程相关知识

    HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...

  8. Linux shell入门基础(六)

    六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...

  9. Linux shell入门基础(一)

    Linux shell入门基础(一): 01.增加删除用户: #useradd byf   userdel byf(主目录未删除)  userdel -r byf   该用户的属性:usermod 用 ...

随机推荐

  1. idea本地安装 lombok插件

    转:https://blog.csdn.net/weixin_41404773/article/details/80689639 idea本地安装 lombok插件 项目中经常使用bean,entit ...

  2. java中高级

    面试问题: 一.Java基础方面: 1.Java面相对象的思想的理解(主要是多态): http://blog.csdn.net/zhaojw_420/article/details/70477636 ...

  3. HDU 6140 17多校8 Hybrid Crystals(思维题)

    题目传送: Hybrid Crystals Problem Description > Kyber crystals, also called the living crystal or sim ...

  4. 【Python】Excel-4(样式设置)

    #练习: #封装一个ExcelUtil的模块(构造函数是excel的路径),里面提供封装的方法: #1 获取某个sheet对象 #2 打印所有sheet名称 #3 给某个sheet的某个单元格写入内容 ...

  5. 【转载】 Pytorch(0)降低学习率torch.optim.lr_scheduler.ReduceLROnPlateau类

    原文地址: https://blog.csdn.net/weixin_40100431/article/details/84311430 ------------------------------- ...

  6. ss-libev控制脚本

    适用于:shadowsocks-libev-3.0.3 操作系统:CentOS6.8 #!/bin/sh SHADOWSOCKS_SERVER="/usr/local/shadowsocks ...

  7. Android Hook框架adbi源码浅析(二)

    二.libbase 其实上面加载完SO库后,hook的功能我们完全可以自己在动态库中实现.而adbi作者为了方便我们使用,编写了一个通用的hook框架工具即libbase库.libbase依然在解决两 ...

  8. Build Tool(构建工具)

    what: 构建工具能够帮助你创建一个可重复的.可靠的.携带的且不需要手动干预的构建.构建工具是一个可编程的工具,它能够让你以可执行和有序的任务来表达自动化需求.假设你想要编译源代码,将生成的clas ...

  9. n!的质因子分解

    其中k为任意质因子,因为a的数值不确定,所有k的值可以任意选择. 以下代码用于求出m!: #include<bits/stdc++.h> LL getpow(LL n,LL k) { LL ...

  10. Python字符集

    字符集: 美国:ASCII      需要8bit表示     英文字母一个字节,不支持中文中国:GBK                           英文字母一个字节,汉字占两个字节万国:un ...