首页 文章

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

提问于
浏览
13

杰夫阿特伍德最近发布了一个CodeReview帖子的链接,他想知道社区是否可以改进他的“calculating entropy of a string”代码片段 . 他解释说,"We're calculating entropy of a string a few places in Stack Overflow as a signifier of low quality."

他的方法的要点似乎是,如果计算字符串中唯一字符的数量,则表示熵(代码取自PieterG's answer):

int uniqueCharacterCount = string.Distinct().Count();

我不明白唯一字符数如何表示字符串的熵,以及字符串的熵如何表示低质量 . 我想知道在这方面有更多知识的人是否可以解释阿特伍德先生想要完成的事情 .

谢谢!

5 回答

  • 6

    字符串'aaaaaaaaaaaaaaaaaaaaaaaaaa'具有非常低的熵,并且相当无意义 .

    字符串'blah blah blah blah blah blah blah blah'具有更高的熵,但仍然相当愚蠢,可以a part of an attack .

    具有与这些字符串相当的熵的帖子或评论可能不合适;它不能包含任何有意义的消息,甚至是垃圾链接 . 这样的帖子可以被过滤掉或保证额外的验证码 .

  • 6

    混淆似乎来自于这被用来阻止发布帖子的想法 - 事实并非如此 .

    它只是用于查找可能的低质量帖子的几种算法之一,显示在主持人工具的low quality posts tab(需要10k代表)上 . 实际人类仍然需要查看帖子 .

    想法是 grab 像 ~~~~~~No.~~~~~~FUUUUUUUU------ 这样的帖子,而不是 grab 所有低质量的帖子 .


    至于"How does the unique character-count signify entropy?" - 它确实没有 . 最受欢迎的答案完全忽略了这一点 .

    https://codereview.stackexchange.com/questions/868#878https://codereview.stackexchange.com/questions/868#926

  • 2

    让我们看看 Entropy (information theory) 上的维基百科条目:

    在信息论中,熵是衡量随机变量相关的不确定性的指标 . 在这种情况下,该术语通常指的是香农熵,它量化了信息中包含的信息的预期 Value ......

    特别是英文信息:

    根据Shannon基于人体实验的估计,英文文本的熵率在每个字母1.0到1.5位之间,或者每个字母低至0.6到1.3位 .

    换句话说,不仅仅是低熵是坏的,高熵是好的,反之亦然 - 有一个 optimal entropy range .

  • 0

    香农熵H(P)是随机变量X的概率分布P的性质 .

    在字符串的情况下,处理它的基本方法就像一个字符包 . 在这种情况下,频率计数提供字符串中随机选择的字符的概率分布P的近似值 .

    如果我们只是简单地计算字符串中唯一字符的数量,这将与该字符串中出现的唯一字符数量的均匀分布的熵相关联 . 并且唯一字符的数量越多,熵就越大 .

    但是,Jeff Atwood(以及BlueRaja的)后续代码贡献是更好的度量,因为它们考虑了字符串的其他可能的分布;仍然被认为是一袋(不一定是唯一的)角色;代表 .

    以Rex M的答案为基础......寻找“字符熵”超出1.0-1.5范围的字符串更有意义,尽可能“低质量的字符串” .

  • 3

    不完全是你的问题的答案,但维基百科有this explanation of Entropy

    熵是一种无序的衡量标准,或更确切地说是不可预测性 . 例如,一系列带有公平硬币的硬币投掷具有最大熵,因为无法预测接下来会发生什么 . 带有双头硬币的一串硬币投掷零熵,因为硬币总是会出现在头上 . 现实世界中的大多数数据集都介于两者之间 . 英文文本的熵相当低 . 换句话说,它是相当可预测的 . 即使我们不确切知道接下来会发生什么,我们也可以相当肯定,例如,会有比z更多的e,或者'qu'组合将比任何其他组合更常见其中带有'q',组合'th'将比其中任何一个更常见 . 未压缩的英文文本对于消息的每个字节(8位)具有大约一位熵 .

相关问题