社区
C语言
帖子详情
C语言 统计文本文件中词语个数
贾继康
博客专家认证
2019-03-02 02:06:33
如下图所示:
...全文
291
5
打赏
收藏
C语言 统计文本文件中词语个数
如下图所示:
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
贾继康
2019-03-04
打赏
举报
回复
不好意思呀大哥,那小弟重新来一次吧: 1:原始文本如下所示:
2:统计文本中出现非重复的词的个数,以及按照出现重复词的数量(从大到小)排序:结果如下所示:
3:我的代码时间空间复杂度都太高了,对于我的100多万行的文本根本不行。所以还要麻烦大哥帮小弟能写一个嘛
@风轻云淡_
2019-03-04
打赏
举报
回复
一定要用C语言吗,用C++的话应该简单多了
@风轻云淡_
2019-03-04
打赏
举报
回复
你可以参考网上的代码,用C实现一个hashmap结构,或者直接用C++里的Map。
思路就是map<string,int> 读取文本,一次读一行往里插(如果用getline的话,小心\r),读取到的词语作为key,每一个key的value都初始化为0,插入成功,下一条。插入失败(重复),使用index功能,取出该key的value,然后加一。循环往复就好了,并且map有自动排序功能,很方便。
顺便测测 map 的性能
贾继康
2019-03-04
打赏
举报
回复
可以用C++大哥,,,,只是小弟不会大哥,,大哥分享的那个链接,不符合我的要求呀 以下是我写的大哥: #include <stdio.h> #include <string.h> struct words //单词结构体 { char word[115]; int count; }; int main(int argc, char *argv[]) { struct words word[12000] = {0}, stmp = {0}; int i = 0, j = 0, k = 0, flag = 0; int wors = 0; char c; char tmp[100] = {0}; // 存储每个词语,最多存储50个字 FILE *fp = NULL; fp = fopen(argv[1], "r"); //读文件解析词语 while ((c = fgetc(fp)) != EOF) // 按字符读取 { //以换行符作为单词标识符。 if (c != '\n') { tmp[j++] = c; // 在未遇到词语标识符之前将 } else { //tmp[j] = '\0'; // 清零操作 j = 0; // 重置 flag = 0; //判断单词是否已经记录 如果已有则使用率加1 for (k = 0; k < i; k++) { if (strcmp(tmp, word[k].word) == 0) // 判断相等函数 { word[k].count++; // 统计相同的词语的个数 flag = 1; // 设置标识符为1 break; } } //没有则存入单词结构体数组保存 if (!flag) { strcpy(word[i].word, tmp); word[i].count++; i++; } memset(tmp, 0, sizeof(tmp)); memset(tmp, '\0', sizeof(tmp)); } } fclose(fp); //使用冒泡排序实现降序排序 for (j = 0; j < i; j++) { for (k = 0; k < i - j - 1; k++) { if (word[k].count < word[k + 1].count) //判断词语出现的次数大小 { stmp = word[k]; word[k] = word[k + 1]; word[k + 1] = stmp; } } } // 输出排序后的所有已记录单词 // 排序之后实现打印输出 for (k = 0; k < i; k++) { printf("[%s][%d]\n", word[k].word, word[k].count); } } 这是小弟写的,,但是我用100w行数据测试的时候(每行定都20个字以内),
636f6c696e
2019-03-02
打赏
举报
回复
这年头找个会表述清楚问题的人就那么难么
C语言
--视频精讲
C语言
作为被长期使用的编程语言,可以被运用到各种操作系统,游戏,开发
中
。本课程作为互联网上首家使用C99录制的
C语言
教程,展现了全面、专业。标准的
C语言
教程。可以帮助学员从基础开始一点点的深刻理解
C语言
。
文本单词
统计
(
C语言
)
统计
文本文件
中
单词的
个数
(不区分大小写)
文本文件
单词
统计
(
C语言
)
文本文件
单词
统计
(
C语言
) 本人目前还是一位在校大学生,写文章的目的是为了记录一下当前所学,与其他爱好者或从业者相互学习交流。
文本文件
单词
统计
这个题目是学校的一次课程设计
中
的一道,在编写时也是参考了很多资料,借鉴了一些别人的想法,如有冒犯我会及时删除。同样,我的编写成果肯定会存在一些不足之处,也请读者多多包涵。 这个题目的具体信息如下: 1、问题描述 编写一个
文本文件
单词
统计
的程序,包括建立文件、单词
统计
、单词查询、单词定位的功能。 2、基本要求 程序应先询问用户的 ID号(ID 号包括两个大写字母和4 位
【
C语言
】
中
文
文本文件
之词频
统计
【
C语言
】
中
文
文本文件
之词频
统计
一、前言 二、 代码实现一 2.1 源码 2.2 执行结果 三、代码实现二 3.1 源码 3.2 执行结果 【
C语言
】
中
文
文本文件
之词频
统计
一、前言 以下代码都是针对于小
文本文件
,不适用于大
文本文件
二、 代码实现一 2.1 源码 #include <stdio.h> #include <stdlib.h> ...
C语言
实现英文文本词频
统计
词频
统计
(word frequency counting)是自然语言处理(NLP)领域
中
一种常用的技术。它的原理是
统计
一个文本
中
每个词出现的次数,并按照词频降序排列。词频
统计
是一种简单但有效的方法,常用于文本挖掘,文本分类,情感分析等NLP任务
中
。它可以提供有关文本内容的重要信息,并帮助研究人员更好地理解文本内容。实际上,英文词频识别的难度要远低于
中
文。去重:去掉重复的
词语
,以保证
统计
的
词语
数量是唯一的。分词:将文本分解为独立的
词语
。
统计
:
统计
每个
词语
出现的次数。排序:将
词语
按照词频降序排列。
C语言
69,369
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章