Удобочитаемость в основном состоит из эвристики, которая во многих случаях «просто как-то хорошо работает».
Я написал несколько исследовательских работ по этой теме, и я хотел бы объяснить предысторию того, почему легко найти решение, которое хорошо работает, и когда становится трудно приблизиться к 100% точности.
Кажется, что в основе человеческого языка лежит лингвистический закон, который также (но не исключительно) проявляется в контенте веб-страницы, который уже довольно четко разделяет два типа текста (полнотекстовый и неполнотекстовый или, грубо говоря, " основное содержание "против" шаблона ").
Чтобы получить основное содержимое из HTML, во многих случаях достаточно оставить только текстовые элементы HTML (т. Е. Блоки текста, которые не прерываются разметкой), которые содержат более 10 слов. Похоже, что люди выбирают один из двух типов текста («короткий» и «длинный», измеряемый количеством слов, которые они произносят) для двух разных мотивов написания текста. Я бы назвал их «навигационными» и «информационными» мотивами.
Если автор хочет, чтобы вы быстро получили то, что написано, он / она использует «навигационный» текст, то есть несколько слов (например, «СТОП», «Прочтите это», «Щелкните здесь»). Это наиболее заметный тип текста в элементах навигации (меню и т. Д.).
Если автор хочет, чтобы вы глубоко поняли, что он / она имеет в виду, он / она использует много слов. Таким образом устраняется двусмысленность за счет увеличения избыточности. Статьи, похожие на контент, обычно попадают в этот класс, поскольку в нем больше, чем несколько слов.
Хотя такое разделение, кажется, работает во множестве случаев, оно становится сложным с заголовками, короткими предложениями, заявлениями об отказе от ответственности, нижними колонтитулами авторских прав и т. Д.
Существуют более сложные стратегии и функции, которые помогают отделить основной контент от шаблонного. Например, плотность ссылок (количество слов в блоке, которые связаны по сравнению с общим количеством слов в блоке), особенности предыдущих / следующих блоков, частота конкретного текста блока во «всей» сети, DOM-структура HTML-документа, визуальное изображение страницы и т. Д.
Вы можете прочитать мою последнюю статью « Обнаружение шаблонов с использованием функций мелкого текста », чтобы получить некоторое представление с теоретической точки зрения. Вы также можете посмотреть видео с моей бумажной презентации на VideoLectures.net.
«Читаемость» использует некоторые из этих функций. Если вы внимательно посмотрите журнал изменений SVN, вы увидите, что количество стратегий менялось со временем, как и качество извлечения читабельности. Например, введение плотности ссылок в декабре 2009 года очень помогло улучшить.
На мой взгляд, поэтому нет смысла говорить «Читаемость делает это так», не указывая точный номер версии.
Я опубликовал библиотеку извлечения содержимого HTML с открытым исходным кодом под названием котел , которая обеспечивает несколько различных стратегий извлечения. В зависимости от варианта использования лучше работает тот или иной экстрактор. Вы можете опробовать эти экстракторы на выбранных вами страницах с помощью сопутствующего веб-приложения котел в Google AppEngine.
Чтобы дать слово цифрам, см. Страницу « Benchmarks » в вики-странице котла, на которой сравниваются некоторые стратегии извлечения, в том числе котел, читаемость и Apple Safari.
Я должен упомянуть, что эти алгоритмы предполагают, что основной контент на самом деле является полным текстом. Бывают случаи, когда «основным контентом» является что-то еще, например изображение, таблица, видео и т. Д. В таких случаях алгоритмы не работают.
Привет,
Христианин