熵 (信息量)
信息论中衡量不确定性的指标。文本的熵越高,越难预测、越难压缩;熵越低,冗余度越高、越容易压缩。
熵 (entropy) 是克劳德·香农于 1948 年提出的信息论核心概念。文本中的熵量化了"下一个字符有多难预测",单位为比特/字符。熵高的文本信息密度大,熵低的文本冗余度高。
英文文本的熵估计约为 1.0 至 1.5 比特/字符。如果 26 个字母等概率出现,则熵为 log₂(26) ≈ 4.7 比特/字符,但实际上"e"出现频率最高而"z"几乎不出现,加上"th""ing""tion"等高频模式的存在,实际熵大幅降低。
中文文本的熵通常高于英文。常用汉字就有数千种,加上标点和数字的混合使用,预测下一个字符比英文更困难。不过中文单字承载的信息量比英文字母大得多 (一个汉字往往相当于一个英文单词),因此表达相同内容所需的字符数,中文通常比英文少。这也是为什么中文文本的 UTF-8 字节数虽然较大,但字符数却较少的原因。
熵与文本压缩直接相关。根据香农的信源编码定理,文本的压缩极限由熵决定。熵为 1.5 比特/字符的文本,理论上每个字符最多可压缩到 1.5 比特。与 ASCII 的 1 字符 = 8 比特相比,理论压缩率上限约为 81%。gzip 和 Brotli 等算法已经接近这一理论极限。
密码强度评估也用到了熵的概念。8 位纯小写字母密码的熵为 log₂(26⁸) ≈ 37.6 比特,而包含大小写字母、数字和符号 (95 种字符) 的 8 位密码熵为 log₂(95⁸) ≈ 52.6 比特。NIST 指南建议在线服务的密码至少具有 30 比特以上的熵。增加密码长度或增加字符种类都能提高熵,但增加长度的效果更为显著。
从字符计数的角度看,熵是"相同字符数能传递多少信息"的理论指标。同样是 280 字符的推文,套话式的问候 (低熵) 和专业的技术解析 (高熵) 所传递的信息量截然不同。在有字数限制的场景下,要最大化信息量,就需要去除冗余表达、提高文本的熵。