Від Англії до Таємничого острова разом з героями романів Жуля Верна

З постійно зростаючим об'ємом текстової інформації і рівнем розвитку інструментів web-візуалізації виникає бажання всі ці обсяги візуалізувати. Демонстрація можливості такої візуалізації — завдання, яке було поставлено перед командою студентів в рамках роботи ABBYY Labs і курсу «Промислове програмування» на Факультеті інновацій і високих технологій (ФІОТ) в МФТІ (якщо ви ще жодного разу не читали в нашому блозі про студентські лабораторіях ABBYY, є сенс повернутися до цього посаді).

П'ятнадцяти третьокурсників-розробникам і чотирьом четверокурсникам-менеджерам, студентам ФІОТ, було запропоновано за три місяці досліджувати сучасні open-source рішення візуалізації структурованих даних і потім, вибравши для себе тему, візуалізувати текстову інформацію на природній мові. Перехід від неструктурованої інформації до структурованої пропонувалося здійснити за допомогою семантико-синтаксичного парсера ABBYY Compreno.



А якщо не Жюль Верн, то хто?
Одне з найбільш бурхливих обговорень за весь час роботи над проектом було присвячено вибору тексту-основи візуалізації. Варіантів було безліч: від старих радянських газет і наукових статей до серії романів «Пісня Льоду і Полум'я» і всесвіту коміксів Marvel.

Оскільки багато текстів, які нам подобалися, були захищені авторськими правами, ми вирішили зупинитися на класичних літературних творах з терміном дії авторського права. Тут теж не обійшлося без дискусій: пропонували і Шерлока Холмса, і Тома Сойєра, і багато інші романи, в результаті ми зійшлися на тому, що трилогія романів Жюля Верна «Діти капітана Гранта», «Двадцять тисяч льє під водою» і «Таємничий острів» добре підходить для наших цілей і подобається нам усім :). Для аналізу ми взяли англомовний і російськомовний перекази.

Охочих читачів ми відразу запрошуємо на сайт julesvernetrilogy.com — ви можете паралельно читати статтю і натискати на кнопки. Отже, вибираємо мову (російську або англійську) — і поїхали.

Переходимо до структурованої інформації
Отриманням даних з текстів романів займалася окрема група. Хлопцям потрібно було виділити локації і події, які зустрічаються в романах, знайти взаємозв'язки між героями, скласти опис зовнішності та мовленнєві портрети персонажів, а також зробити розумну розмітку текстів книг. Щоб вирішити кожну з цих задач, студенти використовували різноманітну інформацію про тексті, отриману за допомогою програми ABBYY Compreno. Докладно про роботу парсера ми писали тут, а зараз розповімо, як він нам допоміг структурувати інформацію з романів Жуля Верна.



Знайомимося з героями з допомогою Compreno
Як ви, звичайно, знаєте, обрана нами для аналізу трилогія Жуля Верна — це серія пригодницьких романів, об'єднаних загальним світом і персонажами. Оскільки левова частка інформації в романах будується навколо героїв, їх властивостей, дій і переміщень, то спершу слід було навчитися виділяти суті, відповідні героям романів.

Це не таке просте завдання, як може здатися на перший погляд, тому що один і той же людина може описуватися абсолютно різними способами. В якості прикладу можна розглянути частину першої глави книги «Діти капітана Гранта» (жирним виділено згадки лорда Гленарвана):

«If your Lordship would simply break off the neck, I think we might easily withdraw the papers,» suggested John Mangles. «Try it, Edward, try it,» said Lady Helena. Lord Glenarvan was very unwilling, but he found there was no alternative; the precious bottle must be broken. They had to get a hammer before this could be done, though, for the stony material had acquired the hardness of granite. A few sharp strokes, however, soon shivered it to fragments, many of which had pieces of paper sticking to them. These were carefully removed by Lord Glenarvan, and separated and spread out on the table before the eager gaze of his wife and friends.
Оскільки Compreno вміє справлятися з такими випадками, у команди вийшло грамотно класифікувати згадки персонажів, додатково дозволяючи займенникові анафори. Після цього можна було кластеризовать дані і дослідити статистику, пов'язану з властивостями персонажів.

