Виталий Федоров

Отслеживание цитирования статей с помощью Altmetric

Введение
В ходе разработки веб-сайта для Лондонского Института Математических Наук возникла необходимость отслеживания динамики цитирования публикуемых на сайте статей в других изданиях и упоминаний в медиа. Поскольку на сайте уже использовались значки Altmetric Donuts и Dimensions Badges, была рассмотрена возможность использования API, предоставляемого Altmetric при разработке виджетов для отображения истории обновления.

Задача состояла в получении данных обновлений, сохранения их в удобной для использования форме и вывода в список с группировкой по дате обновления.
Разработка виджета
Разработка началась с анализа предоставляемого API.
Оба API возвращают данные на текущий момент, а поскольку требовалось создание "истории" обновлений, было решено фиксировать изменения в собственном репозитории при ежедневном обновлении рейтингов Altmetric и Dimensions для статей. С данными Dimensions все просто - при обновлении заносилась новая запись с датой обновления в базу данных, если менялось значение счетчика "times_cited". Однако для виджета Altmetric требовалось указать также медиа-источник и количество упоминаний в источнике. Поскольку настолько подробной информации не предоставляется в некоммерческой версии API Altmetric, для этого была создана отдельная таблица:
Фрагмент таблицы с обновлениями Altmetric
Название столбцов в таблице соответствует названиям счетчиков из ответа Altmetric, однако в качестве временной метки используется дата фактического обновления данных о статье в нашем репозитории. Все что остается сделать - вывести статьи в список в нужном порядке и группировать по дате.
Примечание: в моем случае дополнительной сортировки не требовалось, я просто получал упорядоченные по убыванию значения updated данные из БД.
Возникшие сложности
Главным препятствием при разработке системы хранения данных стало не до конца понятное изменение значений счетчиков упоминаний Altmetric.
История изменения значений счетчиков
Обратите внимание на столбец by_tweeters: значение счетчика то уменьшается, то увеличивается, что приводит к появлению "ложных" обновлений. В списке упоминаний на странице статьи в Altmetric при этом не появляется дополнительных записей и не пропадают уже существующие. Возможно, это как-то связано с добавлением и удалением ретвитов.
Примечание: скорее всего, в коммерческой версии Altmetric API (т.н. "/fetch" API) данной проблемы не возникнет, так как она возвращает гораздо более подробный ответ, однако мне не довелось поработать с ней.
К сожалению, найти оптимального решения, позволяющего предотвратить попадание "ложных" упоминаний в список, пока так и не удалось.

В результате получились следующие виджеты:
Виджет "Citation updates" довольно прост и отображает дату последнего цитирования статей, полученную от Dimensions. Виджет "Online media updates" несколько интереснее - кроме даты упоминания он также содержит информацию о количестве и источнике упоминаний. Для обозначения источника используется цветовая маркировка - те же цвета, что и на значках Altmetric Donut, а при наведении выводится тайтл с пояснением.

Разработанные виджеты легко встраиваются, используя минимальный доступный уровень API, и уже функционируют на протяжении некоторого времени. В будущем будут изменены и оптимизированы как алгоритмы фильтрации данных, так, возможно, и внешний вид.
Спасибо за внимание!