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

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

首先添加依赖:

下载jar

访问  最好下载最新版 ansj_seg/

同时下载 需要和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();

}

最后依旧附上图片:

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

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

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

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

  2. java文本框输出_Java语言之文本框和文本区的输入输出

    Java编程的知识点很多,在上一节中我们谈到了Java文本区和文本框方面的知识点,但这部分内容还完结,下面就让我们一起来看看Java文本框和文本区的输入输出吧,看看如何学习才能快速提升技能,掌握重点. ...

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

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

  4. python统计txt文件中文词频_Python 中文文件统计词频 + 中文词云

    1. 词频统计: 1 importjieba2 txt = open("threekingdoms3.txt", "r", encoding='utf-8'). ...

  5. java map 元素个数_Java 小模块之--统计字符串中元素个数

    Java 小模块之--统计字符串中元素个数 曾经看过我Stream或者Guava类库等文章的小伙伴应该很明白我这篇博文的意义所在了 一是给读者提供综合的博文入口 二是自己也总结一下思路 ps: 之前没 ...

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

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

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

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

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

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

  9. java文本框输出_java实现文本框和文本区的输入输出

    在GUI中,常用文本框和文本区实现数据的输入和输出.如果采用文本区输入,通常另设一个数据输入完成按钮.当数据输入结束时,点击这个按钮.事件处理程序利用getText()方法从文本区中读取字符串信息.对 ...

最新文章

  1. Halcon 彩色图片通道分割处理
  2. 计算机应用基础模拟试题一,计算机应用基础模拟试题1
  3. 图像金字塔(pyramid)与 SIFT 图像特征提取(feature extractor)
  4. mysql去除select换行符_MySQL中去除字段中的回车符和换行符
  5. Python 值传递与地址传递总结
  6. java动态规划算阶乘_动态规划算法
  7. C51_按键按下,流水灯亮起,数码管显示按下的次数
  8. JAVA程序设计----练习题
  9. nginx和tomcat之间的简单配置
  10. 欢迎使用CSDN-markdown编辑器test
  11. JavaScript之正方教务系统自动化教评[插件-转载]
  12. jeecg自定义datagrid封装列表分页数据显示自定义字段
  13. 终极神器盘点的FreeEIM
  14. 位置问题_改变铸件浇注入水位置,能解决哪些问题?
  15. 【操作系统】多道程序的理解
  16. Java基础学习总结(154)——Synchronized与Volatile、Synchronized与ReentrantLock概念及区别
  17. 贝叶斯数据分析_Python数据分析 · 朴素贝叶斯详解
  18. vue中的组件 (全局注册和本地注册组件)
  19. 前端传递数组给后端,多个相同key,对应不同值
  20. windows驱动签名

热门文章

  1. Python程序打包成.exe文件(弹窗恶搞小程序附源码)
  2. CSDN博客利用HTML标签制作美观表格
  3. Gstreamer之video转码(七)
  4. 在Android关机中插入脚本
  5. android 电池(三):android电池系统
  6. mqtt之C++编译
  7. LDE显示驱动(四):显示驱动内核底层代码分析
  8. Win7的常用快捷键以及设置
  9. 控制台接收信息转发_微信语音信息无法转发?原来这才是正确的转发姿势,看完涨知识了...
  10. java不同项目加token访问_利用JWT实现前后端分离的Token验证