java 汉语词频_Java实现中文词频统计

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

首先添加依赖:

下载jar

maven org.ansjansj_seg5.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(); }

最后依旧附上图片:

4a824fd845e5672f7f043ce549368838.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值