C# 词频统计 东北师范大学 软件项目管理 第一次作业
一、作为杨老师的学生第一次听杨老师讲课,印象最深的就是:工程中所有步骤之间是乘法,如果任何一步为0,工程就做不出来了。以前所有老师讲到的都是不要太在乎结果,努力的过程很重要,但是这在软件工程中不合适了。没有结果的项目就是一个失败的项目,即便你为此付出了诸多努力,但一步走错满盘皆输。
二、回到正题,这次作业题目二选一:词频统计、四则运算。题目一出来的时候跟齐某同学稍微讨论了一下,词频统计思路清晰但是有一些问题,单词的过去式、过去分词、将来时、单复数形式是否需要区分及如何区分;缩写如don‘t是否需要处理?好难先不做。从最简单的做起。
词频统计设计思路及基本步骤
1.文件预处理-读入TXT格式英文文档,将其中的标点、特殊符号等以空格代替,以空格为分隔符将所有单词分隔开并存入数组
2.遍历单词数组进行词频统计-利用C#Hashtable通过Key-Value来确定每个单词出现的次数。
数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。hashtable综合两者的特性,寻址容易,插入删除也容易
But*Hashtable作为一个稀疏的数据结构尽量在有充足内存的时候使用,随着插入的元素的增多,其大小会快速增长。
3.将hashtable结果安装Value之大小利用array数组进行排序并将结果输出为TXT形式
同学搞HadoopMapReduce,我问他这个问题是不是可以解决。答:数据量太小,大材小用。
三、课程期待
希望自己能够在学习过程中得到训练得到提高(发自肺腑)。ps:很久没听到能吸引人的课了 T_T
四、工作量表
| 代码行数 | 博客字数 | 知识点 | |
| 第一周 | 80 | 740 | Hashtable |
五、总结
仅仅实现了简单的统计和排序
附部分代码
预处理
sLine=sLine.ToLower();//全部变为小写字母
sLine = Regex.Replace(sLine, @"[^a-zA-Z0-9\u4e00-\u9fa5\s] ", " ");
sLine = Regex.Replace(sLine, "[!@#$%^&*()`,./;':\"<>`?...]", " ");//替换标点
String [] words= sLine.Split(' ');//分割
建立hashtable
Hashtable ha = new Hashtable();
//Hashtable
for (int j = 0; j < words.Length; j++)
{
if (ha.ContainsKey(words[j]))
{
ha[words[j]] = (int)ha[words[j]] + 1;
}
else
{
ha.Add(words[j], 1);
}
}
输出
FileStream aFile = new FileStream(path, FileMode.Create);
StreamWriter sw = new StreamWriter(aFile);
string[] arrKey = new string[ha.Count];//暂存 Hashtable 的键
int[] arrValue = new int[ha.Count];//暂存 Hashtable 的值
ha.Keys.CopyTo(arrKey, 0);
ha.Values.CopyTo(arrValue, 0);
Array.Sort(arrValue, arrKey);//按 HashTable 的值排序
//输出到TXT
for (int i = arrKey.Length-1; i >=0 ; i--)
{
if ((string)arrKey[i] != "")
{
sw.Write(arrKey[i].ToString() + ":");
sw.WriteLine(arrValue[i].ToString());
}
}
C# 词频统计 东北师范大学 软件项目管理 第一次作业的更多相关文章
- 词频统计的java实现方法——第一次改进
需求概要 原需求 1.读取文件,文件内包可含英文字符,及常见标点,空格级换行符. 2.统计英文单词在本文件的出现次数 3.将统计结果排序 4.显示排序结果 新需求: 1.小文件输入. 为表明程序能跑 ...
- 软件工程第一次个人项目——词频统计by11061153柴泽华
一.预计工程设计时间 明确要求: 15min: 查阅资料: 1h: 学习C++基础知识与特性: 4-5h: 主函数编写及输入输出部分: 0.5h: 文件的遍历: 1h: 编写两种模式的词频统计函数: ...
- USTC《现代软件工程》春季学期——第一次个人作业:词频统计
截止日期 2018年3月29日23:59 要求 1. 对源文件(*.txt,*.cpp,*.h,*.cs,*.html,*.js,*.java,*.py,*.php等,文件夹内的所有文件)统计字符数. ...
- 效能分析——词频统计的java实现方法的第一次改进
java效能分析可以使用JProfiler 词频统计处理的文件为WarAndPeace,大小3282KB约3.3MB,输出结果到文件 在程序本身内开始和结束分别加入时间戳,差值平均为480-490ms ...
- 【week2】 词频统计第一次更新
词频统计: 对每个功能预计时间: 功能 预计(min) 实际(min) 数据流读入 20 40 正则规范字符串 15 20 排序 30 45 输出 20 30 其他 25 词频统计psp 日期 类 ...
- HW—词频统计
第一次个人作业——词频统计 第一次做这种大作业,明显感觉陌生,各种规范和技能也是第一次使用,希望自己好运. 目录:一.基本要求 二.需求分析及时间估计 三.实现思路及过程 四.测试用例.时间性能分析及 ...
- c语言实现词频统计
需求: 1.设计一个词频统计软件,统计给定英文文章的单词频率. 2.文章中包含的标点不计入统计. 3.将统计结果以从大到小的排序方式输出. 设计: 1.因为是跨专业0.0···并不会c++和java, ...
- 使用HDFS完成wordcount词频统计
任务需求 统计HDFS上文件的wordcount,并将统计结果输出到HDFS 功能拆解 读取HDFS文件 业务处理(词频统计) 缓存处理结果 将结果输出到HDFS 数据准备 事先往HDFS上传需要进行 ...
- C#词频统计 效能分析
在邹老师的效能分析的建议下对上次写过的词频统计的程序进行分析改进. 效能分析:个人很浅显的认为就是程序的运行效率,代码的执行效率 1.VS 提供了自带的分析工具:performance tool (性 ...
随机推荐
- Asp.net中DataTable的排序功能
DataTable里的数据,如果是从数据库中取得的数据,我们可以用order by排序,而从excel表格取得的数据,就需要自己进行操作了. 例如,Dt_Data2是读取Excel表格取到的数据 Da ...
- [python] 在 python2和3中关于类继承的 super方法简要说明
下面举一个例子,同样的代码使用 python2 和 python3 写的,大家注意两段程序中红色加粗的部分: python2的类继承使用super方法: #-*- coding:utf-8 -*- ' ...
- 支付宝即时到账接口开发 - DEMO讲解
支付宝即时到帐接口 环境要求 PHP5.0以上,且需要开启curl.openssl. 文档地址: https://doc.open.alipay.com/doc2/detail?treeId=62&a ...
- WebService 的CXF框架 WS方式Spring开发
1.建项目,导包. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...
- Ubuntu16.04之开发环境构建
Ubuntu软件安装相对于centos而言,那真的是要愉快的多啊! 以下安装步骤,本人在公司的测试环境和开发环境以及之前个人虚拟机的测试或生产环境都测验过,基本没有问题,只要按照步骤来,即可马到成功! ...
- WorldWind源码剖析系列:日志类Log
Utility工程中的日志类Log主要用来输出Debug状态下的调试信息.该类的类图如下: 日志类Log中使用到的类和内嵌结构体类型主要有以下这些: public class LogEventArgs ...
- CentOS中安装Azkaban 2.5
必备软件 yum install git -y 单机安装步骤 git clone https://github.com/azkaban/azkaban.git cd azkaban; ./gradle ...
- oninput和onpropertychange实时监听输入框值的变化
oninput和onpropertychange实时监听输入框值的变化 传统监听输入框的做法就是使用keyup.keydown.keypress,或者change事件来实现,但keyup.keydow ...
- awk、sed处理文件的简单例子
awk.sed对处理日志文件和写shell脚本时非常有益.这个东西,如果不经常操作,真心过一段时间就忘差不多..要掌握熟练,就要多练习,这没什么可说的. awk '条件{命令}' filename 假 ...
- 报错Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
解决方法:import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'输入1:显示所有信息 2:只显示warning和erro ...