Browse by Tags

Анализ веб-страниц, выявление новостей и не только
17 февраля 10 01:10

Не так давно, где-то с месяц назад в процессе экспериментов над алгоритмом Скиура – я таки нашёл для него первое практическое полезное применение, помимо, частного использования. Впрочем о проекте для которого Скиур будет использоваться я ещё напишу когда он будет готов, сейчас же о другом – о том как переводить полу-структурированную информацию из веб-страницы в структурированные блоки.

На самом деле в этой области огромный непочатый край исследований, работы и фана для тех кому интересно разбираться в том как информация живёт и существует.

Пока я могу рассказать как сбором и анализом данных для алгоритмов занимаюсь я. Собственно ничего сложного в этом нет:

- у меня есть специально написанная система и пол-сервера на Amazon’е которая используется с единственной целью находить извлекать информацию с веб-сайтов. При этом извлечение происходит на нескольких уровнях: HTTP заголовки, meta информация HTML, скрипты, ссылки на изображения, любые ссылки, стилевые страницы и статистику по использованию тэгов их иерархии и структуре. В совокупности там хранится порядка 100 000 веб-страниц, в основном главных «морд» сайтов в виде нескольких выборок от 10 000 до 25 000 тысяч страниц.

- далее несколько очень простых алгоритмов разбирают эти первичные (веб-страницу) и вторичные (объекты на странице) данные и классифицируют сайт по целому ряду метрик – какая CMS используется, поддерживается ли кэширование страниц, используется ли CDN, какой-сервер используется, если реклама, какие используются виджеты и так далее. Фактически эта система аналог http://builtwith.com/ для Рунета с учётом его специфики и сервисов и с тем отличием что она не публична.  Эту штуку я называл под кодовым названием «Урлум», сейчас я передумал её делать публичной – поскольку пока не вижу в этом пользы.

- после этого начинают работать сложные алгоритмы: определения коммерциализованности сайта, извлечение структурированных блоков, определения структурной карты сайта (не путать с объектной!)  - структурная карта это совокупность правил навигаций по сайту. Того как происходят переходы – через запросы GET, именованными подразделами, AJAX’ом или иначе, а также выявление непосредственно навигационного меню сайта.

- и только после того как эти данные накоплены начинаются проверки нужного алгоритма на нескольких десятках тысячах сайтов производится упрощение  алгоритма с сужением числа нужных ему признаков для максимальной производительности.

Собственно делалась мною вся эта схема под впечатлением от проекта из Opera Mama, но с целями идентификации форм представления информации.  Недостатки у этого подхода тоже есть – это типичный overkill поскольку усилий на то чтобы собрать все эти признаки нужно очень много и нужно четко понимать зачем это нужно и как будет использоваться.

Другой недостаток – это высокое ресурсопотребление. После структурного разбора веб-страницы хранение всех признаков и её блоков может превосходить её объём в несколько раз. Да, конечно, можно использовать эффективные структуры данных, оптимизировать переписав ключевые участки на C++, но тут уже вопрос стоимости усилий к гибкости решения.

Собственно теперь почему я и раньше писал что выявление новостей в Скиуре – это на самом деле очень упрощённый алгоритм. Потому как в нём всей этой базы не используется, в нём есть только самая базовая информация о распознавании кластеров, большая коллекция шаблонов распознавания даты и времени и простой алгоритм разметки распознанных блоков на заголовок, ссылку и текст. По отдельности это действительно  _очень простые_ алгоритмы.

Для работы алгоритма в Скиуре минимально необходимы дата + текст, а желательны дата + текст + ссылка на новость. Но дата в ленте новостей нужна не потому что нельзя RSS ленту построить на других данных и дату сформировать динамически или извлечь из сопутствующей информации. Смысл в другом, смысл в идентификации блоков. На самом деле на любой веб странице могут присутствовать множество различных информационных блоков.  Ленты новостей, избранные статьи, навигационные меню, ссылки с обзорами и без, галереи фотографий, списки книг и так далее. Далеко не все из них могут быть представлены как новостные ленты, как раз наоборот большинство из них новостными лентами не являются и новостные ленты без дат на сайте это скорее исключение чем норма. В свою очередь упрощённый алгоритм скиура делался под полную автоматику – то есть так чтобы можно было запустить робота по сайтам и он сам восстанавливал RSS ленты. Для случаев когда дат нет требуется обязательное подтверждение от человека что новостная лента найдена и определена верно. А это уже полу-автомат, а не автомат и сделать его возможно, фактически, для него всё готово, но уже не так интересно и практических задач для него пока ещё мало.

