昨日有个中文词频统计的需求, 百度一番后, 发现一大堆标题党文章, 讲的与内容严重不符, 这里就简单记录下自己实现的流程吧!

与英文单词的词频统计不同, 中文的难点在于如何分词, 不过好在有许多优秀的现成库供调用,这里就使用了 ansj_seg 插件.

首先添加依赖:

下载jar

访问 http://maven.nlpcn.org/org/ansj/ 最好下载最新版 ansj_seg/

同时下载nlp-lang.jar 需要和ansj_seg 配套..配套关系可以看jar包中的maven依赖,一般最新的ansj配最新的nlp-lang不会有错。

导入到eclipse ,开始你的程序吧

maven

org.ansj

ansj_seg

5.1.1

基本用法为:

String str = "欢迎使用ansj_seg,(ansj中文分词)在这里如果你遇到什么问题都可以联系我.我一定尽我所能.帮助大家.ansj_seg更快,更准,更自由!" ;

System.out.println(ToAnalysis.parse(str));

欢迎/v,使用/v,ansj/en,_,seg/en,,,(,ansj/en,中文/nz,分词/n,),在/p,这里/r,如果/c,你/r,遇到/v,什么/r,问题/n,都/d,可以/v,联系/v,我/r,./m,我/r,一定/d,尽我所能/l,./m,帮助/v,大家/r,./m,ansj/en,_,seg/en,更快/d,,,更/d,准/a,,,更/d,自由/a,!

下面就贴上代码:

public static void wordFrequency() throws IOException {

Map map = new HashMap<>();

String article = getString();

String result = ToAnalysis.parse(article).toStringWithOutNature();

String[] words = result.split(",");

for(String word: words){

String str = word.trim();

// 过滤空白字符

if (str.equals(""))

continue;

// 过滤一些高频率的符号

else if(str.matches("[)|(|.|,|。|+|-|“|”|:|?|\\s]"))

continue;

// 此处过滤长度为1的str

else if (str.length() < 2)

continue;

if (!map.containsKey(word)){

map.put(word, 1);

} else {

int n = map.get(word);

map.put(word, ++n);

}

}

Iterator> iterator = map.entrySet().iterator();

while (iterator.hasNext()){

Map.Entry entry = iterator.next();

System.out.println(entry.getKey() + ": " + entry.getValue());

}

List> list = new ArrayList<>();

Map.Entry entry;

while ((entry = getMax(map)) != null){

list.add(entry);

}

System.out.println(Arrays.toString(list.toArray()));

}

/**

* 找出map中value最大的entry, 返回此entry, 并在map删除此entry

* @param map

* @return

*/

public static Map.Entry getMax(Map map){

if (map.size() == 0){

return null;

}

Map.Entry maxEntry = null;

boolean flag = false;

Iterator> iterator = map.entrySet().iterator();

while (iterator.hasNext()){

Map.Entry entry = iterator.next();

if (!flag){

maxEntry = entry;

flag = true;

}

if (entry.getValue() > maxEntry.getValue()){

maxEntry = entry;

}

}

map.remove(maxEntry.getKey());

return maxEntry;

}

/**

* 从文件中读取待分割的文章素材.

* 文件内容来自简书热门文章: https://www.jianshu.com/p/5b37403f6ba6

* @return

* @throws IOException

*/

public static String getString() throws IOException {

FileInputStream inputStream = new FileInputStream(new File("/home/as_/IdeaProjects/SpringMaven/article-txt"));

BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

StringBuilder strBuilder = new StringBuilder();

String line;

while((line = reader.readLine()) != null){

strBuilder.append(line);

}

reader.close();

inputStream.close();

return strBuilder.toString();

}

最后依旧附上图片:

作者:Asche

