РЕАЛИЗАЦИЯ АЛГОРИТМА ДЛЯ ИЗВЛЕЧЕНИЯ ТАБЛИЧНЫХ ДАННЫХ ИЗ ИНТЕРНЕТА ПО КЛЮЧЕВЫМ ЗАПРОСАМ - Студенческий научный форум

V Международная студенческая научная конференция Студенческий научный форум - 2013

РЕАЛИЗАЦИЯ АЛГОРИТМА ДЛЯ ИЗВЛЕЧЕНИЯ ТАБЛИЧНЫХ ДАННЫХ ИЗ ИНТЕРНЕТА ПО КЛЮЧЕВЫМ ЗАПРОСАМ

 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
Введение

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

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

  2. аналитическая обработка данных, направленная для выявления новых, практически полезных знаний,

  3. вывод результатов обработки в форме, удобной для восприятия человеком.

В данной работе речь пойдет о решении задачи 1 этапа – этапа загрузки данных из источников, опубликованных в Интернет.

Для того чтобы аналитическая система могла получить достоверные результаты, ей нужен большой объем исходных данных, представляющих интерес с точки зрения решения поставленной задачи анализа. Проблема поиска и получения данных обычно решается простым способом: аналитик находит данные либо в Интернете, либо в локальных источниках и подготавливает их для того, чтобы аналитическая система могла их правильно «понять»; далее запускается аналитическая система, которая на основе найденных аналитиком данных, формирует результат.

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

Для разработки алгоритма автоматического извлечения табличных данных необходимо решить следующие задачи:

  1. Анализ различных форматов, в которых табличные данные публикуются в Интернет.

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

  3. Проектирование программы автоматизации извлечения данных из таблиц, представленных в Интернет в различных форматах.

  4. Разработка алгоритмов реализации основных операций, направленных на решение поставленной задачи.

Задача интеллектуальной обработки текстовых данных и загрузки различных данных из Интернета рассматривается и прорабатывается уже давно. Написано немало алгоритмов для извлечения данных из гетерогенных источников в Интернет, например, e-mail адресов или других контактных данных владельцев сайтов. Существуют также алгоритмы для выделения информативных таблиц или получения ссылок на сайты, которые выдает поисковая система по некоторому запросу. Некоторые из полученных ранее результатов будут использованы в данной работе [1].

Описание приложения

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

Итогом работы программы будет данные, представленные в таблице в одном из форматов (txt, Excel, Doc). Конкретный формат файла должен выбираться пользователем с помощью средств настройки системы. Каждая найденная таблица должна размещаться в отдельном файле. В документе формата .txt данные будут разделены некоторыми, заранее определенными разделителями. Ниже представлены рисунки, которые отображают результат работы программы в 3 форматах.

Рис.1. Данные в формате Excel

Рис.2. Данные в формате Word

Рис.3. Данные в формате .txt с разделителем (Табуляция)

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

Рис.4. Форма для ввода ключевых слов для поиска

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

Рис. 5 Меню настройки

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

Этапы работы программы

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

  1. Сделать запрос в Яндекс с ключевыми словами, введенными в форму, и получить в качестве результата массив ссылок, которые будут получены в результате работы поисковой системы Яндекс.

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

  3. В зависимости от выбранных пользователем настроек программы привести найденный код таблицы из полученных на втором этапе файлов к нужному формату данных (Excel, Word или txt).

Рассмотрим более подробно порядок выполнения перечисленных выше этапов.

Этап 1. Работа с поисковыми системами

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

Для того чтобы сделать это, воспользуемся языком C# и с помощью стандартных средств платформы .NET возьмем код страницы и присвоим его некой строковой переменной. В Яндексе запрос обрабатывается следующим образом, например при вводе в форму строки: ”Поиск информации в интернете”, поисковый робот обрабатывает ее и создает следующий URL (рис.6).

Рис.6. Поисковый запрос в Яндексе

В этой строке нас больше всего интересует параметр text, так как он отвечает за поисковый запрос.

Таким образом, чтобы нам задать запрос к яндексу через язык программирования C# нам нужно взять код страницы:

http://yandex.ru/?text=Поиск+информации+в+интернете

После выполнения функции извлечения кода мы в переменную строкового типа можем положить код страницы, которая выдаст результат поискового запроса [2].

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

