HanLP是由一系列模型与算法组成的Java工具包,目标是促进自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。
HanLP提供下列功能:
中文分词(最短路分词、N-最短路分词等)
命名实体识别(中国人名识别、地名识别、实体机构名识别等)
关键词提取
自动摘要
短语提取
拼音转换
简繁转换
文本推荐
引入jar包:
<dependency> <groupId>com.hankcs</groupId> <artifactId>hanlp</artifactId> <version>portable-1.6.8</version> </dependency>
使用范例:
//分词 private static void test1(){ List<Term> stermList = HanLP.segment("商品和服务"); print(stermList); } //繁体分词 private static void test2(){ List<Term> stermList = TraditionalChineseTokenizer.segment("大衛貝克漢不僅僅是一名著名球員"); print(stermList); } //N最短路分词器 NShortSegment 比最短路分词器( DijkstraSegment )慢,但是效果稍微好一些,对命名实体识别能力更强 private static void test3(){ Segment nShortSegment = new NShortSegment().enableCustomDictionary(false).enablePlaceRecognize(true).enableOrganizationRecognize(true); Segment shortestSegment = new ViterbiSegment().enableCustomDictionary(false).enablePlaceRecognize(true).enableOrganizationRecognize(true); String sentence = "刘喜杰石国祥会见吴亚琴先进事迹报告团成员"; print(nShortSegment.seg(sentence)); print(shortestSegment.seg(sentence)); } //中国人名识别 private static void test4(){ Segment segment = HanLP.newSegment().enableNameRecognize(true); List<Term> stermList = segment.seg("签约仪式前,秦光荣、李纪恒、仇和等一同会见了参加签约的企业家。"); print(stermList); } //地名识别 private static void test5(){ Segment segment = HanLP.newSegment().enablePlaceRecognize(true); List<Term> stermList = segment.seg("武胜县新学乡政府大楼门前锣鼓喧天"); print(stermList); } //机构名识别 private static void test6(){ Segment segment = HanLP.newSegment().enableOrganizationRecognize(true); List<Term> stermList = segment.seg("我在上海林原科技有限公司工作"); print(stermList); } //关键词提取 private static void test7(){ String content = "程序员(英文Programmer)是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、高级程序员、系统分析员和项目经理四大类。"; content += "原告诉称,原告从土地改革时,就依法取得了岿美山镇寨头村排下组荷树岭山场,1985年仍依法取得荷树岭山场所有权,一直归原告管理,没有发生任何争执。2006年原告再次依法取得该山场。2009年初第三人突然提出该山场归其所有,与原告发生争执。原告申请被告调处,被告在没有任何事实和法律依据的情况下,以寨头村排下组三分之二村民同意争议山场归第三人为由,在第三人没有提供任何证据的情况下,将争议山场确定给第三人所有是明显袒护第三人。为此,请求法院:1.撤销岿府发[2009]46号信访事项办理意见书;2.依法确认岿美山镇寨头村排下组荷树岭山场归原告所有。"; System.out.println(HanLP.extractKeyword(content, 5)); //返回个数 } //自动摘要 private static void test8(){ String document = "算法可大致分为基本算法、数据结构的算法、数论算法、计算几何的算法、图的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法、厄米变形模型、随机森林算法。\n" + "算法可以宽泛的分为三类,\n" + "一,有限的确定性算法,这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。\n" + "二,有限的非确定算法,这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是唯一的或确定的。\n" + "三,无限的算法,是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。"; System.out.println(HanLP.extractSummary(document, 3)); } //短语提取 private static void test9(){ String text1 = "算法工程师\n" + "算法(Algorithm)是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。算法工程师就是利用算法处理事物的人。\n" + "算法工程师逐渐往人工智能方向发展。"; System.out.println(HanLP.extractPhrase(text1, 5)); } //汉字转拼音 private static void test10(){ String text = "好好学习,天天向上!"; List<Pinyin> pinyinList = HanLP.convertToPinyinList(text); //拼音(数字音调) for (Pinyin pinyin : pinyinList) { System.out.printf("%s,", pinyin); } System.out.println(); //拼音(符号音调) for (Pinyin pinyin : pinyinList) { System.out.printf("%s,", pinyin.getPinyinWithToneMark()); } System.out.println(); //拼音(无音调) for (Pinyin pinyin : pinyinList) { System.out.printf("%s,", pinyin.getPinyinWithoutTone()); } System.out.println(); //声调 for (Pinyin pinyin : pinyinList) { System.out.printf("%s,", pinyin.getTone()); } System.out.println(); //声母 for (Pinyin pinyin : pinyinList) { System.out.printf("%s,", pinyin.getShengmu()); } System.out.println(); //韵母 for (Pinyin pinyin : pinyinList) { System.out.printf("%s,", pinyin.getYunmu()); } } //简繁转换 private static void test11(){ System.out.println(HanLP.convertToTraditionalChinese("用笔记本电脑写程序")); System.out.println(HanLP.convertToSimplifiedChinese("「以後等妳當上皇后,就能買士多啤梨慶祝了」")); } //文本推荐 private static void test12(){ Suggester suggester = new Suggester(); String text = "威廉王子发表演说 呼吁保护野生动物,《时代》年度人物最终入围名单出炉 普京马云入选,“黑格比”横扫菲:菲吸取“海燕”经验及早疏散,日本保密法将正式生效 日媒指其损害国民知情权,英报告说空气污染带来“公共健康危机,明天我要拿刀砍死这个王八"; String[] arr = text.split("[。?!,;]"); for(String s : arr){ suggester.addSentence(s); System.out.println(s); } System.out.println(suggester.suggest("发言", 1)); //语义 System.out.println(suggester.suggest("危机公共", 1)); //字符 System.out.println(suggester.suggest("mayun", 1)); //拼音 System.out.println(suggester.suggest("扬言", 1)); //扬言 }
相关推荐
基于HanLP自然语言处理包的elasticsearch分词器 功能 本分词器使用HanLP提供的维特比分词 屏蔽了本地配置用户词典 增加同义词索引功能 增加远程词典热更新(用户词典,停词典,同义词典) 使用 目前支持的es版本为...
《深入探索HanLP自然语言处理》 在信息技术日益发展的今天,自然语言处理(Natural Language Processing,简称NLP)已经成为人工智能领域的重要组成部分。HanLP,全称为“哈工大讯飞自然语言处理工具包”,是由一...
在本项目中,我们主要探讨的是如何利用HanLP自然语言处理包来构建一个自定义的Elasticsearch分词器。Elasticsearch是一个流行的开源搜索引擎,它广泛应用于大数据分析和信息检索。自然语言处理(NLP)是人工智能的一...
HanLP是一个优秀的自然语言处理工具,特别适合于中文语言的处理。在自然语言处理领域,分词是其中的一个核心问题。Elasticsearch是一个高性能的全文搜索引擎,广泛应用于各种搜索服务中。它的核心功能在于对文档进行...
HanLP自然语言处理工具是一个为中文文本设计的自然语言处理库,它支持多种自然语言处理功能,并且在Python和Java平台上有着广泛的使用。HanLP采用了先进的算法,能够高效地处理中文文本信息,进行分词、词性标注、...
本项目是一个结合了Python和Java语言的多语言HanLP自然语言处理系统的设计源码,它旨在为处理自然语言提供一个高效、多语言支持的平台。项目共有658个文件,这些文件构成了系统的核心架构和功能实现,其中包含了大量...
HanLP自然语言处理设计源码项目结合了Python和Java两种编程语言,利用了各自语言的优势,实现了强大的自然语言处理功能。项目结构包含丰富多样的文件类型,反映了其功能的多样性和复杂性。 项目中的Python脚本是...
本项目“基于Python和Java的hanLP自然语言处理设计源码”,正是以hanLP为处理核心,采用当前广受欢迎的编程语言Python和Java进行开发。其中,Python因其简洁的语法和强大的库支持,被广泛应用于数据处理和人工智能...
Python语言的简洁性和强大的库支持,使得HanLP的使用门槛相对较低,极大地促进了自然语言处理技术在中文领域的应用与发展。开发者可以便捷地使用HanLP进行中文文本处理的研究与开发,推动中文自然语言处理技术的进步...
HanLP是Han Language Processor的缩写,是一款高效的、开源的自然语言处理工具包。它支持Java、Python等多种编程语言,并且专注于中文自然语言处理领域。HanLP以其高效、易用、灵活等特点,在学术界和工业界均有着...
汉语文本处理库HanLP是Java开发的一个高效、易用的自然语言处理工具包,主要用于中文分词、词性标注、命名实体识别、依存句法分析、语义角色标注等任务。标题“hanlp1.7jar包下载”表明我们要讨论的是HanLP的1.7版本...
在本项目"hanlp-python_spiderpbl_ch11/11.5.py_自然语言处理入门_"中,我们将探讨使用Python进行NLP的实践应用。 `11.5.py`可能是一个章节练习或示例代码,对应何晗先生的书籍关于自然语言处理的部分。这个Python...
系统支持的自然语言处理任务异常丰富,包括但不限于中文分词、词性标注、命名实体识别、句法分析、语义分析、文本摘要、分类聚类和拼音转换等。中文分词是处理中文文本的基础,通过将连续的文本切分为有意义的词序列...
HanLP是一款由北京大学计算机科学技术研究所开发的开源自然语言处理库,专为Java平台设计。...通过学习和使用HanLP,开发者可以深入理解和掌握自然语言处理技术,提升其在人工智能领域的专业能力。
**Python-自然语言处理工具包HanLP的Python接口** 在Python的世界里,自然语言处理(NLP)是一项关键任务,涉及文本分析、语义理解、情感分析等多个领域。HanLP,由厦门汉云科技有限公司开发,是一款高效、易用的...
HanLP,作为一款由Java编写的高效自然语言处理工具包,为Android开发者提供了丰富的NLP模型和算法,使其能够在移动设备上轻松实现复杂文本处理任务。 HanLP的主要特点: 1. 功能完善:HanLP涵盖了词性标注、分词、...
总之,`HanLP`是一个强大的自然语言处理工具,通过提供的jar包,开发者可以在Java环境中轻松集成和利用其丰富的功能。而`HanLP`的Solr插件则进一步增强了Solr的中文处理能力,使得搜索引擎能够更好地理解和处理中文...
hanlp上相关代码文件面向生产环境的多语种自然语言处理工具包,基于 TensorFlow 2.x,目标是普及落地最前沿的NLP技术。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。目前,基于深度学习的...