Автоматический геокодинг новостной информации
А.В. Комяков
1. Постановка задачи и актуальность
В связи с постоянным ростом количества информационных ресурсов предоставляющих актуальные новости, возрастает и нагрузка на аналитические центры по их обработке. В настоящее время новостная информация в Интернете составляется, анализируется и обрабатывается практически без применения средств автоматизации. То есть все имеющиеся новости проходят через аналитические центры, где сортировать и отбирать их по каким-либо признакам приходится человеку. Потребность в создание средства автоматического анализа текста стоит особенно остро. Сейчас в распоряжении пользователей Интернета имеется несколько сервисов, производящих сбор и геокодирование новостной информации (напр. Yahoo Local Maps). Цель такого сервиса анализировать и систематизировать новостную и другую информацию по географическим названиям или объектам.
Актуальность данной работы заключается в том, что на русском языке подобных сервисов не существует, а все известные ресурсы, отображающие информацию на карте, производят анализ информации вручную (напр. Яндекс Новости).
Целью данной работы является создание системы «Автоматического геокодирования новостной информации» и отображение ее на карте с использованием сервиса Google Maps.
Для реализации поставленной задачи необходимо выполнить следующие шаги:
• Провести анализ способов поиска географических названий в тексте
• Разработать систему для загрузки новостной информации с сайтов новостей
• Разработать систему анализа текстов на русском языке и выделения в них географических названий
• Разработать систему отображения новостной информации на карте Google
2. Анализ существующих технологий
Геокодинг - процесс нахождения широты и долготы по введенному адресу. В моей работе был использован геоинформационный ресурс Google, который позволяет нанести на карту точки с полученными координатами.
В роли геоинформационной системы будет выступать веб-приложение, которое должно получать новостную информацию, геоко-дировать ее и отображать на карте.
В этом приложении должны быть реализованы следующие функциональные возможности:
• Добавление в базу новых сайтов новостей
• Автоматическое обновление новостной информации
• Обработка текста новостей и выделение в них географических названий
• Отображение новостей на карте с возможностью их фильтрации по району и времени
• Поиск и загрузка новой информации должна происходить в фоновом режиме
В моей работе были проанализированы технологии и принципы доступа к данным, а также поиска слов на русском языке и инструментарий для создания Веб - картографического сервиса. Перечислим вкратце каждую из этих технологий:
118. RSS ленты. Эта технология позволяет легко и быстро получать актуальную информацию с, практически любого, Интернет ресурса;
119.Поиск подстроки в строке уже достаточно изучен чтобы пользоваться имеющимися алгоритмами. Имеется ряд разработок в области поиска слов в тексте на русском языке с учетом морфологии. Основываясь на поставленной задаче, предлагается выбрать самый простой и в устройстве, и в реализации способ учитывающий морфологию слова - стемминг. Стемминг. - это алгоритм выделения основы в слове без использования словаря, а лишь опираясь на заданные правила языка. В русском языке это означает отбрасывание окончаний и суффиксов. Однако следует отметить, что использование других подходов не исключается, а выбор в пользу этого способа сделан лишь для того, чтобы получить результат с наименьшими затратами;
120. Картографические сервисы предоставляют необходимую информацию и инструменты для геокодирования и отображения результатов на карте. Веб-картография, сегодня, для многих стала обыденной, но полнота отображаемых на карте данных не всегда достаточна для пользователя.
Таким образом, перечисленные средства можно положить в основу системы по поиску географических названий в тексте и отображению полученных результатов на карте. Создание подобного средства автоматизации это еще один шаг на пути к более доступному и удобному использованию ресурсов Интернета.
3. Проектирование и разработка программы
3.1. Эскизный проект разрабатываемого ПО
Рассмотрим создаваемое приложение как совокупность отдельных элементов (модулей) и опишем их функционирование в отдельности и в составе системы. Каждый элемент будет выполнять свои функциональные задачи, используя конкретные технологии описанные выше.
Создаваемую систему можно разделить на следующие компоненты (рис. 1):
Рис. 1. Общая схема системы
Серверная часть для обработки запросов от пользователей на выдачу геокодированных новостей. В состав этого модуля входят две подсистемы:
Загрузчик новостей из RSS лент. Этот модуль осуществляет обновление новостей из заданных заранее мест (адресов URL). Новости приходят в формате RSS, что значительно упрощает их разбор. В результате работы данного модуля в БД формируется (обновляется) таблица с новостями и необходимой дополнительной информацией. Модуль поиска географических названий в тексте, который осуществляет анализ всех ранее загруженных, но не проверенных новостей. В результате работы данного модуля новости проверенные им помечаются в базе, чтобы в следующий раз они не проверялись повторно. В случае успешного поиска создается таблица с новостями, в которых было определено географическое место (в данном случае улица Москвы).
• Клиентский модуль с отображаемой картой системой обновления списка геокодированных новостей с сервера. Предназначение этого модуля заключается в отображении новостей на карте Google. Для этого полученные от сервера адреса каждой новости геокодируются и для удобства просмотра наносятся на карту Москвы. Таким образом, перенеся функцию геокодирования на сторону клиента сервер избавится от дополнительной нагрузки.
Рис. 2. Схема функционирования системы
3.2. Алгоритм поиска географического названия
В связи с тем, что охватить весь спектр названий в своей работе практически не возможно, для исследования выбран самый актуальный и наиболее насыщенный новостями регион, а именно город Москва.
Для того чтобы разработать алгоритм и понять как программа должна выделять в тексте географические названия необходимо проанализировать ряд текстов с реальными новостями опубликованными в Интернете.
№ п/п Новость Адрес Слово
1 В буфетном зале мэрии Москвы на Тверской улице появился автомат по продаже красной икры. На Тверской улице улице
2 Жильцы дома №24, корп. 1 по улице Ключевой в московском районе Братеево продолжают бороться против образования в их доме незаконного ТСЖ. Дома №24, корп. 1 по улице Ключевой улице
3 13 мая в Москве в одной из квартир по улице Херсонская обнаружено тело женщины, 1926 года рождения, с признаками насильственной смерти. По улице Херсонская улице
4 В Москве загорелся пассажирский автобус "Икарус". Пожар произошел на северо-западе столицы на улице Исаковского. на улице Исаковского улице
Разберем более тщательно представленные тексты, в них выделены пять слов-признаков, по которым можно определить наличие адреса в тексте
Для удобства разделим их на группы:
1 уровень - название города (Москве);
2 уровень - вид улицы (улице);
3 уровень - название улицы (Исаковского),
4 уровень - слово указывающее на номер дома (дома),
5 уровень - слово указывающее на номер корпуса (корп.).
При наличие первого уровня, можно сделать вывод, что вероятно имеется следующий уровень (2-ой - вид улицы), а при наличии второго -третий и так далее. Важно понять, что обратная последовательность не будет соблюдаться, т.е. если встретится слово 4 уровня (дом) то совсем не обязательно встретится слово 2-го (улица) и уж тем более 3-го уровня (Исаковского).
Таким образом, алгоритм будет представлять своего рода фильтр, отсеивающий сначала все тексты со словами 1 -го уровня, затем 2-го и так далее. В итоге должны остаться только интересующие нас новости с адресами.
Для реализации этого алгоритма необходимо создать под каждый уровень рабочий словарь и определить шаблонные правила построения адреса из этих слов.
Получится перечень следующих словарей:
1 - словарь возможных названий города,
2 - словарь видов улиц (метро будем считать как вид улицы)
3 - словарь названий улиц (станций метро).
Поиск номера дома из рассмотрения исключается ввиду редкого упоминания в рассматриваемых текстах. В последствии и этот уровень адреса не сложно научиться выделять.
Вернемся к правилам написания адреса в текстах новостей. Самый простой вариант когда адрес не видоизменен.
Например:
Москва улица Исаковского.
В данном случае имеются слова из всех словарей, т.е. Москва - словарь названий города, улица - словарь видов улиц и наконец Исаковского - словарь названий улиц указанного типа. Определить такой адрес в тексте не составляет труда. Однако в таком виде адрес в тексте встречается очень редко. Очевидно, что он будет окружен другими словами, определяющими суть новости, а сам адрес будет видоизменен в соответствии с правилами русского языка.
Тогда это будет выглядеть так:
Сегодня в Москве произошло ... не далеко от улицы Исаковского
Следует заметить, что при такой записи сложно формализовать вид адреса, так как слово записано в одной из своих лексических форм. Для точного определения лексем слова необходимо иметь полный словарь языка. Для того чтобы этого избежать воспользуемся ранее описанным алгоритмом выделения основы в слове без использования словаря, т.е. алгоритмом стемминга.
Этот алгоритм на входе получает любое слово, а на выходе возвращает не полную основу этого слова, т.е. слово без окончания и суффикса. Для данного примера основы слов будут иметь вид:
Москв - город;
Улиц - вид улицы;
Исаковск - название улицы.
Осуществив последовательный поиск таких слов с дописанным в начале пробелом, мы наверняка найдем искомое предложение с небольшой вероятностью ошибки .
Исходя из проведенного анализа, можно составить словари названий интересующего города, в данном случае это город Москва.
к1 паше
1 москв
2 москов
Затем сформируем словарь (Таблица 3) для определения в тексте объектов типа "Вид улицы". Словарь будет содержать основу слов «Вид улицы». Полная форма слов будет содержаться в таблице с названиями улиц.
Таблица 3. Словарь видов улиц города
к1 паше
1 улиц
2 проезд
3 просек
4 переул
5 проспект
6 шоссе
7 площад
8 набережн
9 бульвар
10 аллея
11 тупик
При осуществлении поиска представленный словарь позволит с определенной вероятностью утверждать, что рядом с этим словом находится и название соответствующей улицы. Однако само название определяется по контекстным правилам, и может состоять из одного или нескольких слов, а может и вообще отсутствовать в анализируемом предложении. Например:
Поулацам Москвы прошла военная техника...
В таком случае необходимо ограничить область поиска слова только следующим и предыдущим словом.
Итак, остальная информация, непосредственно названия улиц, является справочной. Достоверность и полнота ее напрямую влияет на эффективность поиска. Сделав выбор в пользу столичного региона мы тем самым облегчили себе задачу по составлению базы улиц, так как этот регион самый востребованный и найти его базу улиц не составит большого труда. В моей работе была использована БД классификатора
КЛАДР 6.0, с официального сайта «ГНИВЦ ФНС России» (http://www.gmvc.ru/Documentaspx?id=1571). Там же можно найти информацию по другим городам России. В перечень улиц также включены станции московского метро как альтернативный способ определения места.
Полученный список улиц необходимо разбить на группы в соответствии с видом улицы.
Таким образом получится следующая таблица (Таблица 4) со списком улиц и указанием ее типа. В последующем это сократит время на выборку по конкретному типу.
Таблица 4. Список улиц города Москва
¡и пате_$Иог1 Ш1_пате §еотеоги А^теоМ
1 Искры ул. улица Искры 1 Искры
2 Серп и Молот завода пр. проезд Завода Серп и Молот 2 Серп
3 Абакумова Егора ул. улица Егора Абакумова 1 Абакумова
4 Абельмановская Застава пл. площадь Абельмановская Застава 7 Абельмановская
5 Абельмановская ул. Абельмановская улица 1 Абельмановская
Как видно из приведенного примера создано отдельно поле (Агз^огф в котором указано первое слово в названии улицы. Таким образом, поиск будет осуществляться только по этому первому слову. Сделано это опять же для того, чтобы уйти от лингвистического анализа и создать готовый к работе инструмент. В связи с этим, несомненно, возрастут ошибки неверного определения адреса, но следует отметить, что эта мера временная и легко устранима, путем добавления списка всех слов из которых состоит название улицы.
Рис. 3. Внешний вид разработанного вэб приложения 3.3. Демонстрация работы программы
В результате проделанной работы был создан следующий Интернет ресурс (Рис. 3)
После входа на сайт программы происходит автоматическое нанесение на карту всех новостей с адресом, имеющихся в соответствующей таблице на сервере.
Загрузка новостей производится в фоновом режиме и незаметно для пользователя. Страница не перегружается, а по истечении определенного периода времени появляются новости на карте. Это достигается применением асинхронных запросов к серверу с помощью технологии AJAX/
Пользователь имеет возможность просматривать любую новость путем простого наведения мыши на маркер с новостью. В появившемся окне ему показываются следующая информация о новости:
• заголовок новости, он же является ссылкой на полную статью новости на сайте источнике;
• краткое содержание новости, по этому содержанию и проводился анализ новости;
• источник новости(название сайта в виде ссылки), с которого она была загружена;
• дата публикации указанная автором.
Рис. 4. Приближение новости на карте 4. Заключение
В процессе выполнения работы были получены следующие результаты:
• произведен анализ существующих способов поиска слов в тексте и других технологий необходимых для реализации геоинформционно-го сервиса;
• сформулирована цель и требования для разрабатываемого программного обеспечения;
• создана компонентная (эскизная) модель системы, выбрана платформа, среда разработки и язык программирования;
• реализован алгоритм поиска географических названий в тексте;
• реализована система, осуществляющая геокодинг новостной информации;
• внедрено разработанное ПО в качестве средства отображения новостной информации в заданном районе местности.
Литература
1. М.В. Кузнецов, И.В. Симодянов. Самоучитель MySQL 5. -СПб.: БХВ-Петербург, 2007. - 560 с.: ил.
2. А. Матросов, А. Сергеев, М. Чаунин HTML 4.0 - БХВ-Петербург, 2007, 672 с.
3. Выдрин Д., Поляков В. (2002) "Реализация электронного словаря на основе н-грамм". Труды III Международной научно-практической конференции "Искусственный интеллект - 2002" - Кацевелли, том 2, с. 79-84 Изд. "Институт проблем искусственного интеллекта" http://iai.donetsk.ua
4. Выдрин Д., Громов С., Поляков В. (2004) "Метод сравнения библиографических описаний, представленных в различных форматах". Обработка текста и когнетивные технологии №9. VII Междуународная конференция - Варна. М: Издательство "Учеба", с. 166-172
5. Черный А.И. Введение в теорию информационного поиска - «Наука» М., 1975.
6. Дари К., Бринзаре Б. AJAX и PHP: Разработка динамических веб - приложений. - СПб.: Символ - Плюс, 2006. - 336 с.
7. Р.Д. Мэтьюз Web - сервер под Unix. Пер. с англ. -СПб: Символ-Плюс, 1998. -560 с.: ил.