词频统计(文本格式)

1、原始文本示例:

2、原始文本读入arraylist

[10, 月, 6, 日电, 据, 英国, 《, 华商报, 》, 报道, ,, 记者, 从, 伦敦, 警察局, 获悉, 一名, 中国, 大陆, 留学生, 近日, 因在, 电影院, 偷拍, 电影, 首映, 被, 警察, 逮捕, 后经, 确认, 他, 的, 留学签证, 已过期, 属, 滞留不归, 。, 边境, 署, 已, 将, 驱逐出境, 可能, 是, 第一位, 因, 违反, 知识产权, 法规, 而, 被捕, , 8, 中旬, 上映, 一部, 美国, 新片, 舒某, 进去, 观看, 那天, 天气炎热, 却, 穿着, 一件, 大大的, 罩衫, 入场, 时, 显得, 特别, 笨拙, 引起, 了, 影院, 员工, 注意, 门卫, 通知, 经理, 暗中, 监视, 开场, 后, 衣服, 内, 掏出, 工具, 当场, 录制, 马上, 报警, 赶来, 带, 离, 放映厅, 当时, 摄像机, 还开, 着, 人赃俱获, 据悉, 带回, 警局, 十分, 配合, 当即, 承认错误, 声称, 偷录, 为, 自己, 喜欢, 这部, 片, 想, 多, 看, 几次, 然而, 记录, 显示, 惯犯, 十三个, 前, 也, 抓, 仅, 受到, 警告, 处分, 警方, 怀疑, 涉嫌, 法, 有, 商业, 谋利, 企图, 于是, 搜查, 住处, 查获, 几十张, 盗版, 影碟, 全是, 近, 一, 、, 二年, 来, 欧美, 市场, 上, 大片, 不少, 华人, 常年, 滞留, 于, 各大, 超市, 停车场, 或, 酒吧, 兜售, 近些年, 和, 判处, 参与, 制作, 贩卖, 案件, 不过, 不, 承认, 用于, 没有, 直接, 证据, 起诉, 只好, 交给, 以, 签证, 过期, 强行, 遣返, 近几年, 有关, 方面, 在, 保护, 加大, 力度, 各地, 都, 培训, 学习, 防范, 各, 专人, 负责, 只要, 报告, 嫌疑, 一定, 会派, 警员, 到场, 去年, 尼日利亚, 爱尔兰人, 均, 因为, 事后, 调查, 中, 发现, 他们, 发到, 专门, 制品, 网站, 两, 人均, 获罪, 被判, 入狱, 六个月]

3、单词词频arraylist


[1, 3, 1, 1, 1, 5, 1, 1, 1, 1, 40, 1, 2, 2, 2, 1, 3, 1, 1, 4, 1, 1, 3, 7, 7, 1, 3, 2, 2, 1, 1, 13, 13, 1, 1, 1, 2, 20, 2, 2, 1, 5, 1, 1, 4, 1, 2, 2, 3, 1, 1, 2, 20, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 4, 1, 1, 1, 5, 1, 1, 1, 1, 2, 1, 2, 1, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

4、单词词频排序arraylist

 

[40, 20, 20, 13, 13, 7, 7, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1

5、按词频排序结果示例:

6、源码:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 * @author ZTX
 *	2013年10月7日15:09:35
 *  2013年10月7日17:40:28
 *	统计词频
 *  数据准备:分好词的文本文件11.txt,其中词按换行符分隔
 */
public class WordFre {
	static String inFile="11.txt";//修改这个即可
	static String fileInName="."+ File.separator + "data" + File.separator + inFile;  
	static String fileOutName="."+ File.separator + "data" + File.separator + "out11.txt";  
	
	public static void main(String [] args){
		
		File input_data1=new File(fileInName);
		File output_data1=new File(fileOutName);
		
		FileReader fr1;
		FileWriter fw1;
		String temp="";
		
		ArrayList<String> SegmentList=new ArrayList<String>();
 		ArrayList<Integer> SegmentNum=new ArrayList<Integer>();
 		ArrayList<Integer> SortNum=new ArrayList<Integer>();
 		
 		Collections c = null;
 		int index,num;
		try {
			fr1 = new FileReader(input_data1);
			BufferedReader br1=new BufferedReader(fr1);
			while((temp=br1.readLine()) != null){
				temp=temp.trim();
				if(!SegmentList.contains(temp)){
					SegmentList.add(temp);
					SegmentNum.add(1);
				}else{
					index=SegmentList.indexOf(temp);
					num=SegmentNum.get(index)+1;
					SegmentNum.remove(index);
					SegmentNum.add(index, num);
				}
			}
			br1.close();
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}  
		SortNum=(ArrayList<Integer>) SegmentNum.clone();

		Collections.sort(SegmentNum, new Comparator() {
		      @Override
		      public int compare(Object o1, Object o2) {//降序
		        return new Double((Integer) o2).compareTo(new Double((Integer) o1));
		      }
		    });
		System.out.println(SortNum);//原来的顺序
		System.out.println(SegmentNum);//排序
		System.out.println(SegmentList);//原来顺序ci
		Integer n;
		int m;
		
		try {
			fw1=new FileWriter(output_data1);
			for(int i=0;i<SegmentNum.size();i++){
				n=SegmentNum.get(i);//从大到小小输出     当前词频
				 System.out.println(n);
				m=SortNum.indexOf(n);//位置
				//System.out.println(m);
				System.out.println(SegmentList.get(m));//该位置的单词
				SortNum.remove(m);
				SortNum.add(m, null);//删除这个位置
				
				fw1.write(SegmentList.get(m)+"("+n+")\n");
				fw1.flush();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
}


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值