`

Hanlp在java中文分词中的使用介绍

阅读更多

 

项目结构



 

 

该项目中,.jardata文件夹和.properties需要从官网/github下载,data文件夹下载

项目配置

修改hanlp.properties:

 

   1 #/Test/src/hanlp.properties:

   2 #本配置文件中的路径的根目录

   3 #root=E:/SourceCode/eclipsePlace/Test

   4 root=./

   5 ......

 

配置文件的作用是告诉HanLP数据包即data文件夹的位置,root的值为data文件夹的父目录,可以使用绝对路径或相对路径。

测试代码

1 package com.test;

2

3 import java.util.List;

4

5 import com.hankcs.hanlp.HanLP;

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

7 import com.hankcs.hanlp.suggest.Suggester;

8 import com.hankcs.hanlp.tokenizer.NLPTokenizer;

9

10 public class MainTest {

11    public static void main(String[] args) {

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

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

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

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

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

17

18        List<Term> termList = NLPTokenizer.segment("中国科学院计算技术研究所的宗成庆教授正在教授自然语言处理课程");

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

20        System.out.println(termList);

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

22

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

24        getSegement();

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

26

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

28        getMainIdea();

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

30

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

32      getZhaiYao();

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

34

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

36        getDuanYu();

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

38    }

39

40    /**

41      * 智能推荐部分

42     */

43    public static void getSegement() {

44        Suggester suggester = new Suggester();

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

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

 47       for (String title : titleArray) {

 48          suggester.addSentence(title);

 49       }

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

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

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

 53   }

54

 55   /**

 56    * 关键字提取

 57    */

 58   public static void getMainIdea() {

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

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

 62       System.out.println(keywordList);

 63   }

64

 65  /**

 66    * 自动摘要

 67    */

 68   public static void getZhaiYao() {

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

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

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

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

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

 74       System.out.println(sentenceList);

 75   }

 76

 77   /**

 78    * 短语提取

 79    */

 80   public static void getDuanYu() {

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

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

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

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

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

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

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

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

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

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

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

    92    System.out.println(phraseList);

    93 }

94 }

运行结果



 

 

转载 lsh呵呵  https://blog.csdn.net/nima1994/article/details/72819973

  • 大小: 41.8 KB
  • 大小: 28.4 KB
分享到:
评论

相关推荐

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

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

    基于hanlp的elasticsearch分词插件

    总的来说,"基于hanlp的elasticsearch分词插件"是提升Elasticsearch处理中文文本能力的有效解决方案,它结合了HanLP的强大功能,使得在Java开发环境中,可以更方便地进行中文全文检索和分析。对于需要处理大量中文...

    Hanlp分词实现从网络片段中提取省份和城市

    在这个场景中,我们关注的是如何利用Java语言和HanLP分词库来实现从网络片段中抽取省份和城市这一特定需求。HanLP是由科大讯飞开发的一款高性能的自然语言处理工具包,它提供了丰富的中文分词、词性标注、命名实体...

    读书笔记2之中文分词流程HanLP

    例如,HanLP因其高效、准确和灵活的特点,在Java中被广泛使用,其源代码可以在GitHub上查看和学习。 总的来说,中文分词是一个复杂的过程,涉及多种算法和技术,而HanLP作为一款强大的工具,为中文文本处理提供了...

    中文地址分词及匹配项目

    标题中的“中文地址分词及匹配项目”是一个专注于处理中文地址的系统,它涉及到两个主要技术:中文地址的分词和地址匹配。分词是将连续的文本序列切分成具有独立意义的词语,而在中文环境下,由于没有明显的空格作为...

    中文分词java实现

    在Java中,常见的中文分词工具有HanLP、jieba分词、IK Analyzer、LTP(语言技术平台)等。这些工具通常提供API接口,开发者可以通过调用相关方法完成分词任务。例如,jieba分词库在Java中的使用,可以先将其导入项目...

    Java中文分词生成词云GUI

    Java中常见的中文分词工具有HanLP、IK Analyzer、jieba分词等。这些工具通常提供了丰富的API,可以方便地集成到Java项目中,对输入的中文文本进行高效准确的分词。 接着,项目提到了“协同过滤算法”。这是一种推荐...

    java 中文分词插件

    Java中有许多著名的中文分词库,如HanLP、IK Analyzer、jieba分词、LTP(语言技术平台)等。这些库提供了API接口,使得开发者可以轻松集成到自己的项目中,实现高效准确的中文分词。 3. **raycool.plugin.ds.cws...

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

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

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

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

    Java中文分词

    当我们谈论“Java中文分词”时,我们关注的是如何在Java环境中处理中文文本,将其拆分成有意义的词语,这是自然语言处理(NLP)的一个基本步骤。在Java中,由于中文字符的复杂性,分词比处理英文文本更具挑战性,...

    src_seg(java).rar_java 分词_中文文本分词_分词 java_分词算法

    《Java实现中文文本分词算法详解》 在信息爆炸的时代,中文文本的处理与分析显得尤为重要,其中分词是基础且关键的一环。...掌握这些技术和工具,能帮助开发者在各种应用场景中有效处理中文文本,提升系统的智能水平。

    基于 Java 的中文分词器分词效果评估对比项目

    基于 Java 的中文分词器分词效果评估对比项目。它主要实现了以下功能: 分词效果评估:用户可以通过程序对比不同分词器的分词结果,以及计算分词速度、行数完美率、行数错误率、字数完美率、字数错误率等指标。 ...

    alice 加入ik分词,中文空格分词,hanlp 语义分词

    通过上述介绍可以看出,Alice智能应答系统不仅集成了先进的中文分词技术,如HanLP,而且还支持丰富的配置选项,如自定义接口、外部接口调用和数据库操作等,这些特性共同提升了系统的灵活性和智能化水平。...

    一个不错的中文分词java程序

    用户在使用这个Java分词程序时,需要确保这些依赖项正确地被包含在运行环境中。 结合标签“分词,java”,我们可以进一步展开讨论以下知识点: 1. **中文分词原理**:分词的基本方法有正向最大匹配法、逆向最大...

    IKAnalyzer中文分词器 java

    和jieba分词、HanLP等其他流行的中文分词器相比,IKAnalyzer在Java环境下具有较高的性能和稳定性,但可能在灵活性和新词识别上略逊一筹。选择哪种分词器应根据项目需求和所用技术栈来决定。 总之,IKAnalyzer是一...

    java中文分词实现12

    在Java中,我们可以使用开源的分词库如HanLP、IK Analyzer、jieba分词等,但这里我们主要讨论自定义实现的方式,即通过正向最大匹配法。 正向最大匹配法是一种经典的分词策略,它的基本思想是从待分词的字符串的...

    fenci_java_分词_

    2. **分词**:利用Java分词库进行分词。例如,使用结巴分词的Java版本,可以创建分词器对象,对文件内容进行分词操作,得到一个词汇列表。 3. **中文与英文识别**:在分词结果中,区分中文字符和英文字符。可以利用...

    java中文分词

    在Java项目中使用Lucene进行中文分词,首先需要将相关的jar包引入到项目中。这些jar包通常包含了Lucene的核心库以及所选用的分词器库。在提供的"java中文分词lucence所需要的jar包"中,可能包含了如lucene-core、...

    lucene.NET 中文分词

    在Lucene.NET中,为了支持中文分词,通常需要结合第三方分词器,如IK Analyzer、HanLP、jieba.NET等。这些分词器具备丰富的词汇库和优秀的分词算法,能有效地对中文文本进行拆分。 - **IK Analyzer**:是一个开源的...

Global site tag (gtag.js) - Google Analytics