«ПРОСВЕЩЕНИЕ. ИНОСТРАННЫЕ ЯЗЫКИ»

RSS-�����

КАК НЕ ЗАТЕРЯТЬСЯ В КНИГЕ – О СОЗДАНИИ ГЕОГРАФИЧЕСКОЙ КАРТЫ-ПРИЛОЖЕНИЯ

Среда 9 марта 2022

Любая книга представляет собой мир, наполненный характерами, обстоятельствами, природой. А как насчет географии? Обращаете ли вы внимание при чтении на географические названия в тексте? Всегда ли представляете себе, где находится тот или иной пункт? Конечно, с одной стороны,  пути героев в сказочном или фантастическом мире можно построить в своем воображении. В других случаях авторы снабжают свои произведения  фантазийными картами в дополнение к тексту и в помощь читателю – достаточно вспомнить эпическую сагу о Средиземье Д.Р.Р. Толкиена.

 

 

Автор: Стремнев Александр Юрьевич
Место работы: Белгородский государственный технологический университет им. В.Г. Шухова
Должность: доцент кафедры информационных технологий

 

 

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

Это не трудно, если географических названий не много, и они представляют собой как минимум столицы государств. В других случаях, если «география» не была (или не является) вашим любым школьным предметом, то осмысленное восприятие места действия может стать затруднительным без постоянного обращения к электронному или бумажному справочнику. Не будем также сбрасывать со счетов, что интересующая Вас книга может быть написана на неродном для вас языке, например, английском. В любом случае было бы полезно иметь под рукой программный инструмент (назовем его «Book-Mapper»), который бы автоматически находил в тексте книги все географические названия и помещал их на карту, которую можно было бы всегда держать под рукой в печатном или электронном варианте.

Логику работы такого комплексного инструмента можно представить в виде следующей схемы (рис. 1).

Рис. 1.

Исходным материалом для работы «Book-Mapper» является, конечно же, ваша любимая книга в виде текстового файла (поз. 1, Рис. 1).

Географические названия являются трудно формализуемыми объектами. Одни только их списки представляют собой, по сути, словари, включающие в себя термины, накопившиеся за всю историю цивилизации (причем на различных языках!). Эти названия могут быть связаны с природными объектами и явлениями, значительными событиями, а также именами известных людей. Поэтому для нашей задачи будет полезным иметь актуальный вариант подобного словаря-справочника (поз. 2, Рис. 1) – базу географических имен с данными об их широте и долготе, например, бесплатно предоставляемую интернет-ресурсом «GeoNames» [1].

Далее необходимо построить начальный список потенциальных географических названий (поз. 3, Рис. 1). Принцип очень простой – отбираться будут только слова, начинающиеся с заглавных букв. Конечно, такой список будет очень велик, особенно если ваша книга – не короткий рассказ, а повесть или роман. Поэтому все последующие действия алгоритма будут направлены на сокращение начального списка, с целью оставить в нем только уникальные географические названия.

С этой целью из списка следует исключить тривиальные предлоги, союзы и местоимения («She», «It», «What», «If» и т.п.). Следует учесть, что многие географические названия состоят из нескольких слов, поэтому наш алгоритм должен помещать в список потенциальных топонимов также и словосочетания (поз. 4, Рис. 1).

Промежуточный список, как уже было сказано, нуждается в оптимизации-сокращении. И здесь наиболее важным вопросом является то, как найти различие между географическим названием и упоминанием в тексте живого существа (поз. 5, Рис. 1).

Один из вариантов решения этой подзадачи – использование списка сигнальных глаголов (Таблица 1).

Они должны быть максимально характерны для живых существ. Если один из сигнальных глаголов в качестве элемента сказуемого лежит «рядом» с рассматриваемым именем собственным, то можно утверждать, что такой объект следует исключить из списка потенциальных географических названий. При программной реализации данного алгоритмического шага могут эффективно использоваться механизмы регулярных выражений [2]. Не смотря на «нестопроцентную» точность, метод сигнальных глаголов вполне может быть применим для условий нашей задачи.

Естественно, из потенциального списка топонимов должны исключаться дубликаты (поз. 6, Рис. 1).

На следующем этапе алгоритм анализирует текущий список имен собственных в соответствии с базой данных географических объектов (поз. 7, Рис. 1). Если имя из предварительного списка находится в базе геоданных (см. поз. 2, Рис. 1), то оно переходит в «окончательный» список географических названий и получает координаты широты и долготы. На этом этапе также происходит «сокращение-оптимизация» списка, хотя имеется шанс «потерять» какой-то пункт, если его не окажется в общей географической базе данных. В любом случае, желательно в готовом инструменте предусмотреть возможность ручной правки получившегося списка-перечня географических названий.

