La legibilidad consiste principalmente en heurísticas que "de alguna manera funcionan bien" en muchos casos.
He escrito algunos trabajos de investigación sobre este tema y me gustaría explicar los antecedentes de por qué es fácil encontrar una solución que funcione bien y cuando sea difícil acercarse al 100% de precisión.
Parece haber una ley lingüística subyacente en el lenguaje humano que también (pero no exclusivamente) se manifiesta en el contenido de la página web, que ya separa bastante claramente dos tipos de texto (texto completo versus texto no completo o , aproximadamente, "contenido principal" vs. "repetitivo").
Para obtener el contenido principal de HTML, en muchos casos es suficiente mantener solo los elementos de texto HTML (es decir, bloques de texto que no están interrumpidos por el marcado) que tienen más de 10 palabras. Parece que los humanos eligen entre dos tipos de texto ("corto" y "largo", medido por el número de palabras que emiten) dos motivaciones diferentes para escribir un texto. Los llamaría motivaciones de "navegación" e "información".
Si un autor quiere que rápidamente obtiene lo que está escrito, él/ella utiliza el texto "navegación", es decir unas palabras (como "STOP", "Lee esto", "Haga clic aquí"). Este es el tipo de texto predominante en los elementos de navegación (menús, etc.)
Si un autor desea que usted entienda profundamente lo que quiere decir, él/ella usa muchas palabras. De esta forma, la ambigüedad se elimina a costa de un aumento en la redundancia. El contenido similar a un artículo generalmente se incluye en esta clase, ya que tiene más que unas pocas palabras.
Si bien esta separación parece funcionar en una gran cantidad de casos, cada vez es más difícil con los titulares, frases cortas, renuncias de derechos de autor, pies de página, etc.
Hay estrategias más sofisticadas, y características, que ayuda separar el contenido principal de repetición. Por ejemplo, la densidad del enlace (número de palabras en un bloque que están vinculadas versus el número total de palabras en el bloque), las características de los bloques previos/siguientes, la frecuencia de un texto de bloque en particular en la Web "completa", el DOM estructura del documento HTML, la imagen visual de la página, etc.
Puede leer mi último artículo "Boilerplate Detection using Shallow Text Features" para obtener una visión desde una perspectiva teórica. También puede ver el video de mi presentación en papel en VideoLectures.net.
"Legibilidad" utiliza algunas de estas características. Si observa cuidadosamente el registro de cambios de SVN, verá que el número de estrategias varió con el tiempo, al igual que la calidad de extracción de la legibilidad. Por ejemplo, la introducción de la densidad de enlaces en diciembre de 2009 ayudó mucho a mejorar.
En mi opinión, no tiene sentido decir "La legibilidad lo hace así", sin mencionar el número de versión exacto.
He publicado una biblioteca de extracción de contenido HTML de código abierto llamada boilerpipe, que proporciona varias estrategias de extracción diferentes. Dependiendo del caso de uso, uno u otro extractor funciona mejor. Puede probar estos extractores en las páginas que elija con la aplicación complementaria boilerpipe-web en Google App Engine.
Para que los números hablen, consulte la página "Benchmarks" en la wiki de boilerpipe que compara algunas estrategias de extracción, incluidas boilerpipe, legibilidad y Apple Safari.
Debo mencionar que estos algoritmos suponen que el contenido principal es en realidad el texto completo. Hay casos en los que el "contenido principal" es otra cosa, p. una imagen, una mesa, un video, etc. Los algoritmos no funcionarán bien en tales casos.
Saludos,
cristianos
La pregunta es ¿qué algoritmo usa SO que la legibilidad no maneje sus páginas? :) –
Relacionado: [¿Cómo funciona Safari's Reader y cuándo aparece?] (Http://superuser.com/q/387572/664) –