`
raymond.chen
  • 浏览: 1418667 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

HanLP自然语言处理包的使用

    博客分类:
  • Java
 
阅读更多

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-tokenizer-master

    基于HanLP自然语言处理包的elasticsearch分词器 功能 本分词器使用HanLP提供的维特比分词 屏蔽了本地配置用户词典 增加同义词索引功能 增加远程词典热更新(用户词典,停词典,同义词典) 使用 目前支持的es版本为...

    基于HanLP自然语言处理包的elasticsearch分词器.zip

    基于HanLP自然语言处理包的elasticsearch分词器.zip 大学生课程设计 基于elasticsearch的课程设计 自己大二写的课程设计

    HanLP自然语言处理

    HanLP是由一系列模型与算法组成的Java工具包,目标是普及自然语言处理在生产环境中的应用。 HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点

    自然语言处理入门代码

    hanlp上相关代码文件面向生产环境的多语种自然语言处理工具包,基于 TensorFlow 2.x,目标是普及落地最前沿的NLP技术。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。目前,基于深度学习的...

    Android-HanLP是由一系列用于自然语言处理模型与算法组成的Java工具包

    HanLP是由一系列用于自然语言处理模型与算法组成的Java工具包,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。

    Python-自然语言处理工具包HanLP的Python接口

    HanLP的Python接口,支持自动下载与升级HanLP,兼容py2、py3。

    HanLP:汉语语言处理-源码

    HanLP是一系列模型与算法组成的NLP工具包,由大快搜索主导并完全开源,目标是普及自然语言处理在生产环境中的应用.HanLP具备功能完善,性能高效,架构清晰,语料时新,可自定义的特点。 HanLP提供下列功能: 中文...

    HanLP-1.7.5.zip

    HanLP-1.7.5.zip

    自然语言处理,推荐系统答辩PPT.pptx

    基于TF-IDF算法,结合simhash算法,中文分词等一些技术要点概述。应用了开源hanlp中文处理包

    汉语言处理包

    HanLP是由一系列模型与算法组成的Java工具包,目标是普及自然语言处理在生产环境中的应用。不仅仅是分词,而是提供词法分析、句法分析、语义理解等完备的功能。HanLP具备功能完善、性能高效、架构清晰、语料时新、可...

    HanLP相关setup文件

    HanLP是一款自然语言处理工具包,由东南大学自然语言处理与社会人文计算实验室研发。它支持中文分词、词性标注、命名实体识别、依存句法分析、关键词提取、自动摘要、短语提取、拼音转换等多种任务。 HanLP的特点...

    Hanlp最新版本V1.7.2(含hanlp-1.7.2.jar、模型data包、配置文件hanlp.properties)

    最新的hanlp的jar包,模型data包、配置文件hanlp.properties

    典型相关分析matlab实现代码-HanLP:汉语言处理包

    HanLP是一系列模型与算法组成的NLP工具包,由大快搜索主导并完全开源,目标是普及自然语言处理在生产环境中的应用。 HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。 HanLP提供下列功能: 中文...

    HanLP中文分词所需内容_2.zip

    HanLP是由一系列模型与算法组成的Java工具包,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。 在提供丰富功能的同时,HanLP内部模块坚持低耦合、...

    hanlp_data-for-1.7.4.txt

    hanlp自然语言处理模型data包最新版本(data-for-1.7.4) txt内有百度云下载链接

    Android代码-Java 实现的自然语言处理中文分词

    HanLP是一系列模型与算法组成的NLP工具包,由大快搜索主导并完全开源,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。 HanLP提供下列功能: 中文...

    全文检索自然语言分词elasticsearch8.X对接HanLP的扩展和方法的编译好的包

    全文检索自然语言分词elasticsearch8.X对接HanLP的扩展和方法的编译好的包

    hanlp-1.7.4-release.zip

    中文语言处理工具包; HanLP是由一系列模型与算法组成的Java工具包,目标是促进自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。

    Java中通过HanLP实现文本分词、提取关键词、聚类(工具资源+实例)

    HanLP是由一系列模型与算法组成的工具包,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点;提供词法分析(中文分词、词性标注、命名实体识别)、句法...

    自然语言处理之AI深度学习实战视频教程

    本课程将首先介绍自然语言处理的发展现状与挑战,同时,讲解深度学习和自然语言处理的结合应用。除了基本算法外,本课程还配备实践环节,从一些典型的方向:机器翻译、文本分类、问答等。最后,将和大家讨论NLP的...

Global site tag (gtag.js) - Google Analytics