И о точности и производительности. Существует некий баланс между точностью восстановления RSS ленты, того что туда попадают все записи и правильно распознаются ссылки, текст и заголовок, и тем с какой производительностью и скоростью может работать алгоритм. Чем Выше точность тем время разбора страницы ниже и наоборот. Почему так?

Потому как есть 3 основных режима работы алгоритма:

- универсальный: алгоритм, фактически всегда работает в режиме обучения и распознает новостную ленту даже если сменится движок на сайте или поменяется вёрстка, расположение блоков на странице или форматы описания дат. Универсальный режим определяет все блоки динамически и формирует ленту также динамически. Это наиболее эффективный и медленный способ выявления новостей на веб-странице и самый медленный тоже.

- избирательный: режим при котором при первом обращении к странице формируется выжимка из её метаданных которые далее используются для ускоренного анализа веб-страницы. Последующий разбор страницы после этого происходит очень быстро, но и сопряжён с ошибками если изменится разметка страницы, новые элементы новостной ленты будут несоответствовать ранее сформированным при обучении шаблонам и так далее. Этот способ используется большинством полу-ручных парсеров делающих из веб-страниц RSS ленты. Только в качестве алгоритма выступает человек определяющий какие блоки и как размечать.

- гибридный: режим который частично использует выжимку из метаданных и ищет отклонения от ранее сформированного шаблона, если он находит такие отклонения, то снова переобучается по странице. В таком режиме алгоритм работает медленнее на страницах с отклонениями, но быстро на всех тех где таких отклонений нет.

Практически схожая ситуация с тем когда распознаются другие смысловые блоки, например, навигационное меню и структурная карта сайта которые также могут существенно помочь при распознавании новостных блоков.

Суть проблемы остаётся одна – постоянная изменчивость структуры веб-страниц. Если для сотен сайтов – это будет происходить нечасто, то для тысяч и десятков тысяч, это уже заметно. В то время как «обучение на изменчивость» процесс непростой, так как требует накопления версий одной и той же страницы во временном разрезе.

Однако, по прежнему, я считаю что структурный анализ веб-страниц возможен и становится всё проще и проще.

Originally published at Иван Бегтин. You can comment here or there.

Postedfrom Иван Бегтин | 0 Comments    
HTML в RSS: Google Reader vs Скиур.
26 января 10 07:51

Вчера в блоге Google Reader’а появился пост что теперь он поддерживает создание RSS лент из любой веб страницы.  Это хотя и не новая, но полезная возможность уже реализованная в таких сервисах как Page2RSS, ChangeDetection.com

И, собственно, есть мой сервис Скиур (www.skyur.ru) с похожими возможностями, но принципиально иным принципом построения. Об этом я уже прокомментировал Николаю Двасу в заметке Ruformator’а, а расширенно напишу тут.

Главное отличие в принципиальном подходе.

ChangeDetection, Page2RSS, Femtoo и ещё ряд сервисов практически все основаны на разной степени проработанности алгоритмах HTML Diff – определения отличий веб страниц или выделенных на них участках. Фактически эти алгоритмы сводятся к двум задачам:

1. Найти отличия

2. Выделить из этих отличий значимые и преобразовать их в текст.

Причём решения этих задач существуют уже давно, мне не редко попадались настольные программы которые решали то же самое, разница же в веб-сервисах лишь в том что появились версии алгоритмов достаточно быстрые чтобы обеспечивать массовое использование, ну а в случае Гугла это ещё проще с их огромной инфраструктурой и возможностью выгружать веб-страницы из собственных баз, а не с сайтов.

В основу же работы Скиура положены алгоритмы распознавания повторяющихся блоков и элементов этих блогов. Он не сравнивает страницу с предыдущей, а распознаёт на ней различные смысловые участки, которые в дальнейшем реконструирует в объекты или их списки. Новостная лента – это один из примеров таких объектов. Она определяется, извлекается, сохраняется и далее отдаётся как RSS.

