一串英文文本的熵如何表示低质量?

杰夫阿特伍德最近发布了一个链接到CodeReview帖子,他想知道社区是否可以改善他的“计算字符串熵”代码片段。他解释说,“我们正在计算Stack Overflow中几个字符串的熵,作为低质量的标志。” 他的方法的要点似乎是,如果计算字符串中唯一字符的数量,则表示熵(代码取自PieterG的答案):
int uniqueCharacterCount = string.Distinct().Count();
我不明白唯一字符数如何表示字符串的熵,以及字符串的熵如何表示低质量。我想知道在这方面有更多知识的人是否可以解释阿特伍德先生想要完成的事情。 谢谢!     
已邀请:
字符串'aaaaaaaaaaaaaaaaaaaaaaaaaa'具有非常低的熵,并且相当无意义。 String'blah blah blah blah blah blah blah blah blah'有更高的熵,但仍然相当愚蠢,可以成为攻击的一部分。 具有与这些字符串相当的熵的帖子或评论可能不合适;它不能包含任何有意义的消息,甚至是垃圾链接。这样的帖子可以被过滤掉或保证额外的验证码。     
混淆似乎来自于这被用来阻止发布帖子的想法 - 事实并非如此。 它只是用于查找可能的低质量帖子的几种算法之一,显示在主持人工具的低质量帖子标签(需要10k代表)上。实际人类仍然需要查看帖子。 想法是抓住像
~~~~~~No.~~~~~~
FUUUUUUUU------
这样的帖子,而不是抓住所有低质量的帖子。 至于“独特的字符数如何表示熵?” - 它不是,真的。最受欢迎的答案完全忽略了这一点。 请参阅https://codereview.stackexchange.com/questions/868#878和https://codereview.stackexchange.com/questions/868#926     
让我们看看关于熵的维基百科条目(信息理论):   在信息论中,熵是与随机变量相关的不确定性的度量。在这种情况下,该术语通常指的是香农熵,它量化了信息中包含的信息的预期价值...... 特别是英文信息:   根据Shannon基于人体实验的估计,英文文本的熵率在每个字母1.0到1.5位之间,或者每个字母低至0.6到1.3位。 换句话说,不仅仅是低熵是坏的,高熵是好的,反之亦然 - 有一个最佳的熵范围。     
香农熵H(P)是随机变量X的概率分布P的性质。 在字符串的情况下,处理它的基本方法就像一个字符包。在这种情况下,频率计数提供字符串中随机选择的字符的概率分布P的近似值。 如果我们只是简单地计算字符串中唯一字符的数量,这将与该字符串中出现的唯一字符数量的均匀分布的熵相关联。并且唯一字符的数量越多,熵就越大。 但是,Jeff Atwood(以及BlueRaja的)后续代码贡献是更好的度量,因为它们考虑了字符串的其他可能的分布;仍然被认为是一袋(不一定是唯一的)角色;代表。 以Rex M的答案为基础......寻找“字符熵”超出1.0-1.5范围的字符串更有意义,尽可能“低质量的字符串”。     
不完全是你的问题的答案,但维基百科有熵的这个解释:   熵是无序的衡量标准,或更确切地说是不可预测性。   例如,一系列带有公平硬币的硬币投掷具有最大熵,   因为没有办法预测接下来会发生什么。一串硬币   带有双头硬币的投掷零熵,因为硬币总是如此   上来了。现实世界中的大多数数据集都存在于某个地方   之间。      英文文本的熵相当低。换句话说,它是相当可预测的。   即使我们不确切知道接下来会发生什么,我们也可以公平   例如,肯定会有比z更多的e或者更多的e   组合'qu'将比任何其他组合更常见   其中带有'q','th'组合将比任何组合更常见   他们未压缩的英文文本大约有一位熵   消息的每个字节(8位)。     

要回复问题请先登录注册