Об особенностях направленного сбора информации
Я ранее не раз поднимал вопрос о направленном индексировании здесь: http://ivan.begtin.name/2008/10/14/направленное-индексирование-и-верти/ и здесь http://ivan.begtin.name/2009/04/08/информационная-архитектура-наоборот/
В общем-то это именно та задача которой в разных формах я в последнее время сталкиваюсь постоянно,
Предположим есть группа сайтов с которых необхдимо собрать некую информацию. К примеру, пройтись по сайтам всех периодических печатных и собрать с них: код ISIN, ФИО главного редактора, адрес редакции и реквизитов ИНН/КПП/ОГРН если они доступны. Например, это может быть нужно для задачи обогащения информации — составления полного списка сайтов и сопоставления его с базой номеров ISIN.
Так вот эта задача, сравнительно простая по постановке решается довольно просто при наличии списка названий изданий. Достаточно проверить основные каталоги сайтов, поискать по названиям в поисковиках и обойти сайты вручную выписав информацию. Эту довольно рутинную работу один человек может выполнить за один день, а найти человека на фрилансе не велика проблема. Как бы то ни было эта задача имеет простое нетехнологическое решение.
А теперь поговорим о решении технологическом. Технологический подход заключается в том чтобы поиск и обход необходимых сайтов осуществляла программа/робот, а не человек. Также программа должна автоматически найти всю нужную информацию и заполнить необходимые поля в таблице для данного объекта анализа. Технологическое решение заведомо проигрывает решению задачи человеком, если только число сайтов идёт не десятки/сотни, а на тысячи. Но вот если число сайтов исчисляется тысячами, то тут решение основанное на людях уже не подходит.
Технологическое же решение состоит из решения следующих подзадач:
1. Определить носитель информации — искомый сайт
2. Найти на сайте контейнер
3. Определить форму контейнера
4. Разобрать контейнер и извлечь из него необходимые данные
Подробнее по каждой подзадаче:
1. Определить носитель информации
Прежде чем информацию извлечь необходимо найти сайт где она присутствует. И здесь изначальная постановка задачи может варьироваться в рамках одного из 3-х случаев:
- сайт известен заранее, например, если в начальном наборе данных он присутствует
- сайт изначально неизвестен, но есть ключевая текстовая информация (например, название организации или информационного продукта)
- сайт изначально неизвестен как и текстовое описание. Есть лишь ряд признаков определения таких сайтов из общей группы.
В первом случае всё очень просто. Искать сайт ненужно, он заранее известен.
Во втором случае задача сводится в сопоставлению известного текста с искомым сайтом. Здесь помогают каталоги сайтов и API поисковых систем.
В третьем случае ситуация наиболее сложная — необходимо перебрать все ресурсы обладающие необходимыми признаками. В некоторых случаях могут помочь поисковые машины, но чаще это задача по анализа сайтов по списку в поиске искомых.
2. Найти на сайте контейнер
Контейнер — это суть веб-страница или файл содержащий необходимую информацию. Иногда этих страниц больше чем одна. Поиск контейнера суть локализация наиболее вероятных участков в общем массиве информации где может находится искомое. Главная задача его поиска в том чтобы далее анализировать не весь сайт, а только те участки где наибольшая вероятость найти нужную информацию
3. Определить форму контейнера
В условиях когда на 100 процентов неизвестно как именно представлена информация, но есть понимание (и реализация понимания) в том как обычно она представляется, то определение формы контейнера заключается в том чтобы понять как эта информация представлена — таблицей, списком, разбросана по странице и так далее и тому подобное.
4. Разобрать контейнер и извлечь из него данные
Финальная часть когда контейнер найден извлечь из него информацию. Осуществляется это HTML парсером или разбором найденного файла — в зависимости от ситуации.
—
А теперь собственно нюансы реализации. Главное то что практически все эти задачи дробятся ещё более простым:
- для того чтобы найти контейнер информации есть два основных подходов: определение контейнера по его типу и по ключевым меткам. Оба этих случая требуют понимания навигационной структуры сайта — где главная страница, где страница описания, страница контактов и так далее. Определение навигационной структуры сводится к двум алгоритмам:
- определения навигационных меню сайта — главного и вспомогательных
- классификация внутренних ссылок сайта
- в свою очередь вопрос классификации внутренних ссылок требует понимания их структурной модели. Ответов на вопросы: используются ли человекочитаемые ссылки, каков уровень вложенности, как навигацию где страницы подгружаются через GET запросы и так далее. В результате алгоритм классификации внутренних ссылок работает гораздо эффективнее при определении этой структурной модели. Определить её возможно как динамически, накоплением базы внутренних ссылок сайта, так и определением CMS сайта.
- определение формы контейнера упирается также в две подзадачи:
- локализация значимого участка страницы — блока в HTML где содержатся искомые данные
- определение формы представления данных в этом блоке.
- локализация значимого участка может быть осуществлена несколькими способами: по ключевым навигационным и стилевым меткам в разметке страницы, по выявлению значащего блока страницы путём последовательного сравнения и анализа нескольких других страниц сайта и определение блоков с изменяющимся содержимым и по ключевым меткам в тексте, например, поиском по ключевым словам и регулярным выражениям в тех случаях когда известна ключевая информация о метках.
- определение формы представления данных это то что уже необходимо превратить из неструктурированного блока информации в структурированное описание. Я именно про это писал ранее неоднократно про то есть конечное число способов представления информации и вполне можно их определять как в контексте, так и вне его. Неполный перечень форм это: таблица, несколько таблиц, различные одностраничные списки, многостраничные списки, неформатированный текст.
Зачем всё это нужно?
Главная причина в том что подавляющее число вертикальных поисковиков по форумам, объявлениям, вакансиям полноценно работают только в условиях доступности машиночитаемой информации или ограниченно числа больших источников для которых можно написать и поддерживать парсеры. А вот проблема сбора структурированной информации из тысяч и десятков тысяч источников пока не решена.
Ну и могу сказать что решением как раз этой задачи я и занимаюсь.
Поделиться в соц. сетях
-
Санитар
-
http://ivan.begtin.name Ivan Begtin
-
Санитар
-
http://ivan.begtin.name Ivan Begtin
-
Санитар
-
http://catismad.com/ madcat
-
http://ivan.begtin.name Ivan Begtin
-
https://www.testlab2.com madcat
Microsoft Translate
Рубрики
- BI (3)
- CEP (1)
- IBM (13)
- Novell (6)
- WTF (1)
- apple (3)
- blogging (61)
- couchdb (3)
- data.gov.ru (250)
- datasets (104)
- diagramming (11)
- e-Government (927)
- eGov (946)
- google (33)
- gtd (5)
- links (65)
- linux (19)
- microsoft (47)
- not so wtf yet (3)
- opengovdata.ru (198)
- opensource (56)
- productivity (2)
- saas (4)
- second life (2)
- security (6)
- semweb (15)
- sun (13)
- virtualization (16)
- vista (2)
- web (223)
- web 2.0 (108)
- wikileaks (1)
- yahoo (11)
- Без рубрики (4)
- Енот Поискун (17)
- Общественное благо (12)
- алгоритмы (73)
- алгоритмы (51)
- аналитика (19)
- антисео (5)
- бывает и такое (8)
- виртуализация (21)
- вопросы (20)
- госзаказ (172)
- идеи (29)
- из жизни (95)
- инновации (27)
- интересные проекты (7)
- информация (108)
- книги (2)
- метапост (1)
- открытое государство (51)
- открытые данные (10)
- поиск (93)
- почти несерьёзно (16)
- размышления (127)
- расшифровка реальности (10)
- робототехника (1)
- руководство проектами (3)
- скиур (19)
- социальные сети (45)
- социоранк (9)
- стандарты (22)
- стоит почитать (21)
- футуристика (1)
- электронное государство (945)
- юзабилити (25)
- юмор (14)
Метки
антиспам госзакупки гослюди госуслуги датасеты дебаты извлечение информации инновации кузьминов метаданные навальный открытое государство открытые данные поиск почти без иронии публичность раскрытие информации расшифровка реальности систематизация социоранг социоранк стартапы форматы файлов футуристика #belyh #rucamp #socamp 94-ФЗ antispam apps4russia icamp icamp2009 md5 ogp open government searchme semweb sha1 ssl usability