Собственно, изначально я делал этот сервис как экспериментальный, он и сейчас такой же экспериментальный и некоммерческий. И для меня целью его создания было решение всего двух задач:

1. Опробация алгоритмов в действии на большом числе разных страниц – это удалось, сейчас поддерживается более 160 различных форматов новостных лент.

2. Возможность подписаться на новости многих госсайтов, которые я периодически читаю, а RSS у них нет – это также удалось решить.

Собственно таковы главные отличия и предыстория Скиура. Ну а цель и дальнейшее развитие сейчас упираются в наличие у меня на него времени и ресурсов поскольку сейчас Скиур по прежнему является частным решением по автоматическому извлечению новостных лент, а не общим по извлечению разнородного структурированного содержимого.

Originally published at Иван Бегтин. You can comment here or there.

Postedfrom Иван Бегтин | 0 Comments    
Filed under: ,
Обновление алгоритма в Скиуре
18 января 10 01:30

В Скиуре, сервисе по извлечению новостей из HTML в формат RSS прошло очередное обновление.

Из-за проблем с нагрузкой, пришлось практически полностью переделать правила распознавания новостных лент, в частности отказаться и регулярных выражений преобразовав их в специальные парсеры и построив вокруг них ускоряющий индекс похожий на RETree, а ещё вернее его «симуляцию» тем не менее работающую как частное решение.

Плюс теперь алгоритм обучается и единожды распознав новостную ленту, далее разбор той же страницы проходит куда быстрее.

Ну вот теперь могу сказать что определение одной новостной ленты без выгрузки веб-страницы происходит не более 2 секунд, а алгоритм полностью production ready.

Остались лишь ограничения связанные не с алгоритмами, а оборудованием, хранением записей и так далее, но они решаются по другому.

Originally published at Иван Бегтин. You can comment here or there.

Postedfrom Иван Бегтин | 0 Comments    
Filed under:
Обновление Скиура
01 декабря 09 12:49

Как многие заметили в последнее время Скиур не распознавал многие из новостных страниц.
Основной проблемой этого являлась нарастающая нагрузка на и увеличивающееся число страниц для распознавания что и приводило к таймаутам и т.д. до ненахождения информации.

Чтобы решить эту проблему Скиур был довольно серьёзно изменён внутри:
- заменён парсер на более быстрый
- оптимизированы алгоритмы работы с регулярными выражениями
- анализ страниц выделен в отдельный сервис и теперь происходит асинхронно отображением.
- страницы проверяются на обновление раз в сутки.
- улучшено распознавание кодировок

Визуально практически ничего не изменилось, за исключением того что теперь при запросе ссылки на распознавание установлен таймаут в 7 секунд.

Originally published at Иван Бегтин. You can comment here or there.

Postedfrom Иван Бегтин | 0 Comments    
Техническое. Почему Скиур иногда подтормаживает
22 июля 09 03:27

Буквально несколько дней назад удалось выявить в Скиуре довольно неприятный баг и, частично его исправить. Проблема оказалась в том что мои предыдущие предположения что сервис подтормаживает на прогоне страницы по базе регулярных выражений, конечно были справедливы, но в значительной степени эту проблему удалось решить ещё раньше введя предварительную фильтрацию выражений  по принципам которые я у себя же тут в блоге описывал. Не универсальное решение, но всё же вполне оптимальное.

Текущая же проблема оказалась не столь очевидной, но не менее актуальной. К великому моему сожалению и удивлению Python не умеет сериализовывать скомпилированные регулярные выражения. Вернее он метит такие объекты как unmashalled и, в итоге, несмотря на наличие кода который подгружал базу регулярных выражений из кэша, на самом деле оказывалось что для каждой сессии, при подгрузке базы выражений из кеша, происходила полная их перекомпиляция, а это до нескольких секунд в зависимости от общей нагрузки на сервер.

Сейчас проблема решилась выносом кода подгрузки выражений из общей части в те участки где без базы выражений никак не обойтись – распознавание веб-страницы, во всех же случаях подгрузки данных из кеша более выражения не подгружаются. Загвоздка же в том что простого решения у этой проблемы нет.

В то же время есть варианты:

- либо компилировать выражения в C или Python код и подключить как уже готовые модули

- либо разрабатывать специальный сериализатор для регулярных выражений для Python ибо готовых нет

