挑戦する
このFacebookページの既存のコンテンツ(過去30日間)に基づいて、より人気のあるエントリを決定します。
理論
最初の、そしておそらく私が思いついた重要な質問は、「投稿の人気とその計算方法は?」です。
通常、ソーシャルネットワークの投稿は、その下にあるいいねの数を意味します。 しかし、私たちのケースは普通ではありません。 いいね!の数に単純に依存する場合、潜在的に人気のあるレコードを実際に1つになる前に決定することはできません。
時々、同類/公開時間の比率を使用します。 したがって、1秒あたりのいいねの増加をカウントできます。 そして、増加が大きい場合、結果は次のようになります。 部品からは、このアプローチは正しいですが、部品からのみです。
実際、レコードのいいねの増加は線形ではありません。 また、投稿が公開される時間が長ければ長いほど、その投稿は好かれなくなります。 そして、この活動の低下を考慮する必要があります。
計算の式は次のとおりです。
R = likes / (time^β)
ここで、βは減衰係数です。 次の式で計算できます。
β = 1 / τ
ここで、τは、いいねの成長がe回減少した時間です。
実装
必要なもの:
- NodeJs。毎時過去30日間の投稿情報をダウンロードします
- 前のサイクルのレコードの状態が保存されるデータベース
アルゴリズムは次のとおりです。
- Facebookから投稿をダウンロードする。 エントリごとに必要なもの:
- ID
- 投稿時間
- いいねの数
- 1時間あたりのいいねの増加(このパラメーターを計算して追加します)
- 前のサイクル(1時間前)で保存された各レコードのステータスをデータベースから検索してロードします
- レコードごとに個別に減少係数を計算します。
- 現在のサイクルと前のサイクルのいいねの数を比較して、現在の時間のいいねの増加を計算します(ΔL)
- 現在(ΔL)と前の間隔(ΔpL)のいいねが増えたので、現在のレコードのアクティビティの減少を計算できます。 次の式でこれを行うことができます。
βp = 1 / ( (ΔpL - (ΔpL/e)) / ((ΔpL-ΔL)/time) )
ここで、時間はリクエスト間の秒数です
- ページ全体の平均不況率(β)を計算する
- 式
R = likes / (time^β)
を使用して、各エントリの評価を計算します - ページ全体の平均評価を計算します
- 個々の評価がページの平均値を2(またはそれ以上)回超えるエントリを選択します。
- 次の反復のために、すべてのレコードをデータベースに保存します。 値ΔLのフィールドを追加することを忘れないでください
このアプローチを使用すると、将来の関心を高める可能性が最も高いレコードを特定できます。 計算では、レコードの公開日と聴衆の活動の両方を考慮に入れているため、最も正確な結果を得ることができます。