ストリーミングデータで以下の情報を特定するための効果的なアルゴリズム/データ構造を知りたいです。
Twitterのようなリアルタイムのストリーミングデータを考えてみましょう。実際のデータを保存するのではなく、主に以下のクエリに関心があります。
実際のデータでクエリを実行する必要がありますが、重複は必要ありません。
完全なデータを保存することに興味がないので、重複する投稿を特定するのは難しいでしょう。ただし、すべての投稿をハッシュして確認することはできます。しかし、重複している投稿も特定したいと思います。どうすればこれを達成できますか。
ユーザーが話し合っている上位kのトピックを特定します。
ユーザーが議論している上位のトピックを特定したいと思います。ツイッターで見られるような最高頻度の単語は欲しくない。代わりに、最も頻繁に使用される単語の高レベルのトピック名を付けたいと思います。
システムをリアルタイムにしたいと思います。つまり、私のシステムはあらゆる量のトラフィックを処理できるはずです。
マップリデュースアプローチを考えることはできますが、同期の問題を処理する方法がわかりません。たとえば、重複する投稿は異なるノードに到達する可能性があり、両方がそれらをインデックスに保存する可能性があります。
典型的なニュースソースでは、データ内のストップワードを削除します。私のシステムでは、幅広いトピックで最も頻繁に使用される単語を特定して、ストップワードリストを更新したいと思います。
これを達成するための効果的なアルゴリズム/データ構造は何でしょうか。
データ内の興味深いパターンを取得するために、トピックを一定期間保存したいと思います。たとえば、金曜日の夜は誰もが映画に行きたがっています。このデータを保存するための効率的な方法は何でしょうか。
Hadoop分散ファイルシステムに保存することを考えていますが、時間の経過とともにこれらのインデックスが大きくなり、I/Oが大きなボトルネックになります。
世界中のツイートからの多言語データを検討してください。地理的領域全体で議論されている同様のトピックを特定するにはどうすればよいですか?
ここには2つの問題があります。1つは、使用されている言語を識別することです。ツイートした人に基づいて識別できます。ただし、この情報はユーザーのプライバシーに影響を与える可能性があります。他のアイデアは、トレーニングアルゴリズムを介してそれを実行することができます。このために現在行われている最良の方法は何ですか。他の問題は、実際に辞書で単語を検索し、それを英語などの一般的な中間言語に関連付けることです。同じ単語が異なるコンテストで使用されているように、語義の曖昧性解消を処理する方法。
単語の境界を特定する
1つの可能性は、ある種のトレーニングアルゴリズムを使用することです。しかし、最善のアプローチは何ですか。これは、実際の文に基づいて単語の境界を識別できるため、語義の曖昧性解消に似ています。
具体的な実装ではなく、プロトタイプの開発とシステムの評価を考えています。リアルタイムのツイッターデータを廃棄することは不可能だと思います。このアプローチは、オンラインで無料で入手できるいくつかのデータでテストできると思います。このデータを入手できるアイデア。
フィードバックをいただければ幸いです。
御時間ありがとうございます。
-バラ