Отрисовку карты, связанной с рассматриваемой книгой, планируется выполнять на базе сервиса «Google-Maps» [3]. Поэтому приложение «Book-Mapper» генерирует «на выходе» файл формата kml (поз. 8, Рис. 1), который включает в себя названия топонимов и их координаты, непосредственно загружаемые в «Google-Maps» (поз. 9, Рис. 1).

Рассмотренный выше алгоритм может быть реализован практически в любой программной среде (рис. 2), такой, например, как «Sharp Developer» [3]. Исходный код для проекта «Book-Mapper» доступен для изучения и модернизации [4].

Рис. 2

Таким образом, для создания приложения-карты к интересующей вас книге необходимо иметь приложение «Book-Mapper» [5] и учетную запись интернет-сервиса «Google» для авторского доступа к «Google-Maps». Сам процесс генерации карты включает в себя два этапа (Рис. 3).

Рис. 3

На первом этапе приложение «Book-Mapper» на основе текста книги готовит kml-файл, а на втором – kml-файл загружается в «Google-Maps» с автоматическим построением карты. Остановимся на этих этапах более подробно.

Стартуем приложение «Book-Mapper» (Рис. 4) и выполняем в нем следующие операции:

  1. Выбираем базу геоданных («Choose the Geo-Base» (World | GB | USA))
  2. Выбираем файл книги в текстовом формате («Choose the Book»)
  3. Уточняем заголовок («Put (or Check) the Title»)
  4. Выполняем поиск географических названий в тексте («Search for Geo-Objects»)
  5. Осуществляем ручное редактирование списка топонимов («Remove Selected Items»)
  6. Генерируем kml-файл карты («Generate Map File»)
  7. Открываем местоположение kml-файла («View Map File and ReadMe»)

Когда kml-файл готов, наступает этап использования сервиса «Google-Maps» для визуализации карты (Рис. 5). Для этого:

1. Открываем сервис «Google-Maps», используя свою учетную запись «Google»

2. Создаем новую пользовательскую карту в «Google-Maps»:

Google-Maps > Menu > Your places > MAPS > CREATE MAP > Import

3. Выбираем kml-файл книги и подгружаем его в «Google-Maps»

4. Печатаем получившуюся в «Google-Maps» карту (связанную с книгой) и получаем ее адрес для общего доступа в электронном формате

Рис. 5

Уже сейчас можно ознакомиться с примерами географических карт, построенных с помощью «Book-Mapper», для таких произведений, как «Adventures of Huckleberry Finn» (by M. Twain) [7], «Goldfinger» (by Ian Fleming) [8], «The Inimitable Jeeves» (by P.G. Wodehouse) [9], «Three men in a boat (To say nothing of the dog)» (by J.K. Jerome) [10] (Рис. 6).

Рис. 6

Рассмотренный в этом материале вариант реализации поиска географических наименований в тексте базируется на простом линейном алгоритме. Думается, что более адекватные результаты могут быть получены с использованием механизмов нейронных сетей с учетом трудозатрат на их «обучение». Тем не менее, даже в базовом варианте, приложение «Book-Mapper» имеет достаточный функционал для создания карты-приложения к вашей любимой книге на английской языке.

Ссылки-источники

  1. GeoNames — geographical database covers all countries and contains over eleven million placenames that are available for download free of charge / GeoNames.  (дата обращения: 08.02.22).
  2. Microsoft .NET documentation — .NET regular expressions / Microsoft.
  3. SharpDevelop — A free IDE for C#, VB.NET, & Boo projects on Microsoft’s .NET platform / SourceForge. (дата обращения: 08.02.22).
  4. Aleksandr Stremnev. Source code for «Book-Mapper».  (дата обращения: 08.02.22).
  5. Aleksandr Stremnev. «Book-Mapper» application. (дата обращения: 08.02.22).
  6. Google Maps — web mapping platform / Google. (дата обращения: 08.02.22).
  7. Aleksandr Stremnev. Map generated with «Book-Mapper» for «Adventures of Huckleberry Finn» (by M. Twain).  (дата обращения: 08.02.22).
  8. Aleksandr Stremnev. Map generated with «Book-Mapper» for «Goldfinger» (by Ian Fleming). (дата обращения: 08.02.22).
  9. Aleksandr Stremnev. Map generated with «Book-Mapper» for «The Inimitable Jeeves» (by P.G. Wodehouse). (дата обращения: 08.02.22).
  10. Aleksandr Stremnev. Map generated with «Book-Mapper» for «Three men in a boat (To say nothing of the dog)» (by J.K. Jerome). (дата обращения: 08.02.22).

Комментарии закрыты.