私は最近、Sina Weibo の「あなたに興味があるかもしれない人々」の間接的なフォローアップ推奨のように、2 次接続の関係をいくつか見つけ出す必要のあるプロジェクトに取り組みました。簡単な説明は次のとおりです。フォローしている N 人の人が XXX もフォローしています。 プログラムの実装で実際に探しているのは、User1 が 10 人のユーザー {User3、User4、User5、...、User12} をフォローしていて、セット UF1 として記録されている場合、UF1 のこれらのユーザーもフォロー セットを持ち、UF3 (User3 がフォローしているユーザー)、UF4、UF5、...、UF12 として記録されます。また、これらのセットの間には共通部分があり、ほとんどのセットの共通部分によって生成される共通部分こそが、探しているもの、つまり関心のある人々です。 2 次接続アルゴリズムの実装に関する情報をオンラインで検索しました。そのほとんどは、幅検索アルゴリズムを検索するだけで、ためらいの深さは 2 以内であると判断されています。このアルゴリズムは実際には非常に簡単です。最初のステップは、フォローしている人を見つけることです。2 番目のステップは、これらの人がフォローしている人を見つけることです。最後に、2 番目のステップの結果で最も頻繁に表示される 1 人以上の人を見つければ完了です。 しかし、他のユーザーがいる場合、計算中にこれらのユーザーのフォロー関係が必ずメモリに格納され、計算中に順番に検索されます。まず、明確な診断比較がなく、その効果はHadoopに基づくものほど良くないことを説明する必要があります。私はHadoopを使用して実装したいだけで、最近も学習しています。不備があれば、指摘してください。 まず、初期データはファイルであり、各行は ida+'\t'+idb という関係に従います。つまり、ida は idb に従います。次に、2 つの Map/Reduce タスクが使用されました。 Map/Reduce 1:任意のユーザーのフォロー セットとフォロー セットを検索します。図に示すように: コードは次のとおりです。 マップタスク: 出力キー: 間接アクターAのID、値: フォロワーまたはフォローされている人のID
削減タスク: 出力キー: 間接アクター A の ID、値は 2 つの文字列で、最初の文字列はフォローしているすべての人々 (区切り文字で区切られています)、2 番目の文字列はフォローしている人々 (これも区切られています)
Separator.TABLE_String はカスタムセパレーターです。TextPair はカスタムの Writable クラスであり、キーを 2 つの値に対応させ、2 つの値を区別できるようにします。 Map/Reduce 2:前のステップで、B が A に続き、A が T に続く場合、T は B の 2 次接続であり、間接的な人物は A であると結論付けることができるので、同じ 2 次接続の異なる間接的な人物を見つけます。図に示すように: コードは次のとおりです。 マップタスク: 出力時に、キーは2つの文字列レコードのIDで表される2次関係であり、値はこの2次関係によって生成された間接的な人物のIDです。
削減タスク: 出力時、キーは引き続き 2 次関係であり、値はカンマで区切られたすべての間接的な人の ID です。
この時点で、基本的に2次接続は発見されており、その後の処理は非常に簡単です。もちろん、2次接続に基づいて3次、4次も発見されます:) オリジナルリンク: http://my.oschina.net/BreathL/blog/75112 |
>>: App Store 中国、検索アルゴリズムを最適化:名前による検索を復活
2016年にポケモンGOが世界を席巻したときのことを覚えていますか?当時、多くの人々は、拡張現実革...
[[375984]] [51CTO.com クイック翻訳] 人工知能技術がさまざまな業界でますます使...
[[361065]]いたずら好きな老人の周伯同は、黄耀師によって桃花島に十数年閉じ込められていまし...
人工知能(AI)には、「学習意欲を持つインテリジェントエージェント」の開発が伴います。さまざまなアク...
中国のAI研究者の数は過去10年間で10倍に増加したが、そのほとんどは海外、主に米国に居住している。...
新しい言語を学ぶことは間違いなく挑戦です。特に 18 歳以上の人にとっては、これまで触れたことのない...
採用プロセスで人工知能テクノロジーに切り替えるのは難しいかもしれませんが、これらのヒントに従って、会...
ビッグデータを備えたモノのインターネットは産業用 IoT を企業の神経系と考えてください。これは、生...
近年、モバイルラーニングと人工知能は、人々が機械と連携する方法に大きな影響を与えており、個々の顧客に...