Feedius — свободная система мониторинга и анализа новостей

Feedius — программный комплекс, позволяющий собирать, хранить и анализировать большие потоки новостей из RSS-лент. Новости отфильтровываются под ваши интересы и приходят на email, либо доступны через специально сформированную RSS-ленту, либо их можно почитать в браузере.

RSS to email

Фидиус состоит из следующих подсистем:

Загрузчик новостей

Загрузчик представляет собой фоновый процесс, который с заданной периодичностью пробегается по вашей RSS-подписке и проверяет обновления. Найденные новости складываются в Postgres для хранения. Как я уже написал выше, система ориентирована именно на большие объемы (от 10-20 тыс новостей в неделю и до бесконечности). Этим объясняется выбор Postgres. Кроме того, загрузчик лент имеет мультипотоковую архитектуру, чтобы успевать обработать большое количество лент за указанный пользователем период обновления. Вы можете задать любое количество рабочих потоков, с учетом вычислительных возможностей своего компьютера, разумеется.

Для пользователя процесс сбора новостей не заметен — вы просто работаете на компьютере (или не работаете, если Фидиус запущен на выделенном сервере), а база данных постоянно пополняется, чтобы пользователь в любой момент имел возможность подключиться к ней через Web-интерфейс и сделать выборку по интересующей его теме.

Web-интерфейс

Для доступа к новостям продвинутые пользователи могут использовать командную строку. Для гуманитариев имеется удобный Web-интерфейс под названием Feedius Panel, позволяющий работать с новостями прямо из браузера.

Web-интерфейс для работы с новостями

Анализатор

Подсистема анализа имеет модульную структуру. К уже имеющимся модулям обработки данных вы можете добавлять свои. Примеры штатных модулей: модуль ретроспективного контент-анализа (РКА), модуль декомпозиции, модуль прогнозирования интереса к теме и т.д.

Например, РКА позволяет выбрать любого персонажа или бренд, или географическое название и посмотреть, в каком контексте оно упоминается в новостях. Затем строится график изменения контекста по времени. Таким образом, можно отследить как меняется отношение к тому или иному объекту.

Модуль декомпозиции позволяет разложить данные о популярности новостной темы на три составляющие: тенденцию, сезонный фактор и случайные флуктуации.

Декомпозиция

Этот вид анализа помогает обнаружить т.н. «вбросы» или заранее написать статью по теме, которая сегодня никому не интересна, а завтра станет популярной.

Модуль прогнозирования позволяет (при определенных условиях) предсказать изменение интереса к теме путем моделирования (алгоритм ARIMA и др.).

Ну и так далее. Читатель, наверное, уже догадался, что расширения пишутся на языке R, чтобы задействовать впечатляющий потенциал этого замечательного языка программирования.

Как выглядит работа с Feedius

Сначала нужно инициализировать базу данных (создать схему и установить значения по умолчанию):

init/database/init.rb

Теперь нужно перенести свои драгоценные ленты, нажитые непосильным трудом, в Фидиус. Общепринятым форматом для импорта/экспорта RSS-подписок является OPML. Сохраняем ленты в нем и затем импортируем в Фидиус:

tools/opmlimport.rb <путь к opml-файлу>

Вот и все, новости уже собираются. По желанию можно настроить интервал обновления, количество потоков и т.д.:

nano global/globalconf.rb

Теперь можно начать работать с новостями. Запустим обслуживающий web-сервер:

service feediuspanel start

Чтобы не конфликтовать с основным Web-сервером, Feedius Panel использует локальный порт 5001. То есть, адрес для работы будет такой: http://127.0.0.1:5001. Если Фидиус установлен на выделенном сервере, рекомендуется использовать обратный прокси. Конфигурационный файл для Nginx будет выглядеть так:

upstream feedius {
server 127.0.0.1:5001;
}

server {
listen 80;
server_name feedius;

location / {
proxy_pass http://feedius;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

Теперь Фидиус доступен из любой точки в интернете, как обычный сайт.

Для примера рассмотрим отбор новостей для сайта. Для этого нужно выяснить, что вообще интересует читателей. Недавно я проделал такой анализ для Либератума, с результатами которого можно ознакомиться здесь. Читателей Либератума больше всего интересуют новости об Ubuntu, но не все, а со словом «как» в заголовке (инструкции по установке, настройке или улучшению чего-либо в Ubuntu). Составим поисковый профиль и опишем его на языке SQL. Гуманитарии могут воспользоваться конструктором запросов, однако он несколько сужает те возможности, которые дарит нам SQL. Но для простых запросов вполне сгодится. Итак:

select title from news where title ilike '%ubuntu%' and title ilike '%how%' order by published desc limit 1;

Переводя с SQL на русский, от Postgres требуется найти самую свежую статью из тех, которые содержат в заголовке слова «Ubuntu» и «How» (как). Получаем: «How to Run Android Apps with App Runtime for Chrome (ARC) Welder in Ubuntu» (Как запустить приложение для Android в Ubuntu).

Мониторинг новостей в Ubuntu

Так что же, теперь описывать каждый раз области своих интересов на SQL? Нет. Даем запросу имя и он сохраняется в базе данных:

Система анализа новостей

Теперь этот запрос можно использовать, ссылаясь на него по названию. Система будет периодически выполнять пользовательские запросы и выдавать результат одним из способов: на email, через web или сформирует ленту RSS, на которую пользователь может подписаться своей привычной RSS-читалкой.

Эпилог

Как некоторые уже догадались, этот прекраснейший программный продукт разработан мною для себя, но скоро будет выложен на Гитхаб в свободный доступ (за исключением некоторых модулей аналитики). Мой подарок всей прогрессивной общественности. Следите за новостями.

Оценка: 
5
Средняя: 5 (2 оценки)

Комментарии

Какой адрес программы на Гитхабе?

Оценка: 
Пока без оценки

Комментировать

Filtered HTML

  • Use [fn]...[/fn] (or <fn>...</fn>) to insert automatically numbered footnotes.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote> <strike> <code> <h2> <h3> <h4> <h5> <del> <img>
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.