Данный проект представляет собой поисковый робот для сайта en.wikipedia.org. Он состоит из следующих модулей:
- Поисковый робот, который переходит на стартовую страницу, собирает ссылки, которые есть на данной странице и выбирает, какие ссылки еще не были посещены (модуль Spider)
- Если ссылка не была посещена (проверка проводится по MySql таблице с записями всех пройденных страниц), то ссылка отправляется в очередь RabbitMQ. (модули RabbitMQ, Mysql_connector)
- Потоки достают из очереди RabbitMQ ссылки, переходят на сайт при помощи jsoup и парсят сайт на части (Заголовок, статья). (модуль Writer)
- Из полученных данных формируется json, который отправлется в ElasticSearch (модули Writer и Elastic) Таким образом формируется NoSql база данных ElasticSearch.
- Люди
- Время (история)
- Места и организации.
Данный модуль проделывает следующие действия:
- Получение документа с категорией из ElasticSearch
- Подготовка документа
- Приведение все к нижнему регистру
- Удаление всех знаков препинания
- Удаление стоп-слов
- Леммирование (приведение каждого слова к его лемме)
- Добавить подготовленный документ с категорией в csv файл.
- Повторить п.1-3 для всех документов с категориями
Сформировав csv файл, он подается на модуль weka для обучения при помощи NaiveBayes классификатора. После модель сохраняется для дальнейшего использования для определения категорий неопределнных статей.
Для проверки точности работы ElasticSearch был разработан модуль, которые представляет собой сайт с поисковой строкой. Когда пользователь вводит строку, происходит запрос в базу данных ElasticSearch, которая выдает список ссылок, наиболее подходящих под введенный запрос. Ссылки выводятся в виде таблицы, все ссылки кликабельны.