Система автоматического тегирования контента
Нам кажется наиболее логичным использовать для этой задачи поисковые движки, где все эти алгоритмы родные. Например Elastic или Solr. Рассмотрим и другие подходы.
При обработке текста необходимо:
- удалять служебные слова
- приводить слова к основной форме
- иметь возможность добавить стоп слова, не участвующие в индексировании
- основная форма слова будет базой для индексирования
- опционально выделять главное смысловое слово из единичного комментария
На входе имеем БД MySQL с доступ на чтение к нескольким таблицам. Связи между таблицами по ID parent/child.
CATEGORY(ID) ARTICLE(ID) COMMENT(ID) USER(ID)
Реализация должна предоставлять http-api для запросов вида:
- получить все тэги для раздела
- получить все тэги для статьи
- получить топ N тэгов по разделу
- получить топ N тэгов по статье
- получить статьи с тэгом
- получить комментарии с тэгом
- для каждого ответа наряду с тэгом должна присутствовать его частота в данном контексте
Требования к системе:
- автоматический реиндекс, допускается задержка в несколько минут
- на первом этапе поддерживать русскую и английскую морфологию
- поддерживать расширение на другие языки с помощью конфигурации
- опционально автоматическое определение языка на уровне комментария, добавление его в индекс
Нефункциональные требования:
- использовать только открытые инструменты
- по возможности избежать написание кода, использовать конфигурации готовых инструментов