英文单词平均长度及信息熵计算

英文单词平均长度及信息熵计算

ID:27456889

大小:34.50 KB

页数:3页

时间:2018-12-03

英文单词平均长度及信息熵计算_第1页
英文单词平均长度及信息熵计算_第2页
英文单词平均长度及信息熵计算_第3页
资源描述:

《英文单词平均长度及信息熵计算》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、~英文单词平均长度及信息熵计算题目要求:以文本形式给定一足够长的典型英文小说,编程计算文章平均单词长度,并计算一阶和二阶信息熵.分析:计算英文单词平均长度,即统计总单词数和总字母数,然后用总字母数除以总单词数.用VC++编程实现,英文单词数计算法:1.一般,一个字符串的前一个字符是字母,而紧跟其后的是一个符号,那么可以认为这是一个单词.则单词数加一2.排除掉满足条件1但却不能算一个单词的情况,如:can’t、non-linear这类单词。因为在满足1时单词数已加上一,故判断这是一个组合词,这个符号

2、不算一个单词之后,单词数减一。字母数的统计即从文本读取一个字符串后全部转为小写,判断是否在a~z之间,是则字母数加一。因为题目要求“足够长”,因此全文的扫描统计显然是不理智的,因此,采用每读一行后,随机向后跳N行的抽样法统计,并计设一个全文的扫描统计统计的程序以验证随机抽样与精确读取之间的误差,发现误差在0.1~0.4之间,显然小了一个数量级,这个误差可以接受,故为了程序计算速度,采用了随机抽样统计的方法。具体为:每从文本读取一行后,通过调用自定义函数fileseek=intgenerateran

3、d(intm_range)产生一个随机数,读取文本指针从当前位置向后跳fileseek,继续读取下一行,如此反复可遍历全文。关于信息熵的统计,我翻阅了很多资料,最后确定从以下两法中抽一各:1.香农统计自然语言信息熵的方法。2.利用离散有记忆信源的算法计算信息熵。下面比较这两种算法:1.香农统计自然语言信息熵的方法。首先,选一本有代表性的英语书籍。然后随机地翻开某一页,并随机地选择该页的一个字母,假设是U。将U作为典型字母序列的第一个字母。再随机地跳过若干行或若干页,读到第一个U,就读取紧跟其后的字

4、母,假设为R,将R作为序列的第二个字母。然后再跳若干行,读到R并读取紧跟其后的字母,将其做为序列的第三个,如此反复,即可得到一个字母序列,构成一阶马尔可夫信源,用马尔可夫信源求信源熵的办法即可求出一阶熵。~~~~同理,若每次选两个字母为一个组合,用相似的办法即可得到另一个字母序列,构成二阶马尔可夫信源,之后用马尔可夫信源求信源熵的办法即可求出二阶熵。1.利用离散有记忆信源的算法计算信息熵。求得联合熵H(X1,X2)后除二即可行一阶信息熵。同理求得联合熵H(X1,X2,X3)后除三即可行二阶信息熵。

5、显然第一种方法更科学更简单,但对计算机而言,反受了马尔可夫信源的状态数限制,使得求解的计算机算法更难实现(这些是我本人知识有限所致),故选用第二种办法。第二种算法即先求联合概率,然后求信息熵,方法较简单,在些不多展开。计算机实现时求这些有限个数的概率只要用好数组就得了。具体算法见程序。使用VC++6.0的MFC库编写此程序。结果:程序运行结果如下图:程序界面计算某一文章结果~~~~总结:计算结果存在一定的误差,一是算法上有一定缺馅,二是随机抽样导致。希望老师以后多给这样锻练能力的作业,我会努力学好

6、这门课,多学点知识,争取做得更好。做的不对的地方恳请老师给予指正.组长:王毅诚(学号:200404015010)组员(不分先后顺序):刘学(学号:200404015021)陈明虎(学号:200404015041)张强(学号:200404015006)~~~

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。