hanlp安装和使用

下载HanLP-1.3.4.zip

下载hanlp-1.3.4-release

下载hanlp.properties

在https://github.com/hankcs/HanLP/releases中下载data然后覆盖HanLP-1.3.4.zip解压后的data

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

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

root=E:/hannlp/HanLP-1.3.4/HanLP-1.3.4/

#核心词典路径

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

#CRF分词模型路径

CRFSegmentModelPath=data/model/segment/CRFSegmentModel.txt

#HMM分词模型

HMMSegmentModelPath=data/model/segment/HMMSegmentModel.bin

#分词结果是否展示词性

ShowTermNature=true

项目目录

测试代码:

package hanlp;

import java.util.List;

import com.hankcs.hanlp.HanLP;

import com.hankcs.hanlp.seg.common.Term;

import com.hankcs.hanlp.suggest.Suggester;

import com.hankcs.hanlp.tokenizer.NLPTokenizer;

public class Test {

public static void main(String[] args) {

System.out.println("首次编译运行时,HanLP会自动构建词典缓存,请稍候……\n");

// 第一次运行会有文件找不到的错误但不影响运行,缓存完成后就不会再有了

System.out.println("标准分词:");

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

System.out.println("\n");

List<Term> termList = NLPTokenizer.segment("患者于1月前无明显诱因偶然发现右侧腘窝囊肿,囊肿质韧,无明显活动度,压痛,无红肿,无异常分泌物");

System.out.println("NLP分词:");

System.out.println(termList);

System.out.println("\n");

System.out.println("智能推荐:");

getSegement();

System.out.println("\n");

System.out.println("关键字提取:");

getMainIdea();

System.out.println("\n");

System.out.println("自动摘要:");

getZhaiYao();

System.out.println("\n");

System.out.println("短语提取:");

getDuanYu();

System.out.println("\n");

}

/**

* 智能推荐部分

*/

public static void getSegement() {

Suggester suggester = new Suggester();

String[] titleArray = ("威廉王子发表演说 呼吁保护野生动物\n" + "《时代》年度人物最终入围名单出炉 普京马云入选\n" + "“黑格比”横扫菲:菲吸取“海燕”经验及早疏散\n"

+ "日本保密法将正式生效 日媒指其损害国民知情权\n" + "英报告说空气污染带来“公共健康危机”").split("\\n");

for (String title : titleArray) {

suggester.addSentence(title);

}

System.out.println(suggester.suggest("发言", 1)); // 语义

System.out.println(suggester.suggest("危机公共", 1)); // 字符

System.out.println(suggester.suggest("mayun", 1)); // 拼音

}

/**

* 关键字提取

*/

public static void getMainIdea() {

String content = "程序员(英文Programmer)是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、高级程序员、系统分析员和项目经理四大类。";

List<String> keywordList = HanLP.extractKeyword(content, 5);

System.out.println(keywordList);

}

/**

* 自动摘要

*/

public static void getZhaiYao() {

String document = "算法可大致分为基本算法、数据结构的算法、数论算法、计算几何的算法、图的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法、厄米变形模型、随机森林算法。\n"

+ "算法可以宽泛的分为三类,\n" + "一,有限的确定性算法,这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。\n"

+ "二,有限的非确定算法,这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是唯一的或确定的。\n"

+ "三,无限的算法,是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。";

List<String> sentenceList = HanLP.extractSummary(document, 3);

System.out.println(sentenceList);

}

/**

* 短语提取

*/

public static void getDuanYu() {

String text = "算法工程师\n"

+ "算法(Algorithm)是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。算法工程师就是利用算法处理事物的人。\n"

+ "\n" + "1职位简介\n" + "算法工程师是一个非常高端的职位;\n" + "专业要求:计算机、电子、通信、数学等相关专业;\n"

+ "学历要求:本科及其以上的学历,大多数是硕士学历及其以上;\n" + "语言要求:英语要求是熟练,基本上能阅读国外专业书刊;\n"

+ "必须掌握计算机相关知识,熟练使用仿真工具MATLAB等,必须会一门编程语言。\n" + "\n" + "2研究方向\n"

+ "视频算法工程师、图像处理算法工程师、音频算法工程师 通信基带算法工程师\n" + "\n" + "3目前国内外状况\n"

+ "目前国内从事算法研究的工程师不少,但是高级算法工程师却很少,是一个非常紧缺的专业工程师。算法工程师根据研究领域来分主要有音频/视频算法处理、图像技术方面的二维信息算法处理和通信物理层、雷达信号处理、生物医学信号处理等领域的一维信息算法处理。\n"

+ "在计算机音视频和图形图像技术等二维信息算法处理方面目前比较先进的视频处理算法:机器视觉成为此类算法研究的核心;另外还有2D转3D算法(2D-to-3D conversion),去隔行算法(de-interlacing),运动估计运动补偿算法(Motion estimation/Motion Compensation),去噪算法(Noise Reduction),缩放算法(scaling),锐化处理算法(Sharpness),超分辨率算法(Super Resolution),手势识别(gesture recognition),人脸识别(face recognition)。\n"

+ "在通信物理层等一维信息领域目前常用的算法:无线领域的RRM、RTT,传送领域的调制解调、信道均衡、信号检测、网络优化、信号分解等。\n" + "另外数据挖掘、互联网搜索算法也成为当今的热门方向。\n"

+ "算法工程师逐渐往人工智能方向发展。";

List<String> phraseList = HanLP.extractPhrase(text, 10);

System.out.println(phraseList);

}

}

