zoukankan      html  css  js  c++  java
  • 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());
    }
    }

  • 相关阅读:
    递归算法介绍及Java应用实战
    常用缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)
    阿里巴巴高级Java面试题(首发,70道)
    2017阿里技术年度精选(全)
    10年老兵给程序员的10条建议!
    8条关于Web前端性能的优化建议
    (16)约束
    (15)oracle序列
    (14)oracle数据字典
    (13)oracle导出、导入
  • 原文地址:https://www.cnblogs.com/WeSure6/p/5257024.html
Copyright © 2011-2022 走看看