<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>ПОШУКОВА СИСТЕМА НАУКОВИХ МАТЕРІАЛІВ УКРАЇНСЬКОЮ МОВОЮ ІЗ СОЦІАЛЬНОЮ СКЛАДОВОЮ</article-title>
      </title-group>
      <pub-date>
        <year>2014</year>
      </pub-date>
      <fpage>312</fpage>
      <lpage>317</lpage>
      <abstract>
        <p>Описується архітектура пошукової системи наукових матеріалів українською мовою із соціальною складовою. Розглянуто та обґрунтовано вибір технологій для створення такої системи, описано її функціональність. Представлено алгоритм для виділення з PDF документів наукових статей логічних частин. The paper describes the architecture of search engine scientific materials in Ukrainian language with the social component. The choice of technologies to develop a system described by its functionality is considered. The algorithm for the selection of scientific articles logical parts in the PDF documents is proposed.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Зважаючи на ці зауваження, поставлено задачу розробки багатофункціональної моделі ПС наукових
матеріалів українською мовою з соціальною складовою (ПСНМУМ), а також реалізація алгоритму поділу документу на
логічні зони (заголовок, автор, використана література та УДК), що дозволить перейти до створення робочого
прототипу такої ПС.</p>
      <p>Уточнимо постановку задачі. Окрім моделі потрібно: підібрати технології реалізації та обгрунтувати
переваги і недоліки вибору; визначити список необхідних функцій системи, а також описати логіку їх реалізації;
розробити та реалізувати алгоритм для розбору матеріалів наукових статей у форматі PDF на логічні зони.
Багата функціональність, велика кількість готових рішень широка спільнота розробників javascript/jQuery
визначила її обрання для клієнтської частини.
Функціональність системи</p>
      <p>
        Початкова база документів для майбутньої пошукової системи буде відібрана з найпотужнішої на сьогодні
онлайн бібліотеки наукових матеріалів українською мовою – Національної бібліотеки України імені І. В.
Вернадського [
        <xref ref-type="bibr" rid="ref3">4</xref>
        ]. Надалі ця база поповнюватиметься за допомогою спеціального модуля (робота). Він діятиме за таким
алгоритмом:
1) подібно до звичайних Web-браузерів, робот відвідує сторінку за посиланням і копіює її вміст;
2) в отриманому html-коді знаходить внутрішні та зовнішні посилання, шляхом пошуку входжень «http://»,
«href=» тощо. Отримані посилання робот вносить в базу даних;
      </p>
      <p>3) виділяє серед html-коду власне текст, шляхом видалення усіх тегів та іншого не релевантного «сміття».
Отриманий текст зберігається для подальшого використання.</p>
      <p>Окрім, робот має проводити циклічну перевірку уже доданих документів на наявність змін. З певним
часовим інтервалом, він має повторно відвідувати сторінки-джерела кожного документа. Якщо сторінка більше не
доступна, або матеріал за посиланням був видалений, робот має через деякий час видаляти посилання з бази системи.
Або ж, якщо контент сторінки змінився, він має проводити його повторну обробку, тобто знову копіювати вміст,
знаходити посилання та обробляти текст.</p>
      <p>Очевидно, що для роботи даного модуля, адміністратор має створити початкову базу посилань на
популярні наукові ресурси. Варто зазначити, що даний пункт не є обов’язковим для прототипу системи і може бути
реалізований пізніше, під час розширення системи.</p>
      <p>
        Завдання індексації документів ми перекладаємо на бібліотеку Lucene. Вона надає широкий набір засобів
