Вы можете использовать Машинное обучение для этой задачи.
Одним из возможных алгоритмов машинного обучения является Bag Of Words с k-ближайшими соседями:
Создайте обучающий набор [пользователей, которых вы знаете, каков их интерес], и используйте Bag Of Words [предпочтительно с n-граммами ], чтобы «выучить» тренировочный набор.
Когда прибывает новый пользователь - извлеките слова / n-граммы в виде функций - и найдите k ближайших соседей , чтобы определить, каковы интересы.
Чтобы получить улучшение с течением времени - вы можете получить дополнительную явную обратную связь - пользователи могут нажать на соглашение / несогласие с тем, что сказал алгоритм. Позже вы сможете использовать эту информацию, чтобы расширить размер вашего учебного набора, что, вероятно, приведет к более точным решениям.
Это стандартный алгоритм для изучения "особенностей" между наборами предложений / слов, поэтому вы должны, по крайней мере, использовать его в качестве ориентира.
Существует также проект с открытым исходным кодом, который может вам помочь: Apache Mahout .