我有一些英文书面文字,并计算了它的熵。 但是我意识到基于LZ方法的压缩算法在熵给出的限制下压缩很多。
这是因为模拟英文文本的信息来源有记忆。 因此,压缩的边界由熵率给出,而不是由该源的熵给出。
我看到了带存储器的源熵率的定义,但是想知道如何用英语写的文本用算法或伪代码计算熵率。
有什么想法吗?
感谢您的帮助。
答案 0 :(得分:1)
通常,估计具有内存的源的熵率是一个难题,并且当存在许多长距离依赖性时(如自然语言中那样),这尤其困难。基本上你需要做的是根据样本构造语言的语法,然后计算语法的熵率。你在提取语法时所做的特殊假设会对你最终得到的熵率产生很大的影响,所以你能做的最好的事情是估计实际熵率的一些相当微弱的界限。源。
通常的做法是简单地通过使用像gzip这样的标准压缩程序压缩大样本来估计熵率,尽管Cosma Shalizi指出这是一个糟糕的想法。如果您打算使用通用数据压缩算法,LZ76是更好的选择; FermínMoscosodel Prado有一个paper正在寻找一些替代方案。
虽然压缩算法会给你一种语法,但使用准确捕获语言中长距离依赖关系的语法会更好。不幸的是,从原始文本样本中学习现实的自然语言语法是一个非常开放的研究问题。但是,在学习自然语言的有限状态近似方面有一些有希望的工作,可用于产生良好的熵率估计。查看CSSR以了解解决问题的一种方法。