词频统计(30 分)
请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词。
所谓“单词”,是指由不超过80个单词字符组成的连续字符串,但长度超过15的单词将只截取保留前15个单词字符。而合法的“单词字符”为大小写字母、数字和下划线,其它字符均认为是单词分隔符。
输入格式:
输入给出一段非空文本,最后以符号#
结尾。输入保证存在至少10个不同的单词。
输出格式:
在第一行中输出文本中所有不同单词的个数。注意“单词”不区分英文大小写,例如“PAT”和“pat”被认为是同一个单词。
随后按照词频递减的顺序,按照词频:单词
的格式输出词频最大的前10%的单词。若有并列,则按递增字典序输出。
输入样例:
This is a test.The word "this" is the word with the highest frequency.Longlonglonglongword should be cut off, so is considered as the same as longlonglonglonee. But this_8 is different than this, and this, and this...#
this line should be ignored.
输出样例:(注意:虽然单词the
也出现了4次,但因为我们只要输出前10%(即23个单词中的前2个)单词,而按照字母序,the
排第3位,所以不输出。)
23
5:this
4:is
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cctype>
#include <vector>
#include <map>
using namespace std;
bool cmp(pair<string, int> a, pair<string, int> b) {
if(a.second != b.second) return a.second > b.second;
else return a.first < b.first;
}
vector<pair<string, int> > v;
map<string, int> m;
int main(){
char str[100];
string word;
map<string, int>::iterator it;
int start = 0;
char ch;
while(ch = getchar()) {
if(ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z' || ch >= '0' && ch <= '9' || ch == '_') {
if(ch >= 'A' && ch <= 'Z') ch = ch - 'A' + 'a';
str[start++] = ch;
}
else if(start > 0) {
if(start >= 15) start = 15;
str[start] = 0;
start = 0;
word = str;
it = m.find(word);
if(it != m.end()) {
(it->second)++;
}
else {
m[word] = 1;
}
}
if(ch == '#') break;
}
for(it = m.begin(); it != m.end(); it++) {
v.push_back(make_pair(it->first, it->second));
}
sort(v.begin(), v.end(), cmp);
vector<pair<string, int> > :: iterator itv;
cout << v.size() << endl;
int ans = v.size() / 10;
for(itv = v.begin(); itv != v.begin() + ans; itv++) {
cout << itv->second << ':' << itv->first << endl;
}
return 0;
}
转载于:https://www.cnblogs.com/linguiquan/p/9050017.html
词频统计(30 分)相关推荐
- 数据结构查找-7-3 词频统计 (30 分)
7-3 词频统计 (30 分) 请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词. 所谓"单词",是指由不超过80个单词字符组成的连续字符串,但 ...
- 【PTA-python】第7章-1 词频统计 (30 分)--sys.stdin.read()读入到特定字符截至,双重排序条件key=lambda item:(-item[1], item[0])
第7章-1 词频统计 分析 双重排序条件:字典序,数字降序 题目 解法 自解 参考代码截断到`#`输入的代码 分析 遇到含有回车的无效输入,while循环如何处理.同过input()字符串不断串联起来 ...
- 第7章-1 词频统计 (30 分)
致读者:本人是一名通信专业学生,仅学了4天Python ,难免有些地方写的很笨拙. 写博客一方面是为了记录自己的学习过程中遇到的问题和思考,一方面是希望能够帮助到很多和自己一样处于困惑的读者. 水平有 ...
- 数据结构课设 词频统计
5-20 词频统计 (30分) 请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词. 所谓"单词",是指由不超过80个单词字符组成的连续字符串 ...
- python软件和rost软件哪个更好_ROST-CM软件分词和词频统计用法体验
ROST作为一款优秀的内容挖掘工具,在自然语言处理上提供一系列能够快速上手使用的功能,其中"分词"功能也是广为使用的.我们在对文本进行分词处理的过程中,由于词库是固定的,所以不管是 ...
- 8-2 sdust-Java-文件读取与统计【人工判编程题】 (30 分)
8-2 sdust-Java-文件读取与统计[人工判编程题] (30 分) 在F:\file\有一个纯文本文件article.txt,里面是英文的文章.编写Java程序,读取该文章内容,统计其中的单词 ...
- 【Python养成】:案例(身高体重BMI值、模拟用户登录系统、键盘录入10个学生的成绩,计算出最高分、最低分和成绩总和、词频统计)
案例题目:身高体重BMI值 计算成人身高体重指数BMI值.公式:bmi = 体重 / (身高 * 身高),体重的单位是千克,身高的单位是米 .键盘输入身高和体重值,计算bmi值,并根据结果对用户做出友 ...
- PAT甲级1049 Counting Ones (30 分):[C++题解]统计1的个数、数位统计
文章目录 题目分析 题目链接 题目分析 来源:PAT网站 分析: 以数字abcdefg这个7位数字为例,说一下本题的思路. 1)数字1在每一位出现的次数. 2)以第d位为例,第d位的取值可以分为3种情 ...
- 组合数据类型练习,英文词频统计实例9-21
1.列表实例:由字符串创建一个作业评分列表,做增删改查询统计遍历操作.例如,查询第一个3分的下标,统计1分的同学有多少个,3分的同学有多少个等. >>>score=list('212 ...
- Python项目实践:文本词频统计、软文的诗词风
一.文本词频统计 # CalHamletV1.py def getText():txt = open("C:/Users/520/Desktop/Hamlet.txt", &quo ...
最新文章
- UTA研究团队提出首个3D点云+GAN新方法,让机器人“眼神”更犀利 | AI日报
- zynq学习04 zynq中PS通过MIO控制LED
- HelloFresh迁移至新的API网关,实现微服务架构
- 取色器 for Mac
- 机器学习速成课程 | 练习 | Google Development——编程练习:合成特征和离群值
- dede手机站对应的php,Dede织梦(手机)移动端访问PC网址自动跳转对应m网址
- 这些问题你遇见过吗?职场中,新人必须堤防的6大陷阱
- python:使用sklearn 计算 precision、recall、F1 score(多分类)
- 金融领域7大数据科学案例
- ubuntu 下android设备找到fastboot驱动
- 2019年数学建模美赛经验总结
- 全网目前最全python例子(附源码)八、Python实战
- leetcode【中等】781、森林中的兔子
- html5标题分栏,网页分栏设计和不同的CSS样式
- 国内首款安全三级密码卡诞生!
- 国内优秀的设计公司有哪些?
- DynamicModuleException: MENIFEST.MF文件未找到
- office:word在编辑内容时反应迟钝的解决办法
- 用php调用接口api
- Windows消息响应机制之四:PostQuitMessage和GetMessage函数