ツイートのストリーム内のトピックを検出するシステム/アルゴリズムに取り組んでいます。
ストップワード、顔文字、URLなどを削除し、ツイートを次のように表現することを考えています。
terms = (t1, t2, ..., tk)
hashtags = (h1, h2, ..., hn)
date = date of tweet
次に、いくつかのクラスタリングアルゴリズムを適用するときに、ツイート間の類似度を使用して、これら3つの値を組み合わせます。返信を処理するので、これはそれよりも少し複雑になります(たとえば、ツイートに返信するとき、ほとんどの場合、同じトピックについて話し続けるなど)。
それがうまくいくかどうかはわかりませんが、これまでに見た問題は、n-gramを識別していないことです。そのため、Barack Obamaはほとんどの場合一緒に表示され、私のシステムでは2つに分かれます。用語(バラクとオバマ)。
私の質問は:
バイグラムもどのように表現できますか?つまり、通常はどのようにモデル化されますか?
私は次のようなものを持っていることを考えました:
Tweet = `Some words here`
terms = `[some, words, here, some words, words here]`
...
しかし、それが正しい方法であるかどうか、考えられるすべてのバイグラムに対してそれを行う必要があるかどうかなどはわかりません。
編集:
私のデータベースには、すべての用語が保存されています。バイグラムも用語であるかのように保存する必要がありますか?