これは、Twitter が直面している問題とまったく同じです。これをクラックすれば、そこで仕事が見つかるかもしれません;)
重大な注意事項として、このようなことを行うために大雑把な手段 (つまり、ヒューリスティック ベース) を使用することもできますが、エラーの割合が大きくなります。デルナンがコメントで言ったように。
NLPは確かな賭けです。NLP を使用してもエラー % が発生することに注意してください。ただし、使用するヒューリスティックよりもはるかに正確です。Python を使用している場合は、このツールキットをお勧めします。ときどき使用します - NLP。
他の言語については、この点で役立つパッケージがあると確信しています。
UPDATE1:ユーザーがメッセージにタグを付ける方法がある場合 (stackoverflow のように)、NLP を禁止してこの問題に取り組むことができます。次に、両方のメッセージのタグの共通点を取得して、共通点があるかどうかを確認し、共通項目の上位項目を提案するだけです。
しかし、対処しなければならない問題が他にもあります - タグを必須にすること、さらにユーザーが実際に正しいタグを入力していることを確認する必要があることなど... しかし、それでもこれは問題を大幅に単純化します。
更新 2: Q が更新されたとき - 関心のある特定のキーワード/フレーズがあるため。この種の単純化します。それぞれのメッセージを取得し、それを単語に分割してから、各単語をステミングする必要があります。ステミングの後、このセットをあなたが持っているキーワードのセットと交差させます。セット (S1) を取得します。2 番目のメッセージで同じことを行うと、set(S2) が得られます。S1、S2 を交差します。共通点があればビンゴ!メッセージ 1、メッセージ 2 の間でいくつかのテーマが共通しています。他に何もありません。