ПРОГРАМНА СИСТЕМА ПОБУДОВИ ІНДЕКСУ ДЛЯ РЕАЛІЗАЦІЇ РАНЖУВАННЯ НАУКОВИХ ДОКУМЕНТІВ



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

The article describes software system that developedfor the automated construction of an index of citing of documents collection inUkrainian language, which used to rank documents in search engine.

Keywords: search engine ranking, pdf, Neo4j, Akka

УДК 004.93

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

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

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

Під час імплементації системи використовувався підхід модульності для полегшення розробки та тестування окремих компонент. При створенні модулів були застосовані принципи розробки, що керується тестами (Test-Driven Development). Для реалізації модуля знаходження наукових документів використовувалася модель акторів як метод забезпечення ефективного паралельного виконання задач. Розроблений та реалізований алгоритм дослідження структури pdf-документів, оформлених згідно з форматами українських видань, та знаходження елементів, що входять до списку посилань таких документів, став основою створеної системи автоматичної побудови індексу цитувань вхідної колекції наукових документів з україномовних джерел. Більшість програмного коду реалізовано на мові програмування Scala з використанням окремих бібліотек для мови Java.

Структурно система складається із таких модулів.

Модуль завантаження наукових документів. Для роботи із колекцією наукових документів найперше необхідно знайти та завантажити їх з певних джерел. Оскільки алгоритм пошуку містить елементи, які можна легко розпаралелити, було вирішено використовувати одну із успішних на сьогодні моделей паралельного програмування – модель акторів [1]. Модуль був реалізований за допомогою мови Scala з використанням бібліотеки акторів Akka.

Основними елементами архітектури є наступні актори: Receptionist, Controller, Getter. Актор Receptionist відповідає за обробку запиту на пошук та завантаження документів з певного кореневого каталогу. Через нього користувачі відправляють запит та отримують результат. Він запам’ятовує відправника запиту та делегує виконання іншому актору (Controller). Актор Controller отримує від Receptionist запит, зберігає кореневий елемент та слідкує за ресурсами, які були відвідані. Він контролює глибину пошуку та пошук ресурсу, який відповідає критерію завантаження. Реальну обробку кожного окремого ресурсу він делегує іншому актору (Getter).

Актор Getter отримує від Controller ресурс, який необхідно обробити, виокремлює його структуру та знаходить в даному ресурсі всі «цікаві» ресурси та передає їх для подальшої обробки в Controller.

Розробка модуля обробки pdf-документів. Модуль обробки документів виконує дії: зчитування документу у форматі pdf та перетворення у зручну для обробки структуру даних; виокремлення структурних елементів документу (наприклад, колонок); пошук необхідних для алгоритму побудови індексу цитувань даних

Реалізація зчитування документу у форматі pdf. Видобування текстової інформації та структури з документів у форматі pdf залишається складною задачею, в основному, через дизайн стандарту PDF, який орієнтований виключно на відображення документу. У якості бібліотеки для зчитування документів в форматі PDF було обрано бібліотеку з відкритим кодом PDFBox[2]. За допомогою бібліотеки OpenNLP[3] ми вирішили задачу виокремлення іменованих сутностей зі списку посилань, таких як автор статті, назва статті тощо.

Розробка модуля побудови та збереження індексу цитувань. При аналізі структури даних, можна побачити, що вони являють собою орієнтований граф. Тому для роботи з базою даних був використаний компонент бібліотеки Spring для Java під назвою SpringData Neo4j – проект, який є частиною проекту Spring Data, який надає зрозумілий та легкий програмний інтерфейс для доступу до графової бази даних Neo4j [4].

Для початку необхідно визначити тип відношення між вершинами в графі. Це буде структура ребра між вершинами (авторами), що представлятиме собою цитування. З використанням анотацій бібліотеки Spring Data Neo4j клас опису посилання буде мати наступний вигляд:

@RelationshipEntity('type'= "REFERENCES")

case class ReferencesRelation(@Fetch @StartNode start:Author, @Fetch @EndNode end: Author, @FetchworkCitedIn: String, @Fetch workCited: String)

де: @RelationshipEntity – назва анотації, що описує зв’язки між об’єктами; 'type' = "REFERENCES" – опис назви відношення; @StartNode – анотація, що описує вершину, з якої виходить ребро (в нашому випадку цеавтор, що використовує інше джерело); @EndNode – анотація, що описує вершину, в яку входить ребро(в нашому випадку це автор, якого цитують); workCitedIn, workCited – опис параметрів зв’язку (в нашому випадку це стрічки, що представляють відповідно роботу, в якій використовується цитування, і роботу, яку цитують); @Fetch – анотація, що вказує внутрішньому рушію бібліотеки Spring Data Neo4j автоматично заповнювати поля з бази даних (в інакшому випадку – ці поля повинні будуть явно бути оновлені в програмному коді).

В описі класу присутнє поле під назвою references, якe є об’єктом класу множина стандартного пакету Java. Однією зі зручностей роботи з бібліотекою Spring Data Neo4j є те, що при зміні цього поля, бібліотека автоматично оновить графову модель в базі даних.

Висновки

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

У цій роботі були представлені архітектура програмної системи та методи розв’язання задачі побудови індексу для реалізації ранжування наукових документів українською мовою.

Перелік посилань

  1. А.Н. Глибовец Решение задачи распределённого индексирования в оперативной памяти на базе моделей актеров с использованием фреймворка Akka // Управляющие Системы и Машины - №4 июль-август 2014. – с.61-67

  2. Apache PDFBox1.8.5 API [Електронний ресурс] / Apache PDFBox docs – Режим доступу: http://pdfbox.apache.org/docs/1.8.5/javadocs/

  3. OpenNLPdocumentation [Електронний ресурс] / Apache OpenNLP – Режим доступу: https://opennlp.apache.org/documentation.html

Neo4j [Електронний ресурс] – Режим доступу: http://neo4j.com/

Jun 15, 2016