Это та же самая проблема, с которой борется Твиттер.Вы можете получить работу там, если взломаете ее;)
При возвращении серьезной заметки можно использовать некоторые грубые меры (например, на основе эвристики), чтобы сделать что-то подобное, но с большим процентом ошибок,Как сказал Делнан в комментарии.
НЛП - верная ставка.Обратите внимание, что при использовании NLP также есть некоторый процент ошибок, но он гораздо точнее, чем любая эвристика, которую вы бы использовали.Если вы используете python, я бы предложил этот инструментарий, я использую его время от времени - NLP .
Для других языков я уверен, что есть пакеты, которые помогут вам в этом отношении.
ОБНОВЛЕНИЕ1: Если у пользователей есть возможность пометить свои сообщения (как это делает stackoverflow), вы можете подойти к этой проблеме, исключая NLP.Затем вы можете просто взять пересечение тегов обоих сообщений, чтобы увидеть, есть ли какая-то общность, и предложить несколько главных пунктов для общих элементов.
Но есть и другие проблемы, с которыми вам придется столкнуться - сделать теги обязательными, плюс вы должны быть уверены, что пользователи действительно вводят правильные теги и т. Д. Но, тем не менее, это значительно упрощает вашу проблему.
ОБНОВЛЕНИЕ2: По мере обновления Q - Поскольку у вас есть только некоторые конкретные ключевые слова / фразы, которые вас интересуют. Этот вид упрощает это.Вам нужно будет получить каждое ваше сообщение, разбить его на слова, а затем stem каждое слово.После завершения, пересекайте этот набор с набором ключевых слов, которые у вас есть.Вы получите набор (S1).Сделайте то же самое со вторым сообщением, вы получите набор (S2).Пересечь S1, S2.Если вы найдете что-то общее, бинго!Некоторая тема является общей для message1, message2.иначе ничего.