Спілкування — наше все
У кожній главі герої взаємодіяли один з одним або, говорячи в термінах Compreno, зустрічалися в якості заповнювачів деяких атрибутів одного і того ж факту. Намалювавши іконки для всіх основних персонажів трилогії і виділивши графи взаємодій персонажів в кожній главі, ми отримали наочне представлення соціальної активності героїв трилогії.



Lord Glenarvan was perfectly grave
Вдалося розповісти докладніше і про активність багатьох персонажів в різних розділах, виділивши їх дії і описові характеристики. Натиснувши на іконку персонажа в графі, можна побачити його опис у контексті даної глави.

Для виявлення таких характеристик використовувалися різні евристики. Одна з них полягала в пошуку прикметників, що залежать від персон або мають з ними спільних предків.

Розглянемо її на прикладі такої пропозиції з роману:

Lord Glenarvan was perfectly grave, and Lady Helena and Mary showed their sympathy for his vexation by their looks.
Розбір пропозиції c допомогою Compreno виглядає так:



В результаті отримаємо характеристику perfectly grave, яка відображається на сайті:



Інша евристика допомагала отримувати з тексту опис одягу персонажів — для цього шукалися слова з семантичним класом «CLOTHES». Після цього додатково фільтрувалися згадки самого слова «одяг» і шукалися залежності, як у попередньої евристиці.



Утворений Жак Паганель
У категорію дій потрапили зв'язки типу «дієслово + прямий додаток» і «причетні обороти». По суті, алгоритму пошуку тут два.

Перший алгоритм, який будував причетні (або дієприслівникові) обороти, перевіряв залежності у головного слова, а потім, проходячи по дереву синтаксичного розбору речень, збирав всю компоненту, після чого вибудовував слова у тому ж порядку, в якому вони зустрічалися в реченні. Таким чином виділялися іноді навіть досить довгі описові фрагменти. Рекорд — це 48 слів англійською мовою з кумедною арифметикою:

told but Cyrus Harding having him that even if he managed to count three hundred grains a minute or nine thousand an hour it would take him nearly five thousand five hundred years to finish his task the honest sailor considered it best to give up the idea
Від таких конструкцій, на жаль, довелося відмовитися, так як вони не задовольняли формату виводу даних для сайту.

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

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



Або дізнатися про освіченості хороброго Жака Паганеля. Давайте на прикладі Жака подивимося, як і які дані бере з тексту Compreno. У Жуля Верна є ось така пропозиція:

О, ви, шановний Паганель, залишитеся, – озвався майор. – Ви дуже добре знаєте і тридцять сьому паралель, і річку Гуамини, і взагалі все пампаси, щоб покинути нас.
Парсер Compreno розбирає його наступним чином:



На виході отримуємо ось таку картку з характеристиками особистості Жака:



Також можна познайомитися з дуже активним персонажем з роману «Таємничий острів»:



Знаходження балакучих і емоційних персонажів
Герої, крім активних дій, багато розмовляли, і, щоб визначити найбільш балакучих персонажів, ми побудували ще один граф — граф мовленнєвої активності. Додатковий аналіз їх мови дозволив знайти найбільш допитливих героїв (задають безліч питань) або найспокійніших (практично не використовували у своїй промові окличні речення).

Для того, щоб це зробити, RDF-поданні тексту, отриманому Compreno, ми знаходили факти типу «пряма мова». В цих фактах зберігається сам уривок з мовою і посилання на автора слів, тому виділити пропозиції з різним типом мовлення і пов'язати їх з произносившими виявилося досить просто. Хоча й не обійшлося без невеликих проблем в розмітці (спробуйте знайти главу, де в Топа (Таємничий острів) прокидається цікавість). Її залишили навмисне, як свого роду «пасхалку» для самих уважних.



Інтерактивна карта подорожей
Оскільки в книзі герої постійно подорожують, нам здалося цікавим витягти з тексту інформацію про місця, які відвідали герої, і побудувати інтерактивну карту, яка показувала б місце розташування героїв в різних главах. За допомогою технології Compreno це вдалося зробити швидко і ефективно, виключивши можливість помилки через неуважність.