包括中文分词,句法分析和命名实体识别。

文章来源于勿在浮沙筑高台LS的博客

原文链接:https://blog.csdn.net/lanlantian123456/article/details/83344084

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序你好

程序员算法基础——贪心算法

1482
来自专栏数据和云

神马?SQL竟然可以解脑筋急转弯的题目?

我在很多公开演讲中都明目张胆的羡慕过一类人,他们把SQL当做艺术,把旁人眼中的枯燥演绎成经典,云和恩墨专家团队中的杨廷琨、罗海雄就都是这样的SQL专家。 今天,...

3334
来自专栏数据小魔方

R语言可视化——ggplot图表配色技巧

今天跟大家分享ggplot图表的配色原理与基本技巧。 图表配色是一个很深奥的话题,多亏了R语言平台的众多开发者贡献的配色包,让图表的配色不再深不可测。 这里我暂...

5964
来自专栏Python中文社区

Python自然语言处理分析倚天屠龙记

最近在了解到,在机器学习中,自然语言处理是较大的一个分支。存在许多挑战。例如: 如何分词,识别实体关系,实体间关系,关系网络展示等。

2195
来自专栏窗户

古中国数学家的计算力真是惊人

  现代数学是建立在公理化的体系之上,可以认为是形而上学。公理化是数学的本质所在,古代中国人建立过数学的辉煌,但是却似乎并没有去思考数学的本质,而古希腊的《几何...

2147
来自专栏码神联盟

智能对话 | 使用 Java实现 智能对话机器人 -- 附源码

目前人工智能与深度学习顺应了互联网时代潮流,人机对话已经成为目前人工智能领域中非常热门的处理技术。其中基于深度学习的人机对话交换系统(智能机器人)是人工智能最有...

1.9K2
来自专栏后台全栈之路

《ArcGIS 地理信息系统教程》概念笔记

之前研究了 GIS,接触到了很多 GIS 的概念。因此找了《 ArcGIS 地理信息系统教程(第 4 版)》来看。书的版本比较老了,不过一些基本概念还是想通的,...

2736
来自专栏Data Analysis & Viz

乱炖“简书交友”数据之代码

上一篇文章乱炖数据之2700余篇“简书交友”专题文章数据的花式玩法发布后,不少人想学习下代码,由于此前不曾在GitHub上开源过,流程还不熟悉,再者本项目中很多...

801
来自专栏高性能服务器开发

一个Sqrt函数引发的血案

好吧,我承认我标题党了,不过既然你来了,就认真看下去吧,保证你有收获。 我们平时经常会有一些数据运算的操作,需要调用sqrt,exp,abs等函数,那么时候你...

3375
来自专栏AI科技大本营的专栏

计算机如何理解我们的语言?NLP is fun!

【导读】我们从日常每天都会用到的推荐系统到现在研究火热的开放性聊天、对话机器人,越来越多的产品与应用的背后都需要自然语言处理(NLP)和知识图谱的技术。也有越来...

963

扫码关注云+社区

领取腾讯云代金券