HanLP自然语言处理包初步安装与使用
HanLP是由一系列模型与算法组成的Java工具包,目标是促进自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。
HanLP能提供以下功能:关键词提取、短语提取、繁体转简体、简体转繁体、分词、词性标注、拼音转换、自动摘要、命名实体识别(地名、机构名等)、文本推荐等功能,详细请参见以下链接:http://www.hankcs.com/nlp/hanlp.html
HanLP下载地址:https://github.com/hankcs/HanLP/releases,HanLP项目主页:https://github.com/hankcs/HanLP
1、HanLP安装
hanlp是由jar包、properties文件和data数据模型组成,因此,在安装时,这三种文件都应该有。可以通过建立java工程即可运行。
hanlp.properties文件中描述了不同词典的相对路径以及root根目录,因此,可以在此文件中修改其路径。
hanlp-1.3.4.jar包中包含了各种算法及提取方法的api,大部分方法都是静态的,可以通过HanLP直接进行调用,因此,使用非常方便。
data文件夹中包含了dictionary和model文件夹,dictionary中主要是各种类型的词典,model主要是分析模型,hanlp api中的算法需要使用model中的数据模型。
2、HanLP的使用
普通java工程目录如下所示:
3、HanLP的具体使用
例如:对excel中的聊天记录字段进行热点词的提取,计算并排序,功能如下所示
package com.run.hanlp.demo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.log4j.Logger;
import com.hankcs.hanlp.HanLP;
import com.hankcs.hanlp.seg.common.Term;
import com.hankcs.hanlp.suggest.Suggester;
import com.hankcs.hanlp.summary.TextRankKeyword;
import com.hankcs.hanlp.tokenizer.NLPTokenizer;
import com.hankcs.hanlp.tokenizer.StandardTokenizer;
import com.run.util.ExcelUtil;
public class HanlpTest {
public static final Logger log = Logger.getLogger(HanlpTest.class);
public static void main(String[] args) {
log.info("关键词提取:");
HanlpTest.getWordAndFrequency();
}
/**
* 获取所有关键词和频率
*/
public static void getWordAndFrequency() {
// String content =
// "程序员(英文Programmer)是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、高级程序员、系统分析员和项目经理四大类。";
List> content = ExcelUtil.readExcelByField("i:/rundata/excelinput",5000,5);
Map allKeyWords=new HashMap<>();
for(int i=0;i Map oneMap=content.get(i);
for(String str:oneMap.keySet()){
int count = oneMap.get(str);
CombinerKeyNum(str,count,allKeyWords);
}
}
List> sortedMap=sortMapByValue(allKeyWords);
log.info(sortedMap);
}
/**
*
* @param allKeyWords 需要进行排序的map
* @return 返回排序后的list
*/
public static List> sortMapByValue(Map allKeyWords){
List> sortList=new ArrayList<>(allKeyWords.entrySet());
Collections.sort(sortList, new Comparator>() {
public int compare(Map.Entry o1, Map.Entry o2) {
return (o2.getValue() - o1.getValue());
}
});
return sortList;
}
/**
*
* @param key 关键词变量
* @param value 关键词词频变量
* @param allKeyWords 存放关键词和词频的map
*/
public static void CombinerKeyNum(String key,int value,Map allKeyWords){
if(allKeyWords.containsKey(key)){
int count=allKeyWords.get(key);
count+=value;
allKeyWords.put(key, count);
}else{
allKeyWords.put(key, value);
}
}
/**
*
* @param content 需要提取关键词的字符串变量
* @return 返回关键词以及关键词词频数的map
*
*/
public static HashMap getKeyWordMap(String content) {
List list = StandardTokenizer.SEGMENT.seg(content);
TextRankKeyword textmap = new TextRankKeyword();
Map map = textmap.getTermAndRank(content);
Map mapCount = new HashMap<>();
for (String str : map.keySet()) {
String keyStr = str;
int count = 0;
for (int i = 0; i < list.size(); i++) {
if (keyStr.equals(list.get(i).word)) {
count++;
}
}
mapCount.put(keyStr, Integer.valueOf(count));
}
// log.info(mapCount);
return (HashMap) mapCount;
}
}
运行之后,结果如下:
由此可见,可以看见从excel中提取出来的热点词汇及其频率。
文章来源于计算机之wind的博客
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
新华智云,新闻即数据,数据即新闻
新华智云媒体大脑案例报告 一、背景 说起新华社,大家脑海中首先想到的是中国的国家通讯社,法定的新闻监管机构,同时也是世界级的现代通讯社(在世界各地拥有一百多个分社)。 没错,新华社是中文媒体的主要新闻来源之一,既有传统的文字新闻,也有图片图表新闻、音视频新闻和网络新闻。同时,新华社正在建设全媒体集团,拥有各种新闻发布形式和媒体工具,包括传统通讯社业务、报刊业务、网络业务、经济信息服务、数据库和搜索服务、手机和网络及大屏幕等新媒体等综合性架构。 此外新华社作为中国共产党领导下最早成立的新闻机构(1931年成立),在媒体融合以及新媒体的探索道路中其实也极具创新和开拓意识。其中就包括与互联网的亲密接触----新华智云----2017年6月12日,新华智云正式成立,它是新华社和阿里巴巴的合资公司,它既是互联网技术和行业的合作典范,也是技术赋能媒体
- 下一篇
Hanlp使用Bug记录
最近一直比较忙,好多私信也没时间回复。以后要完全从CV转NLP,所以博客内容可能要作调整了。 Hanlp是最近学习的一个自然语言处理包,本篇文章将一些使用过程之中遇到的bug放到这里做一个备忘记录,有时间一并联系作者更改。 -Predefine类的好多预定义tag没有在核心词典中。 这个造成的问题就是函数 /** * 获取词语的ID * @param a 词语 * @return ID,如果不存在,则返回-1 */ public static int getWordID(String a) { return CoreDictionary.trie.exactMatchSearch(a); } 没有在核心词典中,搜索不到,返回-1,造成后面IndexOutOfBoundException. 文章来源于lansatiankong的博客
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)