Наприклад, так виглядає фрагмент карти для дев'ятого розділу першої частини роману «Діти капітана Гранта»:



Виділення подій
Після одержання основних локацій захотілося зрозуміти, які події відбувалися в тих чи інших місцях. Подіями було вирішено називати дії з заповненим атрибутом «Where», в яких брали участь персонажі які візуалізуються книг. Такі факти були виділені за допомогою Compreno і відобразити на інтерактивній карті у відповідній главі. На них можна побачити учасників події і його короткий опис.



«Розумне» читання
Щоб можна було отримувати додаткову інформацію про героїв, події і локаціях прямо під час читання книги, була додана «розумна» розмітка прямо в тексти книг, які доступні для читання в режимі онлайн на сайті. Вона була реалізована на основі вже отриманих даних про події та локаціях і додаткового пошуку персон в тексті дозволом местоименной анафори.

Приклад розміченого фрагмента з першої глави першої частини роману «Діти капітана Гранта»:



Розмічений уривок з третьої глави першої частини книги «Таємничий острів»:



Контекст книги з додаткових джерел
Жюль Верн відомий і любимо по всьому світу, тому в наші дні в інтернеті без праці можна знайти багато різноманітної інформації про автора та його творах. Ми так і вчинили, наповнивши сайт різною додатковою інформацією.



Передбачені винаходу
Цікавою особливістю творів французького письменника є передбачення технічних відкриттів, зроблені на сторінках книг. Сучасники Жуля Верна не могли й уявити, що коли-небудь буде повсюдно поширена видобуток корисних копалин з морського дна або що відеотелефонія буде чимось цілком природним. А Жуль Верн зміг і досить ясно описав технології нашого часу в своїх романах. Саме таким прогнозам автора присвячений один з розділів сайту. До описів винаходів можна перейти за допомогою розмітки прямо під час читання книги.



Детальніше про Жюля Верна
Часто під час читання цікавої книги з'являється бажання дізнатися більше про автора і про інших його творах. Саме цьому присвячений окремий розділ, заснований на матеріалах Вікіпедії. В ньому можна знайти інформацію про бібліографії та біографії письменника.

Як і герої його книг, Жюль Верн багато подорожував. Тому наочніше всього простежити його життєвий і творчий шлях можна на інтерактивній карті, за допомогою якої ми візуалізували його біографію.



Додаткові описи локацій, подій і героїв
Крім інформації про автора, під час читання, завдяки розмітці, можна отримати додаткову інформацію про місця, героїв і події. Для цього треба вибрати пункт «База даних» («Data Base») в меню або натиснути на одну з численних написів «Читати ще» («Read more»). Для таких описів використовувалися матеріали Вікіпедії і уривки романів трилогії.



Web-розробка і команда
Подивитися на команду, яка здійснила все, про що розказано в статті, можна на спеціальній сторінки сайту.

Успіх таких проектів — це насамперед вдалий «фасад», результат роботи дизайнерів та веб-розробників, тому для них робота над проектом стала справжнім викликом: хлопцям потрібно було за пару місяців з нуля навчитися web-розробки, поєднуючи це з напруженою навчанням, що багато в чому вплинуло на наш вибір засобів — великий акцент робився на легкість освоєння технологій.

Для реалізації SPA була використана застаріла, зате відмінно документована бібліотека RactiveJS в поєднанні з Page.js. Основний бібліотекою візуалізації даних стала d3 — з її допомогою реалізовані граф героїв і мовна статистика. Для побудови інтерактивних карт була використана бібліотека Leaflet.

Куди далі?
Наша робота над проектом на цьому не закінчується, як і наш курс на физтехе, і вже восени ми плануємо знову активно поринути в роботу. У наших планах створення універсального сайту-конструктора для візуалізації літературних творів. Адже дійсно, і граф героїв, і карта з подіями добре підійдуть практично для будь-якого літературного твору. Ще одна задумка — це «оживлення» сайту за допомогою інтерактивних завдань за текстами книг.

Поки ми думаємо про майбутнє, всі бажаючі можуть на сайт зануритися в улюблений з дитинства світ, створений Жулем Верном, англійською або російською мовою.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.