是否有算法可以找到文本的香农熵?

Pol*_*ana 9 algorithm text

我知道英语的Shannon熵是每个字母1.0到1.5位,有些人说每个字母低至0.6到1.3位但是我想知道有没有办法运行一个查看大量文本的算法然后确定集体文本的期望值是集体文本的每个字母的.08位?

Clé*_*ent 6

一种语言熵率的数学定义是,如果你有一个用该语言生成字符串的源,第 n符号的熵的极限,以前 n-1符号为条件(假设源是静止的)。

这种来源的一个足够好的近似是大量的英文文本。在开放的美国国家语料库是相当不错(100M字,涵盖了所有类型的书面文本)。然后,近似上述极限的基本算法是,对于给定的 n,查看文本中出现的所有 n-gram,并构建出现在定义中的条件熵的各种概率的统计估计。熵率的计算。

执行此操作的完整源代码简短而简单(约 40 行 Python 代码)。我最近写了一篇关于估计英语熵率的博客文章,其中详细介绍了更多细节,包括数学定义和完整实现。它还包括对各种相关论文的引用,包括香农的原始文章


usr*_*usr 2

估计文本的香农熵值。人类无法准确地找出答案。您可以通过对其运行高效的压缩算法 (PAQ) 来估计它,或者使用人类来预测给定字符串的下一个字母。人类会做得很好,因为他们应用语义知识,而不仅仅是统计知识或句法知识。

简短的回答:尝试尽可能压缩您拥有的数据/文本,并计算您根据经验需要多少位。

这取决于具体的算法,你能得到的数字是多少。这始终只是香农熵的上限(请记住,确切的值永远不会知道)。