- либо выносить всю логику распознавания в отдельный сервер/сервис и обрабатывать все страницы в несколько потоков где выражения предварительно подгружены (самый простой способ)

- либо использовать для разбора веб-страниц не Python, а язык умеющий регулярные выражения сериализовывать

- либо отказаться от регулярных выражений и использовать иные правила анализа текстов.

Часть решений сугубо технические, часть алгоритмические. Какой подход проще уже понятно, непонятно какой лучше.

Как бы то ни было, есть и плюсы. Ключевой из которых в том что запас ускорения у Скиура ещё где-то 1000% и промышленный его вариант сможет быть очень быстрым.

Originally published at Иван Бегтин. You can comment here or there.

Postedfrom Иван Бегтин | 0 Comments    
Скиур: некоторые цифры и развитие
15 июля 09 10:40

Для тех кто может быть не знает, Скиур – мой небольшой экспериментальный проект продолжает жить, правда пока его развитие несколько притормозилось, но не от того что нет идей куда развивать, а поскольку есть другие не менее интересные проекты.

Цифры

Пока же приведу некоторые цифры:

- всего из активно используемых веб страниц имеется 2441 страница в RSS каталоге

- из этих страниц извлечено 123 640 новостных записей (регулярной очистки устаревших) и около 1 миллиона записей если устаревшие записи не вычищать.

- посещаемость у сайта весьма скромная, около 300 уникальных посетителей в сутки что, прямо скажем немного, но для некоммерческого сервиса вполне нормально

- а вот посещаемость RSS лент достигает 2500 уникальных посетителей в сутки.

Текущее состояние

При этом текущая реализация имеет свои недостатки – главный из которых в необходимости регулярной чистки данных поскольку ряд сайтов, либо извергают огромный и непрерывный поток новостей, либо меняют текст и структуру предыдущих новостей при добавлении новой, чего алгоритм не отслеживает и, как итог, рассматриват старые новости тоже как новые. Это не столь большая проблема при получении таких лент ридерами, но недостаток при хранении.

Развитие

Проект я изначально задумывал как некоммерческим и он таким продолжает оставаться. Признаться я пока не окончательно решил в какую сторону его развивать – улучшения инструментариев для работы с RSS или сделать частью движка распознавания типовых форм данных (чем он и является внутри).  Пока же буду рад обсудить эту тему на iCamp Russia со всеми желающими. Хотя этот доклад и отсутствует в программе – презентация у меня будет с собой.

Originally published at Иван Бегтин. You can comment here or there.

Новое в Скиуре
14 апреля 09 11:01

Проект продолжает развиваться и недавно обновился сразу в нескольких областях:

Внешние изменения

  • появился букмарклет для запуска распознавания новостей через браузер - его можно перетащить на панель закладок по перейдя по ссылке - http://www.skyur.ru/tools/
  • появился каталог ранее распознанных RSS лент - http://www.skyur.ru/catalog/ 
  • у проекта появилось API для проверки можно ли страницу/сайта преобразовать в RSS. Само API пока закрыто, но для тех кому интресно - пример его работы можно посмотреть в каталоге ссылок http://enotpoiskun.ru/links/  где каждая ссылка была проверена на предмет наличия RSS и, при наличии, добавлено ссылкой на соответствующую страницу в Скиуре. Вскоре будет и публичное API

Внутренние изменения

  • проект прошёл серьёзную внутреннюю переработку и, если ранее использовался, движок баз данных Couchdb, то теперь все основные данные хранятся в MySQL, а Couchdb используется как вспомогательный инструмент. Соответственно это повысило скорость обработки RSS лент примерно на 20% и улучшило стабильность сервиса как такового.
  • значительно улучшилось распознавание кодировок и теперь в во многих случаях когда ранее алгоритм не срабатывал - это должно исправится.
  • добавлена поддержка дат в формате “d.m”, а то есть день и месяц. При этом автоматически подставляется текущий год.

Принимаются предложения и пожелания по дальнейшему развитию проекта. Также, если к примеру, у вас есть свой каталог ссылок и Вам бы хотелось дополнить его информацией о RSS лентах созданных Скиуром, то можно связаться со мной по ibegtin@gmail.com и договорится о бесплатном использовании API с оговоркой что оно ещё будет менятся и дорабатываться.

Кросспост из Иван Бегтин. Комментарии можно оставлять здесь или здесь.

