ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:16.78KB ,
资源ID:10671322      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10671322.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汉字字频统计.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汉字字频统计.docx

1、汉字字频统计import java.awt.List;欧阳光明(2021.03.07)import java.io.*;import jxl.*;import jxl.write.*;import java.text.DecimalFormat;import java.util.ArrayList;public class statistics public static void main(String args) / 读字表 ArrayList chtable = readFromTable(CHTable.txt); System.out.println(字表大小为: + chtable

2、.size(); / 读文件 ArrayList numlist = readFromFile(10.txt, chtable); / 排序 ArrayList chlist = sort(chtable, numlist); / 计算汉字的总数 int sum = 0; for (int i = 0; i numlist.size(); i+) sum = sum + (Integer) numlist.get(i); System.out.println(-显示结果-); / 返回指定个数的汉字频率统计结果 ArrayList freqlist = frequency(chlist, nu

3、mlist, sum, 100); / 计算熵值 float sh = entropy(freqlist); / 计算指定个汉字的字频总和 float fre1 = freqSum(freqlist, 1); float fre2 = freqSum(freqlist, 20); float fre3 = freqSum(freqlist, 100); float fre4 = freqSum(freqlist, 600); float fre5 = freqSum(freqlist, 2000); float fre6 = freqSum(freqlist, 3000); float fre

4、7 = freqSum(freqlist, 6000); ArrayList freal = new ArrayList(); freal.add(fre1); freal.add(fre2); freal.add(fre3); freal.add(fre4); freal.add(fre5); freal.add(fre6); freal.add(fre7); ArrayList nal = new ArrayList(); nal.add(1); nal.add(20); nal.add(100); nal.add(600); nal.add(2000); nal.add(3000); n

5、al.add(6000); System.out.println(-程序结束-); / 生成Excel的类 try / 打开文件 WritableWorkbook book = Workbook.createWorkbook(new File(统计结果.xls); / 生成工作表,参数0表示这是第一页 WritableSheet sheet = book.createSheet(sum+字, 0); /* * 生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 */ /表头 Label label1 = new Label(0, 0, 字符); sheet.addCel

6、l(label1); Label label2 = new Label(1, 0, 频率); sheet.addCell(label2); for(int i=0;i100;i+) / 中文字符 Label label = new Label(0, i+1, chlist.get(i).toString(); sheet.addCell(label); / 出现的频率 jxl.write.Number number = new jxl.write.Number(1, i+1, (Float)freqlist.get(i); sheet.addCell(number); /写入熵值 Label

7、lsh = new Label(0, 101, 熵值); sheet.addCell(lsh); jxl.write.Number nsh = new jxl.write.Number(1, 101, sh); sheet.addCell(nsh); /写入字频总和 for(int i=0;i= u4e00 & tempint = uf900 & tempint = ufa2d) char tempchar = (char) tempint; / System.out.println(tempchar); / System.out.println(list.size: + chlist.siz

8、e(); / 判断该字符是否出现过 int i = 0; for (i = 0; i chlist.size(); i+) / 一旦重复,跳出循环 char c = ; Object ob = chlist.get(i); if (ob instanceof Character) c = (Character) ob; / System.out.println(c: + c); if (tempchar = c) / System.out.println(重复!); break; / 字符从未出现过 if (i = chlist.size() / System.out.println(新字符!

9、); chlist.add(tempchar); reader.close(); catch (Exception e) e.printStackTrace(); return chlist; /* * 该函数用于从文件中读取中文字符,并返回它出现的次数 * * param filename * return */ public static ArrayList readFromFile(String filename, ArrayList chtable) File file = new File(filename); Reader reader = null; ArrayList numl

10、ist = new ArrayList(); / 初始化字符出现的次数集合 for (int i = 0; i = u4e00 & tempint = uf900 & tempint = ufa2d) char tempchar = (char) tempint; / System.out.println(tempchar); / System.out.println(list.size: + chlist.size(); / 判断该字符是否在字表里 int i = 0; for (i = 0; i chtable.size(); i+) / 在字表里,统计重复次数并跳出循环 char c =

11、 ; Object ob = chtable.get(i); if (ob instanceof Character) c = (Character) ob; / System.out.println(c: + c); if (tempchar = c) int num = (Integer) numlist.get(i) + 1; numlist.set(i, num); break; reader.close(); catch (Exception e) e.printStackTrace(); return numlist; /* * 该函数用来对汉字出现的次数进行从大到小的排序,返回排

12、序结果 * * param chlist * param numlist */ public static ArrayList sort(ArrayList chtable, ArrayList numlist) ArrayList chlist = chtable; for (int i = 0; i numlist.size(); i+) for (int j = i + 1; j numlist.size(); j+) int listi = (Integer) numlist.get(i); int listj = (Integer) numlist.get(j); if (listi

13、 listj) numlist.set(i, listj); numlist.set(j, listi); char chi = (Character) chlist.get(i); char chj = (Character) chlist.get(j); chlist.set(i, chj); chlist.set(j, chi); return chlist; /* * 该函数用来计算各个汉字出现的频率,并且显示出指定个数的结果 * * param chlist * param numlist * param sum * param count */ public static Arra

14、yList frequency(ArrayList chlist, ArrayList numlist, int sum, int count) ArrayList freqlist = new ArrayList(); / 计算频率 for (int j = 0; j chlist.size(); j+) float freq = (Integer) numlist.get(j) / (float) sum; freqlist.add(freq); / 按指定格式输出(保留6位有效数字) for (int j = 0; j freqlist.size() & j count; j+) Sys

15、tem.out.println(字符: + chlist.get(j); System.out.println(出现次数: + numlist.get(j); System.out.println(频率: + freqlist.get(j); System.out.println(-); System.out.println(中文字符总数: + sum); return freqlist; /* * 该函数用来计算熵值 * * param freqlist */ public static float entropy(ArrayList freqlist) float sum = 0f; for (int i = 0; i freqlist.size() return 0f; for (int i = 0; i count; i+) freqsum += (Float) freqlist.get(i); System.out.println(前 + count + 个汉字字频总和为: + freqsum); return freqsum;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1