для створення інвертованого індексу. Ця бібліотека допускає розширення функціональності через перевизначення
функціональних одиниць. Розширюючи функціональність бібліотеки, розроблено клас ScientifícWorklndexator, що
відповідає за процес індексації [
        <xref ref-type="bibr" rid="ref4">5</xref>
        ].
      </p>
      <p>Для створення індексу за зонами, необхідно мати інструмент для виділення окремих полів у документах (в
першу чергу імена авторів та назви статті). Основна проблема полягає у тому, що не існує єдиного стандарту для
оформлення документів, а тому така задача не є тривіальною. Алгоритм розбиття документа на логічні зони, а
також його реалізацію представлено далі.</p>
      <p>Завданням майбутньої пошукової системи є пошук саме наукових матеріалів. Тому перед індексацією
документа, він має бути перевірений на науковість і за результатами цієї перевірки або доданий до бази, або відкинутий
як такий, що не відповідає вимогам системи і потребам користувача. Для цього буде використаний алгоритм,
описаний у [6].</p>
      <p>Також кожен документ має бути віднесений до однієї або кількох категорій знань (зокрема для реалізації
функції пошуку за категоріями). Для вирішення цієї задачі буде використано підхід із [6].</p>
      <p>Бібліотека Lucene здатна проводити зважене зонне ранжування, що і буде використовуватись у алгоритмі
пошуку майбутньої системи.</p>
      <p>Система має надавати можливість пошуку статей за автором. Логіка реалізації даної функції відносно
тривіальна. Користувач повинен мати змогу при пошуку задавати ім’я автора/авторів, і отримувати у результатах
публікації вказаного автора/авторів. Також, при перегляді кожної статті, система повинна рекомендувати інші статті
того ж автора/авторів, якщо такі є. Оскільки імена авторів – це окрема зона індексу системи, ця функція є частково
реалізованою у бібліотеці Lucene.</p>
      <p>У системі має бути реалізована функція пошуку документів за УДК та категорією/категоріями знань. Для
цього база системи має містити повний список категорій (зокрема, для виведення підказок під час пошуку). Також
кожен документ має бути віднесений до однієї або більше категорій під час класифікації. Як і пошук за автором, ця
функція є частиною зонного пошуку в Lucene.</p>
      <p>Під час перегляду результатів пошуку та статей, користувачеві має надаватись рекомендації щодо схожих
матеріалів. Схожими вважатимуться матеріали, що мають спільного автора, спільні терміни в заголовку, спільні
джерела або ж належать до однієї категорії знань. Також має бути реалізована окрема функція пошуку, що
дозволить переглядати усі схожі статті до даної.</p>
      <p>При перегляді певної статті користувач має мати можливість перейти до статей, що зазначені у списку
посилань до даної (якщо вони наявні у базі системи). Також має бути реалізована можливість переходу до статей
авторів, що зазначені у цьому списку.</p>
      <p>Бувають випадки, коли різні автори працюють над однією темою, не здогадуючись про це. Система має
допомогти таким користувачам знайти одне одного для подальшої співпраці. Для цього має бути реалізований модуль
обміну повідомленнями між користувачами. Має бути можливість вказування поточних тем діяльності
користувачів (і відповідно їх перегляду). Роботодавцям або інвесторам, що шукають спеціалістів для виконання того чи
іншого завдання, система має запропонувати авторів, що працювали або працюють над відповідними темами. Має бути
реалізований пошук користувачів, що працюють за певною (або схожою) темою.
Якщо система набуде потрібної популярності, необхідно буде реалізувати можливість самостійного
додавання своїх робіт користувачами системи. Такий спосіб поповнення колекції має ряд переваг. Автор зможе чітко
зазначити атрибути своєї роботи при додаванні (назву, дату, використану літературу, категорію знань тощо),
водночас як система могла зробити це з помилками.</p>
      <p>Зареєстрованим користувачам системи має надаватись можливість оцінювати роботи інших користувачів. До
того ж, рейтинг статей автора має впливати на вагу його голосу при оцінюванні чужих статей. За допомогою таких
оцінок, має визначатись якість матеріалу, яка має враховуватись при видачі результатів на пошукові запити (при
ранжуванні документів).</p>
      <p>Користувачі мають мати змогу визначати актуальність та цікавість обраної ними теми для інших