Postedfrom Иван Бегтин | 0 Comments    
Filed under:
Букмарклет для Скиура
13 апреля 09 05:27

Для тех кому надоедает каждый раз заходить на сайт Скиура чтобы распознать новости - специальная ссылка букмарклет.  Достаточно её перетащить на тулбар и открывая страницу новостей кликать на неё - в этом случае сразу будет открыт Скиур с распознаванием страницы на которой Вы находились

Ссылка для перетаскивания: Распознать Скиуром

Пожелания/предложения/багрепорты приветствуются.

Кросспост из Иван Бегтин. Комментарии можно оставлять здесь или здесь.

Postedfrom Иван Бегтин | 0 Comments    
Filed under:
Скиур и построение объектных сайтов карт в действии
07 апреля 09 03:57

Как пример того для чего Скиур может использоваться - в каталоге сайтов Енота Поискуна сейчас 2148 ссылок посвящённым тематике закупок и присутствия российского государства в сети.

В своё время, чтобы не делать каталог просто набором ссылок, для него был создан специальный скрипт который время от времени проходил по ресурсам в каталоге и занимался обнаружением RSS лент каковых набралось чуть более 170. 

Сейчас помимо этого скрипта на каталог был “натравлен” алгоритм автосоздания RSS из Скиура. Но, тут надо оговорится что хотя и многие новости публикуются на главных страницах сайтов, тем не менее далеко не всегда. Предупреждая эту проблему на практике используется сдвоенный алгоритм логика которго в следующих действиях:

1. Вначале проверяется можно ли сформировать RSS ленту по странице сайта в каталоге

2. Если не получается, то запускается алгоритм анализа страницы (и сайта) построения объектной карты сайта и из результатов его работы извлекаются разделы относящиеся к новостям.

3. Для найденных разделов проверяется можно ли по нему сформировать RSS ленту.

4. Если RSS лента формируется, то ссылка на неё добавляется в каталог и доступна для посетителей.

В итоге, примерно 20% всех распознанных лент идут не с главных, а с новостных страниц выявленных при анализе. При этом сам алгоритм построения объектной карты сейчас, объективно, несовершенен и всё ещё в работе, поскольку времени на него нужно больше чем у меня есть, но для узких задач вроде этой вполне уже применим.  

Распознавание новостей всё ещё идёт прямо сейчас, но как промежуточные итоги могу сказать что:

1. Распознаются новости у, примерно, 65% сайтов. Это много, это даже очень много, куда больше чем я ожидал. 

2. Причинами нераспознавания остальных 35% может быть, пока предварительно, поскольку требуется ручная проверка результатов:

  • 35% случаев - нет новостей на сайте или новости подаются без дат;
  • 15%  случаев - кодировка не распознаётся, а дата содержит русскоязычную часть, например, название месяца
  • 10% случаев - не распознаётся структура сайта. Обычно Скиур автоматически разбирает HTML и понимает как располагаются новостные блоки и как их собрать в RSS ленты, но есть случае когда этого сделать не удаётся;
  • 15% случаев - неизвестный формат даты. Эта проблема быстро решается за счёт снижения скорости распознавания и именно по этой причине не решена в онлайновой версии алгоритма;
  • 20% случаев - новости на сайте есть, но не на главной странице, а на новостных страницах, а алгоритм построения объектной карты эти разделы не нашёл;
  • 5% случаев - сайт недоступен или отвечает слишком долго (более 30 секунд).

Основной недостаток всего этого процесса - производительность. Объективно много времени уходит на распознавание новостных блоков, их выравнивание и на построение объектных карт. Причём здесь оптимизация имеет три составляющие:

1. Техническая - изменение библиотек разбора HTML, оптимизация кода и т.д.

2. Алгоритмическая - применение уже накопленных наработок для ускорения распознавания дат. Частично это уже применяется, но, тут ещё требуются исследования и довольно затратные

3. Промышленная - сбор метаданных о процессе анализа и предварительное обучение алгоритма с построением шаблонов распознаванием и с динамической перестройкой шаблонов при выявлении несоответствий. 

Плюс в процессе анализа сайтов определяются остальные их фичи - вроде ключевых разделов, коммерциализация, CMS, технология на которой он сделан, но это уже совсем другая история.

