赞
踩
本小白打算开始搞知识图谱惹,今天第一步打算干掉hanlp,MARK一下步骤怕以后忘了
以下代码块中是此刻的依赖写法,最新的依赖写法可以从hanlp的GitHub的README文件里直接复制:
https://github.com/hankcs/HanLP/tree/1.x
<!-- hanlp-->
<dependency>
<groupId>com.hankcs</groupId>
<artifactId>hanlp</artifactId>
<version>portable-1.7.7</version>
</dependency>
root=G:/hanlp/data-for-1.7.5
System.out.println(HanLP.segment("你好,欢迎使用HanLP汉语处理包!"));
输出:
[你好/l, ,/w, 欢迎/v, 使用/v, HanLP/nx, 汉语/nz, 处理/v, 包/v, !/w]
List<Term> termList = NLPTokenizer.segment("狭义的知识组织是指文献的分类、标引、编目、文摘、索引等一系列整序;广义的知识组织是针对知识的两要素进行的,是知识因子(结点)的有序化和知识关联(结点间的关系)的网络化。");
System.out.println(termList);
输出:
[狭义/b, 的/u, 知识/n, 组织/n, 是/v, 指/v, 文献/n, 的/u, 分类/vn, 、/w, 标引/gm, 、/w, 编目/v, 、/w, 文摘/n, 、/w, 索引/n, 等/u, 一系列/m, 整序/n, ;/w, 广义/n, 的/u, 知识/n, 组织/n, 是/v, 针对/p, 知识/n, 的/u, 两/m, 要素/n, 进行/v, 的/u, ,/w, 是/v, 知识/n, 因子/n, (/w, 结点/n, )/w, 的/u, 有序/a, 化/vn, 和/c, 知识/n, 关联/vn, (/w, 结点/n, 间/f, 的/u, 关系/n, )/w, 的/u, 网络化/vn, 。/w]
统计词频部分参考这位前辈写的
@Test void testFrequency() { //0.准备语料 String content = " 盼望着,盼望着,东风来了,春天的脚步近了。\n" + " 一切都像刚睡醒的样子,欣欣然张开了眼。山朗润起来了,水涨起来了,太阳的脸红起来了。\n" + " 小草偷偷地从土里钻出来,嫩嫩的,绿绿的。园子里,田野里,瞧去,一大片一大片满是的。坐着,躺着,打两个滚,踢几脚球,赛几趟跑,捉几回迷藏。风轻悄悄的,草软绵绵的。\n" + " 桃树、杏树、梨树,你不让我,我不让你,都开满了花赶趟儿。红的像火,粉的像霞,白的像雪。花里带着甜味儿,闭了眼,树上仿佛已经满是桃儿、杏儿、梨儿。花下成千成百的蜜蜂嗡嗡地闹着,大小的蝴蝶飞来飞去。野花遍地是:杂样儿,有名字的,没名字的,散在花丛里,像眼睛,像星星,还眨呀眨的。\n" + " “吹面不寒杨柳风”,不错的,像母亲的手抚摸着你。风里带来些新翻的泥土的气息,混着青草味儿,还有各种花的香,都在微微润湿的空气里酝酿。鸟儿将巢安在繁花嫩叶当中,高兴起来了,呼朋引伴地卖弄清脆的喉咙,唱出宛转的曲子,跟轻风流水应和着。牛背上牧童的短笛,这时候也成天在嘹亮地响着。\n" + " 雨是最寻常的,一下就是三两天。可别恼。看,像牛毛,像花针,像细丝,密密地斜织着,人家屋顶上全笼着一层薄烟。树叶儿却绿得发亮,小草也青得逼你的眼。傍晚时候,上灯了,一点点黄晕的光,烘托出一片这安静而和平的夜。在乡下,小路上,石桥边,有撑起伞慢慢走着的人;还有地里工作的农民,披着蓑戴着笠。他们的草屋,稀稀疏疏的,在雨里静默着。\n" + " 天上风筝渐渐多了,地上孩子也多了。城里乡下,家家户户,老老小小,也赶趟儿似的,一个个都出来了。舒活舒活筋骨,抖擞抖擞精神,各做各的一份儿事去,“一年之计在于春”;刚起头儿,有的是工夫,有的是希望。\n" + " 春天像刚落地的娃娃,从头到脚都是新的,它生长着。\n" + " 春天像小姑娘,花枝招展的,笑着,走着。\n" + " 春天像健壮的青年,有铁一般的胳膊和腰脚,他领着我们上前去。"//————材料自朱自清《春》 ; //1.这里用了Hanlp的标准分词(可以不需要data) List<Term> termList = StandardTokenizer.segment(content); //2.统计词频,并存入哈希表 HashMap<String, Integer> pplHashMap = new HashMap<String, Integer>();//用HashMap存词频数据 for (Term term : termList) { if (term.nature.startsWith('m')) continue; // 数词过滤 if (term.nature.startsWith('q')) continue; // 量词过滤 if (term.nature.startsWith('t')) continue; // 时间词过滤 if (term.nature.startsWith("w")) continue; // 标点符号过滤 if (CoreStopWordDictionary.contains(term.word)) continue; // 停用词过滤 if (!pplHashMap.containsKey(termSplit[0])) { pplHashMap.put(termSplit[0], 1); } else { int tmp_count = pplHashMap.get(termSplit[0]); pplHashMap.put(termSplit[0], tmp_count + 1); } } //3.还想根据词频高低排个序,所以转化为List处理 List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(pplHashMap.entrySet()); //转换为list list.sort(new Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { return o2.getValue().compareTo(o1.getValue()); } }); //4.输出前5个 for (int i=0;i<5;i++){ System.out.println(list.get(i).getKey()+": "+list.get(i).getValue()); } }
输出:
里: 7
起来: 4
花: 3
眼: 3
名字: 2
Hanlp还有好多功能,刚开始就先试到这儿了,接下来打算学学neo4j~~
但愿能坚持到最后一步~~
参考资料:
https://github.com/hankcs/HanLP/tree/1.x
https://blog.csdn.net/qiuyushuofeng/article/details/80991960
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。