користувачів. Зокрема, система надаватиме функціональність для зручного рецензування статей. Рецензії мають
відображатися поряд із самими статтями у результатах пошуку, що допоможе користувачам оцінити якість, повноту та
відповідність статті їх потребам ще до переходу на сторінку.
Розбір PDF-документів</p>
      <p>Важливою частиною індексації та зваженого зонного ранжування наукових матеріалів у форматі PDF є їх
розбиття на логічні частини (зони). Для дослідження обрано саме формат PDF, оскільки на даний момент він є
найпопулярнішим у сфері наукових публікацій. Крім того, база документів, що буде використовуватись у прототипі
системи, складається саме з матеріалів цього формату.</p>
      <p>Основною проблемою розбору PDF документів є те, що цей формат не розрахований на програмну обробку.
Він орієнтований на відображення, а не на збереження та передачу текстової інформації. Крім того, не існує
єдиного стандарту для оформлення наукових публікацій, і навіть тих стандартів, що розроблені, рідко дотримуються.</p>
      <p>Наш алгоритм має виділяти у PDF документі такі зони: заголовок, УДК (універсальний десятковий
класифікатор), автори та використана література (список посилань). Однак, є і інші важливі частини такі як: анотація,
видавництво, дата публікації, вступ тощо (ці зони в даній роботі не розглядатимуться).</p>
      <p>Формат PDF (Portable Document Format) створено для представлення документів у незалежному від
пристрою виведення та роздільної здатності вигляді. Доступ до тексту та легкість програмного розбору не входили до
списку пріоритетів його розробки. Тому під час програмної обробки файлів цього формату виникають певні
труднощі. Файли формату PDF складаються з директив для відображення контенту, що не групуються за
розташуванням. Одне слово, або навіть буква, яку потрібно відобразити, може задаватися кількома директивами. Саме тому
першочерговою задачею під час програмної обробки PDF документів є виділення тексту та групування його за
абзацами.</p>
      <p>
        Існує декілька готових бібліотек, що здатні виділяти текст з документів PDF (iText, PDFBox, PDF Clown), але
вони здебільшого подають текст сторінками і без форматування. Тому прийнято рішення розширити
функціональність однієї з бібліотек (iText) [
        <xref ref-type="bibr" rid="ref5">7</xref>
        ] таким чином, щоб текст виділявся абзацами з однаковим або схожим
форматуванням (розмір і жирність шрифтів, вирівнювання тексту тощо).
      </p>
      <p>Реалізовано такий алгоритм:
● за допомогою бібліотеки iText виділяються окремі прямокутники з текстом.</p>
      <p>● визначаються та об’єднуються прямокутники, що лежать в одному рядку. Два прямокутники вважаються
такими, що лежать в одному рядку, якщо їх вертикальний перетин складає не менше 80% висоти найнижчого з них.
Крім цього має виконуватись одна з умов: а) горизонтальна відстань між ними не має бути більшою, ніж висота
найнижчого з них; б) простір між цими прямокутниками рядком нижче повинен містити текст.</p>
      <p>● визначаються та об’єднуються рядки, що належать до одного абзацу. Два рядки вважаються такими, що
належать до одного абзацу, якщо виконуються такі умови:
1) жирність шрифтів в обох рядках однакова;
2) регістр символів цих рядків однаковий;
3) нехай:
 l – горизонтальна відстань між лівими краями рядків,
 r – горизонтальна відстань між правими краями рядків,
 c – горизонтальна відстань між центральними точками рядків,
 w – максимальна ширина пробілу шрифтів обох рядків (white space width),
  , , – деякі додатні константи.
Тоді виконується твердження:</p>
      <p>l  w    (r  w   )  (c  w  ) .</p>
      <p>Експериментальним чином було підібрано:   1,   1.5 ,   4.5 ;
