私はfreebaseから映画情報を抽出しようとしています。私は映画の名前、監督と俳優の名前とIDが必要です。Amazon mapreduceを使ってfreebase quad dumpを解析する方法
ディレクターIDへの参照がなく、ディレクター名がないため、フリーベースのトピックダンプを使用するのは難しいと感じました。
このタスクにはどのようなアプローチが適していますか?私は何とか全部のクワッドダンプを解析する必要がありますか?または、ある種の方法がありますか?
私はfreebaseから映画情報を抽出しようとしています。私は映画の名前、監督と俳優の名前とIDが必要です。Amazon mapreduceを使ってfreebase quad dumpを解析する方法
ディレクターIDへの参照がなく、ディレクター名がないため、フリーベースのトピックダンプを使用するのは難しいと感じました。
このタスクにはどのようなアプローチが適していますか?私は何とか全部のクワッドダンプを解析する必要がありますか?または、ある種の方法がありますか?
クワッドダンプを使用する必要がありますが、4GB未満であり、Hadoop、MapReduce、またはクラウド処理のためには必要ありません。まともなラップトップはうまくいくはずです。カップル歳のラップトップ上で、このシンプル志向のコマンド:
time bzgrep '/film/' freebase-datadump-quadruples.tsv.bz2 | wc -l
10394545
real 18m56.968s
user 19m30.101s
sys 0m56.804s
を抽出し、20分以内にフィルムドメインを参照するすべてのものをカウントします。ファイルを複数回通過させる必要がある場合でも、1時間以内で作業全体を完了することができます。これは、貧弱なコンピューティングリソースを必要としないことを意味します。
俳優を得るために中間ノード(Freebaseの話すCVT)を横断する必要がありますが、残りの情報は対象の映画ノードに直接接続する必要があります。
トム
まず第一に、私は完全にビューと彼の提案のトムのポイントを共有します。 UNIXのコマンドラインツールを使ってFreebaseのデータダンプからデータの「面白い」スライスを取ることがよくあります。
しかし、Freebaseデータをローカルの 'グラフ'ストレージシステムにロードし、そのシステムから利用可能なAPIおよび/またはクエリ言語を使用して、後で処理するためにデータとやりとりすることもできます。
私はRDFを使用しています。データモデルは非常に似ており、FreebaseデータダンプをRDFに変換するのは非常に簡単です(参照)。 Apache JenaのTDBストア(http://incubator.apache.org/jena/documentation/tdb/)にロードし、Jena APIまたはSPARQLを使用して処理します。
MapReduceで実行する必要があるものを実装するのが合理的でスケーラブルなアプローチですが、これは処理の量がFreebaseデータの大部分に触れているだけで、行数を計るほど簡単ではない。これは自分のマシンを使用するよりも高価です.Hadoopクラスタが必要な場合や、Amazon EMRを使用する必要がある場合。 (私はおそらくfreebase2rdf ;-)のMapReduceバージョンを書くべきである)
私の2セント。