Пока что Скиур остаётся некоммерческим, но уже выходит из статуса экспериментального, а если походить по каталогу, то можно увидеть ссылки RSS лент ведущие на Скиур.

Кросспост из Иван Бегтин. Комментарии можно оставлять здесь или здесь.

Скиур. Обновления
05 апреля 09 11:02

Скиур, экспериментальный проект по извлечению новостей из HTML обновился. Основные изменения были внутренними, но кое что будет заметно и пользователям сервиса:

  • вместо Couchdb теперь используется связка Couchdb + MySQL. Couchdb, конечно, прекрасный продукт, но производительность его пока оставляет желать лучшего. Поэтому иерархические данные, такие как веб страницы краулера хрянятся в Couchdb, а записи и ленты в MySQL;
  • теперь доступен каталог RSS лент - перечень текущих успешно распознаваемых Скиуром лент;
  • небольшие улучшения производительности;
  • добавлена поддержка формата даты “dd.mm” без указания года, при этом год автоматически проставляется текущий.

И существующие баги/особенности:

  • выявилось что в некоторых случаях Скиур не определяет автоматически структуру веб страницы даже когда распознаёт даты. Например, так не распознаются даты на странице Росгидромета - http://www.meteorf.ru/default.aspx. Причина пока неясна, но обязательно выяснится. 
  • пока не решена окончательно задача по распознаванию всех возможных видов дат;
  • примерно в 3% случаех кодировка веб страницы не распознаётся. 

Кросспост из Иван Бегтин. Комментарии можно оставлять здесь или здесь.

Метрики для анализа HTML
03 апреля 09 10:58

 

Я ранее неоднократно писал что при анализе HTML (да и любых других неструктурироанных/полуструктурированных данных) очень важен правильный подбор метрик для анализа. Часть из этих метрик и многие другие используются в Скиуре и ещё ряде алгоритмов анализа HTML о которых я ранее упоминал.

  Уровень тэга (tag level) - это характеристика тэга веб страницы определяющая глубину его нахождения в дереве тэгов начиная от корневого тэга html.

  Сдвиг тэга (tag shift) - это характеристика тэга веб страницы определяющая его позицию в списке потомков его родителя

  Уровень схожести пути тэгов (tags path similarity) - является характеристикой отношений двух тэгов когда в качестве оценки используется оценка числа тэгов находящихся от каждого из сравниваемых тэгов до общего родителя.

  Уровень схожести тэгов (tag similarity) - является характеристикой отношения двух тэгов основанной на сравнении их естественных  и назначенных атрибутов в соответствии с моделью сравнения.

  Глубина тэга (tag deepness) - определяет максимальную глубину тэга по совокупности всех его потомков

  Обратный путь (reversed path) - путь от тэга к его родителю в обратной нотации (или через xpath - parent)

  Путь сдвига (shift path) - путь от родительского тэга до выбранного основанный на сдвиге тэга потомка от родительского.    Путь сдвига записывается в виде массива цифр.   

  Число вхождений ключевых подтэгов  - это число вхождений в тэг таких тэгов как a, h1, strong и иных. Метрика может быть совокупной по всем типам ключевых тэго или быть преставленной в виде группы метрик.
  Положение тэга в тексте страницы (layout position) - это позиция тэга в тексте страницы при отображении его браузером. 
  Уникальность тэга -  это наличие id, наличие уникальных значений class, style или иных; наличие уникальных атрибутов у близлежащих тэгов. 

Кросспост из Иван Бегтин. Комментарии можно оставлять здесь или здесь.

Работа с данными с нечеткой структурой
01 апреля 09 11:32

Прежде чем продолжить рассуждения, а что же такое данные с нечеткой структурой? Начну с примера.

При преобразовании HTML в RSS, как, например, это происходит в Скиуре, очень часта ситуация когда структура данных меняется. Это может быть из-за того что немного подкрутили верстку или, к примеру, у новости появилась метка которая при обучении на данных сайта не встречалась, но была с самого начала предусмотрена, например, “новое” или ещё что-либо не являющееся сменой CMS или реорганизацией структуры сайта, но затрагивающее HTML структуру ленты новостей.

