个人项目 - 词频统计

Posted

tags:

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

目标与要求


  • 使用开发工具
  • 使用源代码管理工具

详细要求:

1. 实现一个控制台程序,给定一段英文字符串,统计其中各个英文单词(4字符以上含4字符)的出现频率。

附加要求:读入一段文本文件,统计该文本文件中单词的频率。

 

2. 性能分析:

+对C++代码运行VS的性能分析工具,找出性能问题并进行优化。

+对Java程序运行性能分析工具 NetBeans IDE 6.0,找出性能问题并进行优化。


 

 

 

详细内容


  • 开发语言:C++    
  • 开发工具:Codeblocks
  • 准备工作:
  1. 思路

(1)由用户选择是自主输入一段英文字符串,还是读入一段文本文件。

(2)将录入的字符串分割成若干英文单词。

(3)将分割出来的英文单词进行筛选(长度小于4的不统计,大写字母转换成小写字母,首字母为非字母数字的单词不统计,)其中的大写字母转换成小写字母以便于之后的统计。

(4)统计并输出结果。

 

2.  预计时间

编写+调试+验证=2H左右

 

  • 源代码
 1 #include<iostream>
 2 #include<fstream>
 3 #include<cstring>
 4 #include<cctype>
 5 using namespace std;
 6 
 7 void screen(int chioce)      //对内容进行筛选
 8 {
 9     char input[50][50],newinput[50][50],newopen[100];
10     char *open;
11     if(chioce==1)            //以输入方式对字符串进行存储与筛选
12     {
13         cout<<"请输入一串字符串,以回车键作为结束:";
14         for(int m=0;input[m]!=\\0;m++)     //将字符串以二维字符数组的形式储存起来
15         {
16             for(int n=0;input[n]!=\\0;n++)
17             {
18                 cin>>input[m][n];
19             }
20         }
21         for(int m=0;input[m]!=\\0;m++)//将输入的字符串的大写转换为小写
22         {
23             for(int n=0;input[m][n]!=\\0;n++)
24             {
25                 if(input[m][n]>=A&&input[m][n]<=Z&&strlen(input)>=4)   //限制字符串大小为4
26                 {
27                     int i=0,j=0;
28                     newinput[i][j]=toupper(input);
29                 }
30             }
31         }
32         sta(newinput,m*n);
33     }
34 
35     else        //以录入方式对字符串进行存储与筛选
36     {
37         int i=0,n;
38         cout<<"请将所需文本存入D:\\\\open.txt";
39         ifstream open("D:\\\\open.txt");
40         open=new int[n];
41         while(open>>open[i],strlen(open)>=4)  //字符串大于4的才给予储存的机会
42         {
43             newopen[i]=toupper(open);         //大写转换成小写
44             i++;
45         }
46         sta(newopen,i);
47     }
48 }
49 
50 void sta(char word[],int wordnum[])          //统计单词出现的次数
51 {
52     char newword[],newwordnum[];
53     cout<<"统计的单词出现的次数如下:\\n";
54     for(int i=0;;i++)
55     {
56         for(int j=0;if(strcmp(newword[i],word[j]));j++)
57         {
58             newwordnum[i]++;
59         }
60         cout<<newword[i]<<\\t<<newwordnum[i]<<endl;
61     }
62 
63 }
64 
65 
66 int main( )
67 {
68     int chioce;
69     cout<<"请问是输入一串字符串还是导入一个文本文件?(1:字符串,2;文本文件):";
70     cin>>chioce;
71     if(chioce==1||chioce==2)        //用户选择
72     {
73         screen(chioce);
74     }
75     return 0;
76 }
  • 所遇问题
  1. 怎么解决用两种方式来进行原数据的导入?

     将两种方式的数据导入都存入数组中以便后面读取。

  2.  怎么样可以减小时间复杂度和空间复杂度?

     尽量的减少循环语句的使用和新空间的调用。

  • 小结

对于将问题细分化有了更实际的操作练习;对于关注用户界面体验有了初步的感受和认识;

对于一个程序在空间和时间上的利用有了初步的简化练习;对于某些平时没接触过的库进行了了解;

  • 源代码Github地址

https://github.com/Jennyhyt/My-source-code

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

软件工程个人作业 词频统计

个人作业——词频统计

201671010416 焦少梅 实验二 词频统计项目

第一次个人项目词频统计——需求分析,代码规范,设计思路

201671010441徐浩杰 词频统计软件项目报告

作业4:结对项目——词频统计