1. 编写自信息量计算的函数(可以使用任意编程语言)。
  2. 编写计算信息熵的函数(要求:其中的自信息量的计算要调用前面定义的函数。
  3. 读取英文文本文件的内容,统计文本中每个字符出现的频率,做为无记忆信源一的输出概率分布并保存。
  4. 读取中文文本文件的内容,统计文本中每个字符出现的频率,做为无记忆信源二的输出概率分布并保存。
import numpy as np
import jieba
import reclass xinxilunshiyan1(object):def __init__(self):self.fileName_China = '信息论实验一_中文'self.fileName_English = '信息论实验一_英语'self.content_readfile = Noneself.jieba_cut_chinese = []self.jieba_cut_english = []self.content_analysis_chinese = {}self.content_analysis_english = {}self.content_cleandata_chinese = []self.content_cleandata_english = []self.r = "[]_.!+-=——,$%^,。?、~@#¥%……&*《》<>「」{}【】()/]"#1. 编写自信息量计算的函数(可以使用任意编程语言)def zixinxi(self,*x):zxx = -(np.log2(x))return zxx#2. 编写计算信息熵的函数(要求:其中的自信息量的计算要调用前面定义的函数def xinxishang(self,*x):arr = np.array(x)p = arr/sum(arr)xxs = p*self.zixinxi(p)ex = np.sum(xxs)return ex#3.读取英文文本文件的内容,统计文本中每个字符出现的频率,做为无记忆信源一的输出概率分布并保存#4.读取中文文本文件的内容,统计文本中每个字符出现的频率,做为无记忆信源二的输出概率分布并保存.def readFile(self,filename):try:with open(filename,'r',encoding='utf-8') as f:self.content_readfile = f.read()self.content_readfile = re.sub(self.r, '', self.content_readfile)except Exception as e:print(e)return self.content_readfile#4.读取中文文本文件的内容,统计文本中每个字符出现的频率,做为无记忆信源二的输出概率分布并保存.def jiebafenci_chinese(self,x):for line in self.readFile(x):self.jieba_cut_chinese.extend(jieba.cut(line.strip()))return self.jieba_cut_chinese#3.读取英文文本文件的内容,统计文本中每个字符出现的频率,做为无记忆信源一的输出概率分布并保存def jiebafenci_english(self,x):for line in self.readFile(x):self.jieba_cut_english.extend(jieba.cut(line.strip()))return self.jieba_cut_english#4.读取中文文本文件的内容,统计文本中每个字符出现的频率,做为无记忆信源二的输出概率分布并保存.def pinlv_China(self,x):for word in self.jiebafenci_chinese(x):if word in self.content_analysis_chinese.keys():self.content_analysis_chinese[word] += 1else:self.content_analysis_chinese[word] = 1return self.content_analysis_chinese#3.读取英文文本文件的内容,统计文本中每个字符出现的频率,做为无记忆信源一的输出概率分布并保存def pinlv_English(self,x):for word in self.jiebafenci_english(x):if word in self.content_analysis_english.keys():self.content_analysis_english[word] += 1else:self.content_analysis_english[word] = 1return self.content_analysis_englishdef data_clean_chinese(self,**data):self.content_cleandata_chinese = list(data.values())return self.content_cleandata_chinesedef data_clean_english(self,**data):self.content_cleandata_english = list(data.values())return self.content_cleandata_english#测试代码
if __name__ == "__main__":Demo = xinxilunshiyan1()# a = [2,4]# print(Demo.zixinxi(*a))# print(Demo.xinxishang(*a))# print(Demo.readFile('信息论实验一_中文.txt'))print(Demo.pinlv_China('信息论实验一_中文.txt'))# print(Demo.readFile('信息论实验一_英语.txt'))print(Demo.pinlv_English('信息论实验一_英语.txt'))print(Demo.data_clean_english(**Demo.content_analysis_english))print(Demo.data_clean_chinese(**Demo.content_analysis_chinese))chinese = Demo.xinxishang(*Demo.content_cleandata_chinese)english = Demo.xinxishang(*Demo.content_cleandata_english)if chinese > english :print(f'中文的信息熵为:{chinese},他是信源二,他的不确定性高')else:print(f'英文的信息熵为:{english},他是信源一,他的不确定性高')print('============================')print(f'中文的信息熵为:{chinese}')print(f'英文的信息熵为:{english}')

[Python] 信息论:计算机自信息,信息熵,对比中文和英文信息熵。相关推荐

  1. python正则匹配空格+数字+空格_如何批量添加中文和英文数字之间的空格?用正则表达式吧...

    1.中文与英文数字混合使用,排版有规范 写作中,我们经常遇到以下中文与英文.数字混用的情况. 我自学python编程,是在xue.cn上进行的.时耗方面,基础功仅需50多小时,加上很多实战,包括初步运 ...

  2. 对文本进行美化:在中文和英文之间在中文和数字之间增加空格 pangu.spacing_text

    [小白从小学Python.C.Java] [计算机等级考试+500强双证书] [Python-数据分析] 对文本进行美化: 在中文和英文之间 在中文和数字之间 增加空格 pangu.spacing_t ...

  3. 自己收集整理的微软错误代码大全(中文和英文)

    自己收集整理的微软错误代码大全,分别为中文和英文部分,供广大软件开发人员共勉.                  微软错误代码 2.1  中文 0 操作成功完成. 1 功能错误. 2 系统找不到指定的 ...

  4. esp32使用MicroPython驱动oled屏显示中文和英文

    文章目录 esp32使用MicroPython驱动oled屏显示中文和英文 介绍 安装 特点 开源 硬件连接 API 示例 显示英文字符 显示汉字 参考链接 esp32使用MicroPython驱动o ...

  5. 为网站的中文和英文使用不同的字体

    CSS为网站的中文和英文使用不同的字体 前言 最近我在搭建个人网站,在这个过程中遇到很多的问题,不过chatGPT3.5帮助了很多,这是我使用的咒语: 我正在搭建一个个人网站,使用python Fla ...

  6. JS-只能输入中文和英文

    <span style="font-family:KaiTi_GB2312;">转自:<a target=_blank href="http://www ...

  7. JS正则验证输入框姓名只能输入中文和英文

    js只包含中文和英文 name: [{required: true,message: '请输入姓名',trigger: 'blur'},{pattern: /^[a-zA-Z\u4e00-\u9fa5 ...

  8. 验证中文和英文姓名 正则表达式

    出处:https://blog.csdn.net/kekekeqi/article/details/80881718 参考上面链接文章,以访丢失,再次粘贴一次 ^([\u4e00-\u9fa5]{2, ...

  9. 【HTML】关于height值设置和显示不同的原因以及font-size对象为中文和英文的区别

    关于height值设置和显示不同的原因 height: 100px; CSS中把高度设置为100px,但是实际测量发现高度为125px 这个是因为:笔记本默认显示大小为125%,所以100的125%就 ...

最新文章

  1. python moviepy 特效编辑
  2. 后盾网lavarel视频项目---5、淘宝镜像cnpm的原理及如何使用
  3. 分布式框架seata启动命令
  4. python实例31[解析buildlog]
  5. putty自动登录设置
  6. java对象克隆的例子_Java对象克隆
  7. SAS接口互连完全指南
  8. mysql longbolb_MySql基本数据类型及约束
  9. 标记分布学习LDL与多标记学习MLL以及单标记学习
  10. 用java判断x奇或偶_改善java程序——用偶判断,不用奇判断
  11. 学术论文写作方法和技巧
  12. 什么是PaaS平台 ?
  13. this的三种常见用法
  14. 闲聊: 女神异闻录4
  15. 写好 JavaScript 异步代码的几个技巧
  16. 遥感影像去背景 之 数据裁剪
  17. 7-2 列出连通集 (25分)
  18. 真我手机可以装鸿蒙系统,华为Mate40/P40两大旗舰用户已提前享用鸿蒙手机系统...
  19. windows和android双系统平板,安卓+windows双系统平板的“得与失”
  20. 局域网git服务器搭建(基于win7 + bonobo git server)

热门文章

  1. OpenFire源码学习之五:用户登录
  2. 小白学习DirectX11:第一个demo
  3. QT QSettings介绍
  4. 【一文答疑】游程检验 --- 游程R的条件分布不理解?
  5. SPSS中八类常用非参数检验之三:游程检验
  6. 越狱后如何使用将.app打包成deb程序
  7. 教幼儿园孩子计算机知识,幼儿园大班数学知识教案-5个5个数数
  8. Android开发随笔
  9. nginx搭文件服务器
  10. 注解之@link与@see的使用与区别