个人和结对项目 - 英语单词词频统计

简介:

个人或结对编程项目 英语单词词频统计程序

 

实现一个命令行程序,支持几种模式下的单词词频统计

Implement a console application to tally the frequency of words under a directory.

 

For all text files (file extension: "txt") under a directory (recursively), calculate the frequency of each word, and output the result into a text file.  

2 options to write the program:

    a) Write the code in C++ or C#, using .Net Framework, the running environment is 32-bit Win7 or Win10. with VS studio 2012-2015 profiling tool

    b) Write the code in Java, using latest JDK, run it on Win10, or Linux platform with appropriate Java profiling tool

 

Run performance analysis tool on your code, find performance bottlenecks and improve.

 

Enable Code Quality Analysis for your code and get rid of all warnings.

Code Quality Analysis:  http://msdn.microsoft.com/en-us/library/dd264897.aspx 

 

Write 10 simple test cases to make sure your program can handle these cases correctly (e.g.  a good test case could be: one of the sub-directories is empty).

 

Submission:

Submit your source code and exe to TA, TA will run it on his testing environment and check for

       - correctness   (incorrect program will get 0 points)

       - performance

       - write a blog (see blog requirement below)

 

Definition:

word: a string starting with one English alphabet letters, then followed by optional alphanumerical characters.  Words are separated by delimiters. If a string contains non-alphanumerical characters, it’s not a word. Word is case insensitive, i.e. “file”, “FILE” and “File” are considered the same word.

“file123” is a word, and “123file” is NOT a word.

  - Alphabetic letters:  A-Z, a-z.

  - Alphanumerical characters: A-Z, a-z, 0-9.

  - Delimiter: space, non-alphanumerical letters.

  - Output text file: filename is <your email name>.txt

  - Each line has this format

      <word>: number

Where <word> is the string, showing in all upper-case format.  E.g. if only “File” and “file” appear in the test file,  the program should show “FILE”.

Where “number” is the number of times this word appears in the file(s)  The output should be sorted with most frequent word first.  If 2 words have the same frequency, list the words by dictionary order.

 

Requirements:

1)      Simple mode.   Output simple word frequency.

Myapp.exe <directory-name>

Will output <your-name>.txt file in current directory, the text file contains word ranking list.

2)      Extended mode. 

在执行 Myapp.exe -e2 <directory-name>时,找出最频繁出现的连续两个词(列出前10名)。例如,在一本英文小说中,“good morning” 出现次数最多。

在执行 Myapp.exe -e3 <directory-name>时,找出最频繁出现的连续三个词(列出前10名)。例如“how are you"。

这里连续的词是指由单个空格分隔的词。

The app will output <your-name>.txt file in current directory, the text file contains word ranking list.

3)      support -v, verb tally mode. 

Myapp.exe -v <directory-name>时,找出最频繁出现的动词,包括这个动词出现的各种变态。

在学习英语的过程中我们学习过很多动词,知道动词有原型,和各种时态/语态下的变形。 例如:

原型: do

变形:does, did, done, doing.

那么,一篇英语文章里, 有多少个动词”do” 和它的各种变形呢? 最频繁的动词前10名是什么呢?这就是我们这个练习的目的。

任务分解:

1)自己构造(或者助教提供)一个动词及其变形的文本文件。 每一行开头是原型,后面跟着各种变形,例如:

     do does did done doing

     get gets got gotten getting

     ...

2) 处理

  Myapp.exe -v <directory-name>

    对于每一个符合条件的文件处理, 然后统计出所有文件中最频繁动词的前10名。

Blog Requirement:

You can publish this to BOTH your own blog, and your team blog (to help your team blog get some traffic)

1)      Before you implement this project, Record your estimate about the time you WILL spend in each component of your program.

2)      After you had implemented this project, record the ACTUAL time you spent in each component of your program.

3)      Describe how much time you spent on improving the performance of your program, and show a performance analysis graph (generated by VS2012 perf analysis tool), if possible, please show the most costly function in your program.

4)      Share your 10 test cases, and how did you make sure your program can produce the correct result. (programs with incorrect result will get 0 points,  regardless of speed)

5)      Describe what you had learned in this exercise.





本文转自SoftwareTeacher博客园博客,原文链接:http://www.cnblogs.com/xinz/p/6100228.html,如需转载请自行联系原作者


目录
相关文章
|
3月前
|
机器学习/深度学习 自然语言处理 算法
文本分析-使用jieba库进行中文分词和去除停用词(附案例实战)
文本分析-使用jieba库进行中文分词和去除停用词(附案例实战)
998 0
|
5月前
|
存储 自然语言处理 算法
算法编程(十九):词典中最长的单词
算法编程(十九):词典中最长的单词
30 0
|
5月前
|
算法
算法编程(二十八):重新排列单词间的空格
算法编程(二十八):重新排列单词间的空格
36 0
|
20天前
|
存储 自然语言处理 Python
Python中文词汇与英文词频统计
本文介绍了如何使用Python进行英文和中文词频统计。对于英文,借助内置库按空格分隔单词并处理特殊字符;对于中文,需安装jieba分词库。代码实现中,通过读取文件、分词、统计词频并输出到文件。运行时,通过命令行提供文本和结果文件路径。此技能在学术研究、语言分析和文本挖掘领域颇有价值。
Python中文词汇与英文词频统计
|
2月前
|
自然语言处理 Python
Python实现词频统计
Python实现词频统计
|
4月前
|
定位技术
英语词组 get out of 的几种使用方法介绍
英语词组 get out of 的几种使用方法介绍
70 0
|
10月前
|
数据采集 自然语言处理 小程序
【每周一坑】统计英文小说词频
然而,只有我们依旧无趣地在此刻发干货文,提醒着你有没有写新的代码?有没有了解新的语法?硬生生给你五彩斑斓的周末生活蒙上一层阴影。每每想到这,我就觉得,这档子事儿还真是……
|
10月前
|
数据采集 存储 人工智能
【每周一坑】自动翻译 | 【解答】单词本
提示:翻译功能可以通过网上的翻译 API 实现,你所要了解的就是如何发起网络请求,以及如果对返回结果进行处理。这也算是基本的爬虫操作。
|
10月前
|
存储 JavaScript IDE
程序员常用英文单词/英语单词/词汇表/变量名称
程序员常用英文单词/英语单词/词汇表/变量名称
182 0
|
10月前
|
算法 测试技术
蓝桥算法_单词分析-wordAnalysis
蓝桥算法_单词分析-wordAnalysis