При анализе кода страниц, которые выдает поисковая система, была замечена закономерность (рис. 7), что ссылки на страницы в поисковой выдаче идут после следующих символов:” b-serp-item__title-link" href=” [3].

Рис.7. Код страницы поискового робота с выделенными ссылками

Таким образом, извлечь из кода ссылки не составит особого труда. Для этого мы берем и считываем посимвольно ссылку до символа “Закрывающая кавычка”. Таким образом, мы получили массив ссылок на сайты в поисковой выдаче и на этом первый этап закончен.

Этап 2.Выделение релевантных таблиц на найденных страницах

На второй этап работы приложения мы передали массив со ссылками, полученными из кода страницы выдачи Яндекса. Таким образом, мы можем перейти к обработке страниц.

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

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

Рис.8. Внутренние таблицы

Для реализации этого алгоритма мы будем искать в коде страницы фрагмент “”, открывающий тэг таблицы, который говорит о появлении новой таблицы, и запишем номер его позиции (порядковый номер символа в строке) в новый массив. И далее начиная с найденной позиции, считываем код страницы далее, пока не найдем фрагмент (закрывающий тэг таблицы). Если после открытия тэга table мы находим снова открывающийся тэг table, значит предыдущая таблица не внутренняя. При нахождении внутренней таблицы мы записываем начальную позицию в текстовом документе, то есть позицию, с которой начинается код таблицы и позицию конца кода данной таблицы. На выходе имеем массив с кодами начала и конца внутренних таблиц.

После этого, ищем тэг CAPTION, который является описательным для таблицы и, если есть совпадения у поискового запроса и у описания таблицы, то эта таблица нам подходит, поэтому мы создаем текстовый документ(txt) и заносим туда ее код.

Если совпадений у тэга CAPTION с ключевым запросом нет или он вообще отсутствует, то находим ближайшие 100 символов от начала таблицы и 100 символов после конца и ищем в нем подстроки “Таблица” или “Данные”.

Если эти подстроки мы находим, то можно достать описание этих таблиц. К примеру, подпись у таблицы вида “ Данные о росте ВВП России с 2000 года” поможет нам определить семантику таблицы.

Если описания таблиц нет или совпадений не обнаружено, то нужно брать контент из первого столбца и первой строки таблицы, так как в них может храниться информация о таблице и если мы находим в контенте совпадения с поисковым запросом, то мы создаем текстовый документ (txt) и заносим туда ее код.

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

Этап 3. Приведение к нужным форматам

На 3 этап нам передаются текстовые документы с кодами таблиц в формате HTML, т.е. с теговой разметкой. На их основе создаются двумерные массивы , в которые непосредственно заносятся данные и заголовки таблиц. На основе этих матриц средствами платформы .NET будет реализуется импорт в любой из форматов (Excel,Word,txt).

Заключение

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

В планы по развитию данной системы входит ее реализации на платформе .NET и с использованием языка PHP, доработка алгоритмов синтаксического сопоставления ключевых слов и описания таблиц и реализация извлечения данных из документов других форматов (в частности doc, pdf и xls), расположенных в Интернете.

В перспективе возможности системы могут быть расширены за счет реализации средств интеллектуального поиска информации с использованием различных методов (в частности, основанных на использовании онтологий)[4].

Библиографический список
  1. Арсенин В.П. Парсер на PHP [Электронный ресурс] URL: http://www.webcoder.kz/pishem-parser-php (Дата обращения: 1.02.2013).

  2. Мухтаров С.В. WebRequest – класс .NET [Электронный ресурс] URL: http://msdn.microsoft.com/ru-ru/library/system.net.webrequest.aspx (Дата обращения: 3.02.2013).

  3. Для тех, кто делает сайты сам [Электронный ресурс] URL: http://htmlbook.ru/ (Дата обращения: 10.01.2013).

  4. Ланин В.В., Лядова Л.Н., Мальцев П.А. Технологии сбора и анализа информации для исследовательского портала. 2010 г. 6 c.

Научный руководитель: доцент кафедры информационных технологий в бизнесе НИУ ВШЭ – Пермь, к.ф.-м.н., доцент Л.Н. Лядова

 

Просмотров работы: 1721