词频统计-功能一

Posted huyr000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了词频统计-功能一相关的知识,希望对你有一定的参考价值。

   一.完成一个小程序

        我 拿到这个题目之后,就决定用最不熟悉的c#来实现,因为老师说不懂的去学才会有进步。布置任务后的第二天就开始去图书馆借了两本书《c#从入门到精通》,《c#项目实战》,拿到书之后看了入门书《c#从入门到精通》,看书的过程是痛苦的,因为发现大二选修课学的c#全交还给老师了,只能重头再学了。唯一有点印象的就是窗口应用程序,基于UI的设计。

     写代码首先需要工具,由于电脑上没有visual studio的安装包,当时求助了度娘。

     如果没有安装包的同学们,可以借鉴一下这个链接http://blog.csdn.net/chunleixiahe/article/details/52874158,里面vs2003-2015的版本都有,推荐。由于网速问题,下载安装包都花费了半个小时。
      看到题目,我就直接用Windows窗口程序完成了文件的查找,读取和统计字数,然后询问老师是否可以用Windows窗口程序完成,发现这次作业后续功能需要重定向输入,必须得做成控制台,否则无法做重定向输入。
      编程中也遇到了很多问题,只能一步步看书和借助度娘来解决。
      遇到的主要问题如下:
1.不知道c#对文件如何操作,如何查找文件,读取文件,输出文件的内容。
2.不知道如何统计文件中内容的字符,并且正确输出每个单词的出现的频数,后来实现这个小功能主要使用了哈希表,并对哈希表的值进行排序,然后遍历哈希表对每个单词出现的次数进行输出。
我的实现代码如下:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace wf
{
    class Program
    {
        
        static void Main(string[] args)
        {
            
            string theFileName;
            Console.Write(">type ");
            theFileName=Console.ReadLine();
            string thePath = @"D:\\vs2010\\test.txt";
            //string thePath = null;
            //Console.Write(">type ");
            //thePath = Console.ReadLine();
            //StreamReader content = File.OpenText(thePath);

            //读取文件内容并输出
            StreamReader reader = new StreamReader(thePath);
            string sline=reader.ReadLine();
            Console.WriteLine(sline.ToString());
            sline = sline.ToLower();//全部变为小写字母
            //定义一个字符数组
            char[] c = { \' \', \',\', \'.\', \'?\', \'!\', \':\', \';\', \'\\\'\', \'\\"\' };
            //分隔字符串后产生的字符串数组
             string[] S = sline.Split(c);
             //Console.WriteLine();
             //Console.WriteLine(">wf -s test.txt");
            // Console.WriteLine("total " + S.Length);
            //建立哈希表
             Hashtable ha = new Hashtable();
             for (int i = 0; i < S.Length; i++)
             {
                  //判断文本是否进入
                  if (ha.ContainsKey(S[i]))
                   {
                       ha[S[i]] = (int)ha[S[i]] + 1;
                   }
                    else
                    {
                        ha.Add(S[i], 1);
                    }
                }
               //int sum = 0;
                string[] arrKey = new string[ha.Count];//存哈希表的键
                int[] arrValue = new int[ha.Count];//存哈希表的值
                ha.Keys.CopyTo(arrKey, 0);
                ha.Values.CopyTo(arrValue, 0);
                Console.WriteLine();
                Console.WriteLine(">wf -s test.txt");
                Console.WriteLine("total " + ha.Count);
                Console.WriteLine();
               
                Array.Sort(arrValue,arrKey);//按哈希表的值进行排序
               
                //遍历哈希表
                //foreach (DictionaryEntry de in ha)
                //{
                //输出
                // Console.WriteLine(de.Key + ":" + de.Value);
                 //Console.Write(ha.Count);

                // }
                for (int i = arrKey.Length - 1; i >= 0; i--)
                {
                    if ((string)arrKey[i] != "")
                    {
                        Console.Write(arrKey[i].ToString() + ":");
                        Console.WriteLine(arrValue[i].ToString());
                    }
                }

        }
    }
}

实现的截图如下:

二.例行报告

1.PSP(personal software process)个人软件过程

类别 任务 开始时间 结束时间 打扰时间 净时间
借书 借书 2017.9.15 10:00 2017.9.15 10:20 20min
看书   2017 9.15 12:20 2017.9.16  21:15 n多打扰时间

<5h

编程 写代码 2017 9.16 18:00 2017.9.16   21:30 洗漱30min,回复消息20min 2h40min
写作 写博客 2017.9.16 21:50 2017.9.16  22:30 40min

2.进度条

  代码行 博文字数 知识点
第二周 83 800 见博客词频统计-功能一

三.修改格式

     看到老师给出的样例是需要右对齐。

所以在输出部分修改了一行代码Console.Write(arrKey[i].ToString().PadRight(12) );

使得输出结果结果如下图

 

类别 任务 开始时间 结束时间 被打扰时间 净时间
编程 修改输出格式 2017.9.17 10:00 2017.9.17 10:24 聊天5min 19min

 

 

以上是关于词频统计-功能一的主要内容,如果未能解决你的问题,请参考以下文章

第一次作业——词频统计

词频统计单元测试

字符串文件操作,英文词频统计预处理

Spark编程实战-词频统计

Spark编程实战-词频统计

个人项目----词频统计WEB(部分功能)