[Python] 信息论:计算机自信息,信息熵,对比中文和英文信息熵。
- 编写自信息量计算的函数(可以使用任意编程语言)。
- 编写计算信息熵的函数(要求:其中的自信息量的计算要调用前面定义的函数。
- 读取英文文本文件的内容,统计文本中每个字符出现的频率,做为无记忆信源一的输出概率分布并保存。
- 读取中文文本文件的内容,统计文本中每个字符出现的频率,做为无记忆信源二的输出概率分布并保存。
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] 信息论:计算机自信息,信息熵,对比中文和英文信息熵。相关推荐
- python正则匹配空格+数字+空格_如何批量添加中文和英文数字之间的空格?用正则表达式吧...
1.中文与英文数字混合使用,排版有规范 写作中,我们经常遇到以下中文与英文.数字混用的情况. 我自学python编程,是在xue.cn上进行的.时耗方面,基础功仅需50多小时,加上很多实战,包括初步运 ...
- 对文本进行美化:在中文和英文之间在中文和数字之间增加空格 pangu.spacing_text
[小白从小学Python.C.Java] [计算机等级考试+500强双证书] [Python-数据分析] 对文本进行美化: 在中文和英文之间 在中文和数字之间 增加空格 pangu.spacing_t ...
- 自己收集整理的微软错误代码大全(中文和英文)
自己收集整理的微软错误代码大全,分别为中文和英文部分,供广大软件开发人员共勉. 微软错误代码 2.1 中文 0 操作成功完成. 1 功能错误. 2 系统找不到指定的 ...
- esp32使用MicroPython驱动oled屏显示中文和英文
文章目录 esp32使用MicroPython驱动oled屏显示中文和英文 介绍 安装 特点 开源 硬件连接 API 示例 显示英文字符 显示汉字 参考链接 esp32使用MicroPython驱动o ...
- 为网站的中文和英文使用不同的字体
CSS为网站的中文和英文使用不同的字体 前言 最近我在搭建个人网站,在这个过程中遇到很多的问题,不过chatGPT3.5帮助了很多,这是我使用的咒语: 我正在搭建一个个人网站,使用python Fla ...
- JS-只能输入中文和英文
<span style="font-family:KaiTi_GB2312;">转自:<a target=_blank href="http://www ...
- JS正则验证输入框姓名只能输入中文和英文
js只包含中文和英文 name: [{required: true,message: '请输入姓名',trigger: 'blur'},{pattern: /^[a-zA-Z\u4e00-\u9fa5 ...
- 验证中文和英文姓名 正则表达式
出处:https://blog.csdn.net/kekekeqi/article/details/80881718 参考上面链接文章,以访丢失,再次粘贴一次 ^([\u4e00-\u9fa5]{2, ...
- 【HTML】关于height值设置和显示不同的原因以及font-size对象为中文和英文的区别
关于height值设置和显示不同的原因 height: 100px; CSS中把高度设置为100px,但是实际测量发现高度为125px 这个是因为:笔记本默认显示大小为125%,所以100的125%就 ...
最新文章
- python moviepy 特效编辑
- 后盾网lavarel视频项目---5、淘宝镜像cnpm的原理及如何使用
- 分布式框架seata启动命令
- python实例31[解析buildlog]
- putty自动登录设置
- java对象克隆的例子_Java对象克隆
- SAS接口互连完全指南
- mysql longbolb_MySql基本数据类型及约束
- 标记分布学习LDL与多标记学习MLL以及单标记学习
- 用java判断x奇或偶_改善java程序——用偶判断,不用奇判断
- 学术论文写作方法和技巧
- 什么是PaaS平台 ?
- this的三种常见用法
- 闲聊: 女神异闻录4
- 写好 JavaScript 异步代码的几个技巧
- 遥感影像去背景 之 数据裁剪
- 7-2 列出连通集 (25分)
- 真我手机可以装鸿蒙系统,华为Mate40/P40两大旗舰用户已提前享用鸿蒙手机系统...
- windows和android双系统平板,安卓+windows双系统平板的“得与失”
- 局域网git服务器搭建(基于win7 + bonobo git server)