Сейчас, чтобы обеспечить обработку новостной ленты  в любом случае, лента распознавание структуры Скиур производит каждый раз “на лету” полностью игнорируя любые ранее накопленные данные. Это позволяет обеспечить высокий уровень распознавания, ограниченный лишь числом поддерживаемых форматов дат и времени, но и накладывает ряд ограничений в числе которых:

  • более долгий процесс извлечения структурных блоков;
  • невозможность ручной корректировки шаблона распознавания в виду его отсутствия.

Это пример, ситуации и решения когда источник данных находится вне управления и возможности воздействия системы потребляющей его информацию и необходим ряд мер по приведению его к нормализованному виду за счёт предварительного или динамического распознавания структуры данных и приведение распознанной структуры к хранимых данных.

В случае новостной информации - это довольно просто и даже очень просто, поскольку структура транслируемых новостей давно уже определена в спецификациях RSS/ATOM, и то при распознавании достаточно 10% от специфицированных полей.  Кроме того отслеживание структурных аномалий для частного случая - это однократная и решаемая задача. Поиск решения для новостной информации закодированной в HTML у меня занял пару месяцев - в основном на анализ и систематизацию структуры данных в источниках. 

А вот в случае условно неограниченного числа данных различных по структуре, форме размещения/публикации, способу хранения и так далее, ситуация отличается в корне. Без автоматизации процесса распознавания, без формализации поиска отклонений в структуре данных, без совмещения динамического формирования шаблонов с шаблонами уже накопленными - решить эту задачу невозможно. Фактически полноценное решение требует системы близкой по логике к ETL, но отличной в том что в отличии от ETL источники данных там не фиксированы, структуры данных могут меняться, новые источники могут добавляться даже при неполном описании приходящих из них данных, а все ошибки в обработке яляются не предметом приостановки процесса импорта или игнорирования, а обучения.  При этом, разумеется, необходимы специальные методы распознавания структур данных, решение проблемы производительности использования больших баз регулярных выражений и так далее.  

К вопросу о том зачем всё это нужно? Это нужно, поскольку сейчас процесс организации данных в Linked Data и иных связанных машиночитаемых формах - весьма долгосрочен. В каждом случае - это связано с долгим ожиданием когда владелец/контролёр источника данных решит представлять его в более удобной форме. При том что есть множество энтузиастов которые могут оцифровать тот или иной срез данных - как, например, статистические данные США или России, в машиночитаемую форму - тем не менее систематизация источников данных позволит обеспечить доступность данных на потоковой основе. 

Или, говоря иначе, ненужно ждать пока государство начнёт отдавать данные в RDF или же общедоступные данные станут доступными в виде микроформатов или тех или иных срезов - необходимо создавать механизмы и программные продукты автоматизирующие процесс преобразования данных из Legacy форм в формы пригодные к последующей интеграции. 

Всё это к вопрос о том как лично я вижу data.gov.ru  примерно через пару лет, разумеется, в случае его появления.

Кросспост из Иван Бегтин. Комментарии можно оставлять здесь или здесь.

Алгоритмы. Регулярные выражений. Пример графика индекса
14 января 09 12:02
Как пример, промежуточных результатов, для построения RE-индексов под катом график и краткое описание индекса. Пример на графике это результаты распределения выражений в 3-х уровневом иерархическом индексе с использованием 3 групп метрик - двух по 5 метрик Read More...
Postedfrom Иван Бегтин | 0 Comments    
Скиур - развитие и регулярные выражения
11 января 09 12:18
Хотя я давно не писал про Скиур , который экспериментальный ресурс и алгоритм по преобразованию веб-страниц в RSS, тем не менее не забыл о нём. Сейчас основная загвоздка в его развитии алгоритмическая поскольку несмотря на то что мне удалось частично Read More...
Postedfrom Иван Бегтин | 0 Comments    
Скиур. RSS ленты новостей университетов
18 ноября 08 02:42
Для тех кто хочет получать новости по своему институту примеры того как можно использовать дя этой цели Скиур . Московский государственный университет - http://www.skyur.ru/?url=http%3A%2F%2Fmosgu.ru%2Fpress-tsentr%2Fnews_university%2F РГАУ-МСХА - http://www.skyur.ru/?url=http%3A%2F%2Fwww.timacad.ru%2F Read More...
Postedfrom Иван Бегтин | 0 Comments    
Filed under:
More Posts Next page »

This Blog

Tags

Archives

Syndication