4) Вертикальна відстань між рядками не перевищує половину висоти лінії (line height) верхнього рядка.
Алгоритм поділу на логічні зони включає виділення заголовку, УДК, авторів та посилань.</p>
      <p>Нехай X – множина абзаців першої сторінки документу; fontx – нормалізований розмір шрифта абзацу x
(тут і надалі x  X ); lineheightx – нормалізована висота лінії абзацу x ; centeredx – 1, якщо текст абзацу x
відцентрований, 0 – якщо ні; bold x – 1, якщо шрифт абзацу x жирний, 0 – якщо ні; uppercasex – 1, якщо абзац x
верхнього регістру, 0 – якщо ні;
Визначимо функцію:</p>
      <p>h(x)  fontx  fc  lineheightx  lc  centerdx  cc  boldx bc  uppercasex  uc ,
де fc,lc, cc,bc,uc – певні константи.</p>
      <p>Заголовком статті вважатимемо текст того абзацу, для якого функція h прийматиме найбільше значення.
Експериментальним шляхом підібрано такі значення констант:</p>
      <p>fc  1, lc  1, cc  0.75, uc  1, bc  0.25 .</p>
      <p>Пошук УДК зводиться до знаходження першого (за розташуванням зверху вниз, зліва направо) абзацу
першої сторінки документа, текст якого починається з літер “УДК” та містить крім них лише цифри та знаки “-” і “.”.</p>
      <p>Визначення авторів статті зводиться до знаходження абзацу, найближчого за розташуванням до абзацу
заголовку, що містить текст формату “І.І. П” або “П І.І.”, де І – ініціали, П – прізвище. Для цього створено окремі
регулярні вирази для кожного формату.</p>
      <p>Пошук списку посилань полягає у знаходженні нумерованого списку, що починається з певних ключових
слів (“Використана література”, “Список посилань” тощо) на одній із останніх сторінок документа. Алгоритм
проходить по черзі сторінки документа, починаючи з останньої, доки не знайде абзац, що містить одне з ключових
слів. Знайшовши його, алгоритм за допомогою регулярних виразів виділяє нумерований список, що розташований
нижче цього абзацу. Якщо такого списку немає, продовжується пошук абзацу з ключовими словами.
Далі приведемо UML діаграму класів реалізації алгоритму (рис. 1, 2, 3).</p>
      <p>Рис.1. діаграма класів: package guess
Рис. 2. Діаграма класів: package guess</p>
      <p>Рис. 3. Діаграма класів: package tests, visualization</p>
      <p>В даній роботі представлено архітектуру пошукової системи наукових матеріалів українською мовою з
соціальною складовою. Запропоновано таку структуру та технології для реалізації, за допомогою яких можна
розробити масштабовану, ефективну та надійну систему.</p>
      <p>Запропоновано та реалізовано алгоритм виділення у PDF документах наукових статей чотирьох основних
логічних зон. Описано сильні та слабкі сторони алгоритму. Проведений статистичний аналіз експериментальних
випробувань реалізації алгоритму показали його практичну придатність, хоча втручання експертів для перевірки
даних на перших етапах буде необхідно.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>2. Google App Engine https://developers.google.com/appengine/</mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>3. Apache Lucene http://lucene.apache.org/core/</mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          4.
          <article-title>Національна бібліотека України імені В</article-title>
          .І. Вернадського http://nbuv.gov.ua/
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          5.
          <string-name>
            <surname>Глибовець</surname>
            <given-names>А.М.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Сітмамбетов</surname>
            <given-names>Н</given-names>
          </string-name>
          .
          <article-title>Создание специализированной поисковой системы на базе облачных технологий // Пр</article-title>
          . міжнар. конф.
          <source>KDS</source>
          <year>2012</year>
          “
          <article-title>Knowledge-Dialog-</article-title>
          <string-name>
            <surname>Solution</surname>
          </string-name>
          ”
          <fpage>10</fpage>
          -
          <lpage>14</lpage>
          вересня
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>7. ITEXT Programmable PDF Software http://itextpdf.com/</mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>