Hanlp自然语言处理工具的使用演练

rd.get(0));

    }


 

3、短语提取

方法签名:List<String> extractPhrase(String txt, int phSum);

返回:短语

签名参数说明:txt:要提取短语的语句,phSum短语数量

范例:给出一段文字,能代表文章的五个短语,第一个短语是算法工程师。

程序清单3

 

public void testExtractPhrase() throws Exception

    {

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 = DKNLPBase.extractPhrase(text, 5);

        assertEquals(5, phraseList.size());

assertEquals("算法工程师", phraseList.get(0));

    }


4、自动摘要

方法签名:List extractSummary(String txt, int sSum);

返回:摘要语句

签名参数说明:txt:要提取摘要的语句,sSum摘要句子数量

范例:自动提取三句摘要句子。

程序清单4

 

public void testExtractSummary() throws Exception

    {

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

"算法可以宽泛的分为三类,\n" +

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

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

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

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

        assertEquals(3, sentenceList.size());

}


5、拼音转换

方法签名:List<Pinyin> convertToPinyinList(txt);

返回:拼音列表

签名参数说明:txt:要转换拼音的语句

范例:给出一段文字中第二个字的拼音。

程序清单5

 

public void testConvertToPinyinList() throws Exception

    {

String text = "鸭绿江的绿跟绿色的绿不是一个读音";

        List<Pinyin> pinyinList = DKNLPBase.convertToPinyinList(text);

        assertEquals(text.length(), pinyinList.size());

        assertEquals(Pinyin.lu4, pinyinList.get(1));

}


6、添加词库

方法签名:String addCK(String filePath);

返回:空—完成,其它—错误信息

签名参数说明:filePath:新的词库文件,每个词使用回车换行分隔。

范例:读取新词库文件,将文件内容中第7个词“新美“添加到词库。

程序清单6

 

public void testAddCK() throws Exception

    {

        DKNLPBase.addCK("src/test/resources/custom_dictionary.txt");

String text = "互联网家装质量问题频繁 新美大杀入胜算几何";

        List<Term> termList = DKNLPBase.segment(text);

assertEquals("新美", termList.get(6).word);

}


7、新词发现

方法签名:

NewWordDiscover discover = new NewWordDiscover(max_word_len, min_freq, min_entropy, min_aggregation, filter);

discover.discovery(text, size);

返回:空—完成,其它—错误信息

签名参数说明:max_word_len: 控制识别结果中最长的词语长度,默认值是 4;该值越大,运算量越大,结果中出现短语的数量也会越多。

min_freq: 控制结果中词语的最低频率,低于该频率的将会被过滤掉,减少一 些运算量。由于结果是按照频率排序的,所以该参数其实意义不大。实际上,在接口中直接设为了0,意思是所有候选词都会出来。

min_entropy: 控制结果中词语的最低信息熵(信息的不确定度)的值,一般取 0.5 左右。该值越 大,越短的词语就越容易被提取出来。

min_aggregation: 控制结果中词语的最低互信息值(字和字之间的关联性),一般取 50 到 200.该值 越大,越长的词语就越容易被提取出来,有时候会出现一些短语。

Filter: 设为 true 的时候将使用内部词库过滤掉“旧词”。

Text:用于新词发现的文档。

Size:新词个数。

范例:新词发现。

程序清7

 

public void testFindNewWord() {

NewWordDiscover discover = new NewWordDiscover(4, 0.0f, 0.5f, 100f, true);


//读取文件夹下所以文档并合并成一篇文档用于新词发现

StringBuilder sbText = new StringBuilder();

File[] txtFiles = new File("src/test/resources/搜狗文本分类语料库微型版/健康").listFiles();

        int i = 0;

        for (File file : txtFiles)

        {

System.out.printf("[%d / %d] 读取 %s 中...\n", ++i, txtFiles.length, file.getName());

            sbText.append(IOUtil.readTxt(file.getPath()));

            if (i == 100) break;

        }

System.out.printf("对长度为%d的语料进行分析中...\n", sbText.length());

        List<WordInfo> wordInfoList = discover.discovery(sbText.toString(), 10);

//打印出发现的新词

        for (WordInfo wordInfo : wordInfoList) {

         System.out.println(wordInfo.text);

}

}



文章来源于网络

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容

  • 难得出趟门,心情舒畅。坐在略显宽松的地铁里,打量着周遭的乘客。大部分都低头看着手机。坐在斜对面的一位中年女士,...
    姚姚菄阅读 146评论 0 0
  • 今天的旅程比较轻松,昨天晚上商量好,今天从芒康到如美县城。3km起伏路,10km爬坡,32km下坡到如美,听起来轻...
    无法鉴定的病人阅读 655评论 2 6
  • 1、把下列各数按从小到大的顺序排列。 10 6 3 20 15 ()<()<()<()<() 2、写一写,填...
    Naia阅读 359评论 0 0