词频统计实现方法大致思路(软工个人作业一)

基本功能

1. 统计文件的字符数
2. 统计文件的单词总数
3. 统计文件的总行数
4. 统计文件中各单词的出现次数
5. 对给定文件夹及其递归子文件夹下的所有文件进行统计
6. 统计两个单词(词组)在一起的频率,输出频率最高的前10个。
7. 在Linux系统下,进行性能分析,过程写到blog中(附加题)

数据结构:
characterNum 字符数  全局变量
wordNum   单词总数 全局变量
lineNum   总行数  全局变量
采用结构体数组(动态内存)存储单词及其出现次数

struct wordInfo {
 char* wordStr;
 int*  nextWordFrequency[26];
 int   frequency;
};
struct alphaArray {
 wordInfo* wordArray;
 int       total;
};

alphaArray dictionary[26];

遍历文件的方法:
_findfirst,_findnext函数实现,参考例程:https://www.cnblogs.com/ranjiewen/p/5960976.html

实现方案:
初始化各变量
遍历给定文件夹中的每个文件
只读方式打开符合要求的文件
单词统计
循环至所有文件遍历完成
关闭文件
输出统计结果

单词统计函数:
遍历字符并统计
判断是否是换行符并统计
建立缓冲区域存储一个单词中连续的字符
采集单词字符串
生成单词的哈希值(散列函数使用ELFHash、冲突解决方案采用二次探测)
根据首字母和哈希值确定单词的存储位置并存储单词信息
将当前单词的存储位置映射到前一个单词的nextWordFrequency[26][]矩阵当中,实现词组频率统计

统计规则:
http://www.cnblogs.com/denghp83/p/8627840.html

统计方法:
1.判断是否是ASCII码字符,若是,字符计数加一;若是换行符,行数加一
2.将间隔符之间的内容读入临时数组,用变量记录最后一个字母在数组中的位置
3.提取单词主体(除去最后的数字部分),产生哈希值
4.根据哈希值查找对应单元是否已经存在该单词,若存在,则该单词频率加一且按照词典顺序更新单词;若不存在,根据散列函数继续查找,直到找到同样的单词或者空闲的空间,更新或者记录单词信息

转载于:https://www.cnblogs.com/ustckx16/p/8627745.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值