2011-02-22 8 views
12

Jeff Atwood recientemente twitteó un enlace a una publicación de CodeReview en la que quería saber si la comunidad podría mejorar su fragmento de código "calculating entropy of a string". Explicó, "Estamos calculando la entropía de una cadena en algunos lugares en Stack Overflow como un significante de baja calidad".¿Cómo la entropía de una cadena de texto en inglés significa baja calidad?

La esencia de su método parece ser que si se cuenta el número de caracteres en una cadena única, que significa la entropía (código tomado de PieterG's answer):

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

no entiendo cómo el el recuento único de caracteres significa la entropía de una cadena, y cómo la entropía de una cadena significa baja calidad. Me preguntaba si alguien con más conocimiento en esta área podría explicar lo que el Sr. Atwood está tratando de lograr.

Gracias!

+0

¿No es la entropía de las cuerdas la diferencia entre dos cuerdas? Esto parece tratar de determinar una medida cuantificable de qué tan mal alguien deletreó sus palabras. Cuantos más errores ortográficos, peor es la publicación. – zzzzBov

+7

asdfasdfasdfasdfasdfsdf –

+4

@Hans Passant: abcdefghijklmnopqrstuvwxyz - de acuerdo con este algoritmo, mi cadena tiene una entropía mucho más alta, pero tiene una calidad similar. – Pandincus

Respuesta

5

La cadena 'aaaaaaaaaaaaaaaaaaaaaaaaaaa' tiene una entropía muy baja y no tiene sentido.

String 'blah blah blah blah blah blah blah' tiene un poco más de entropía, pero sigue siendo bastante tonto y puede ser a part of an attack.

Una publicación o un comentario que tiene entropía comparable a estas cadenas probablemente no sea apropiado; no puede contener ningún mensaje significativo, incluso un enlace de spam. Tal publicación puede filtrarse o justificar un captcha adicional.

0

No exactamente una respuesta a su pregunta, pero, Wikipedia tiene this explanation of Entropy:

La entropía es una medida del desorden, o más precisamente imprevisibilidad. Por ejemplo, una serie de lanzamientos de monedas con una moneda justa tiene entropía máxima, , ya que no hay forma de predecir lo que vendrá después. Una cadena de moneda lanzamientos con una moneda de dos cabezas tiene entropía cero, ya que la moneda siempre va a subir cabezas. La mayoría de las colecciones de datos en el mundo real se encuentran en algún lugar en el medio.

El texto en inglés tiene una entropía bastante baja. En otras palabras, es bastante predecible. Incluso si no sabemos exactamente lo que va a venir a continuación, podemos estar bastante la certeza de que, por ejemplo, habrá muchos más correos de que z, o que la combinación 'qu' será mucho más común de lo cualquier otra combinación con una "q" en ella y la combinación "th" será más común que cualquier de ellas. Sin comprimir, el texto en inglés tiene aproximadamente un bit de entropía para cada byte (ocho bits) de mensaje. mirada

+0

¡De hecho! si el texto en inglés tuviera correctores de ortografía de alta entropía, no funcionaría. – Jasen

3

Vamos a la entrada de Wikipedia sobre Entropy (information theory):

En teoría de la información, la entropía es una medida de la incertidumbre asociada a una variable aleatoria. En este contexto, el término se refiere a la entropía de Shannon, que cuantifica el valor esperado de la información contenida en un mensaje ...

Y específicamente con información Inglés:

La tasa de entropía de texto Inglés es de entre 1,0 y 1,5 bits por carta, o tan bajo como 0,6 a 1,3 bits por carta, según estimaciones de Shannon basados en experimentos humanos.

En otras palabras, no se trata simplemente de que la baja entropía es malo y alta entropía es buena, o viceversa - hay un rango óptimo entropía.

5

La confusión parece deberse a la idea de que esto se usa para bloquear publicaciones: no lo es.

Es sólo uno de varios algoritmos utilizados para encontrar posibles puestos de baja calidad, que se muestran en la low quality posts tab(requiere representante 10k) de las herramientas de moderación. Los humanos reales todavía necesitan mirar la publicación.

La idea es captar mensajes como ~~~~~~No.~~~~~~ o FUUUUUUUU------, no pillarse todos los mensajes de baja calidad.


En cuanto a "¿De qué manera el carácter único de conteo significa entropía?" - no, realmente. Las respuestas más votadas por arriba pierden completamente el punto.

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

+1

Gracias por abordar mi confusión ;-) – Pandincus

2

El Shannon Entropy H (P) es la propiedad de una distribución de probabilidad P, de una variable aleatoria X.

En el caso de una cadena, una forma rudimentaria de tratamiento de es como una bolsa de personajes. En cuyo caso, el recuento de frecuencias proporciona una aproximación de la distribución de probabilidad P, de un carácter elegido al azar en la cadena.

Si tuviéramos que simplemente contar el número de caracteres únicos en una cadena, esto correlacionaría con la entropía de la distribución uniforme del número de caracteres únicos que aparecen en esa cadena. Y cuanto mayor sea el número de caracteres únicos, mayor será la entropía.

Sin embargo, las contribuciones de código posteriores de Jeff Atwood (y BlueRaja) son mejores medidas, ya que tienen en cuenta las otras posibles distribuciones que una cadena; todavía se piensa en una bolsa de personajes (no necesariamente únicos); representa

Sobre la base de la respuesta de Rex M ... tendría más sentido buscar cadenas en el 'carácter entropía' quedaron fuera del 1,0 - 'cuerdas de baja calidad' 1,5 gama, como sea posible

Cuestiones relacionadas