java 中文词频统计_Java实现中文词频统计相关推荐

  1. java判断字符长度_java判断中文字符串长度的简单实例

    话不多说,上代码: /** * 获取字符串的长度,如果有中文,则每个中文字符计为2位 * @param value 指定的字符串 * @return 字符串的长度 */ public static i ...

  2. java判断字符串长度_java判断中文字符串长度的简单实例

    /** * 获取字符串的长度,如果有中文,则每个中文字符计为2位 * @param value 指定的字符串 * @return 字符串的长度 */ public static int length( ...

  3. java 文本词频统计_Java实现中文词频统计

    昨日有个中文词频统计的需求, 百度一番后, 发现一大堆标题党文章, 讲的与内容严重不符, 这里就简单记录下自己实现的流程吧! 与英文单词的词频统计不同, 中文的难点在于如何分词, 不过好在有许多优秀的 ...

  4. java统计词频算法_Java实现的词频统计——功能改进

    本次改进是在原有功能需求及代码基础上额外做的修改,保证了原有的基础需求之外添加了新需求的功能. 功能: 1. 小文件输入--从控制台由用户输入到文件中,再对文件进行统计: 2.支持命令行输入英文作品的 ...

  5. java实验6 词频统计_Java实现的词频统计——单元测试

    前言:本次测试过程中发现了几个未知字符,这里将其转化为十六进制码对其加以区分. 1)保存统计结果的Result文件中显示如图: 2)将其复制到eclipse环境下的切分方法StringTokenize ...

  6. java 文本词频统计_java实现文本词频统计

    File f=new File(path); Mapmap=new HashMap<>(); Version matchVersion = Version.LUCENE_31; Analy ...

  7. java web乱码问题_Java Web中文乱码问题解决

    一.为什么会出现中文乱码问题: java内核和class文件是基于unicode码的,这使Java程序具有良好的跨平台性,但也导致在Java和JSP文件在编译时以及Java程序与其他媒介交互时等情况下 ...

  8. java 拼音首字母_java获取中文拼音首字母的实例

    导读热词 正文 如下所示: import net.sourceforge.pinyin4j.PinyinHelper; public class PinyinHelperUtil { /** * 得到 ...

  9. java 中文转成_Java将中文转换成unicode字符。

    在看Java国际化程序的实现.从最基础的建立不同国家的属性文件开始吧. 中文:你好! 英语:Hello! 法语:Bonjour! 在属性文件定义时必须按照"名称_国家代码"的形式命 ...

  10. java二进制转为汉字_Java 实现中文与二进制代码互转

    //将二进制字符串转化为中文 import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; im ...

最新文章

  1. lwip中dns相关函数gethostbyname()的原理
  2. eltree ref什么时候有_Vue3响应式系统源码解析-Ref篇
  3. 交互式图表_如何构建罗马数字转换器和交互式罗马数字图表
  4. 我父亲的新发明--玉米点播器
  5. [译]优秀的开发人员是培养出来的,不是招聘过来的
  6. 解决 IDEA导入Eclipse项目出现的中文注释乱码问题
  7. F - Substrings(一些函数的运用)
  8. 游戏开发--开源18---Volity|PhiloGL|impactJs|createjs|C...
  9. NAT(地址转换技术)详解
  10. “十三五”输电通道规模倍增 重点建设配电网
  11. 市面上比较好用的钣金展开软件都有哪些?
  12. VSCode全配置(c++、unity、html...等配置和好用设置,持续更新)
  13. stm32正常运行流程图_stm32学习笔记之问题总结
  14. Python计算Arduino声音方向范围和绘制声音位置二维概率分布热图
  15. VLAN的划分以及三层交换机理论,OMG,太详细了吧,看它!
  16. 百度首次发布3D地图 杨洋导航语音完整版上线
  17. Ubuntu桌面自动切换壁纸(不用写脚本和xml配置文件)
  18. linux设备和驱动匹配的方法,Linux使用设备树的i2c驱动与设备匹配方式
  19. Spring Cloud全家桶主要组件及简要介绍
  20. 银行开放api接口_开放标准API如何彻底改变银行业

热门文章

  1. 本地项目文件上传到码云的全过程(附每个步骤详细插图)
  2. 计算几何(基础部分)
  3. Twaver-HTML5基础学习(13)连线(Link)连线的绑定与展开
  4. 关于二进制转换为十六进制
  5. 安卓版Qinmei 追番必备神器 缓冲快
  6. android redis客户端,redis client (redis客户端)
  7. 求多项式的值之polyval 和polyvalm
  8. Python常用模块 之 datetime模块——处理时间和日期
  9. 网络工程师中级--下午科目
  10. win7计算机事件查看器,win7事件查看器是什么,事件查看器概述