1

大規模なデータセットのngram頻度を生成したいと思います。ウィキペディア、より具体的には、FreebaseのWEXは私の目的に適しています。

翌日かそこらでそれを行うための最良かつ最も費用効果の高い方法は何ですか?

私の考えは次のとおりです。

  • 正規表現を使用して文と単語を分割するPostgreSQL。私はすでにPostgreSQLにWEXダンプを持っており、分割を行うための正規表現をすでに持っています(ここでは主要な精度は必要ありません)
  • Hadoopを使用したMapReduce
  • MapReduceとAmazonのElasticMapReduceは、ほとんど何も知りません。

Hadoopでの私の経験は、3つのEC2インスタンスでPiを非常に非効率的に計算することで構成されています。私はJavaが得意で、Map+Reduceの概念を理解しています。PostgreSQLは簡単に並列化できないため、長い時間がかかるのではないかと心配しています。

それを行う他の方法はありますか?次の数日でそれを成し遂げるための私の最善の策は何ですか?

4

2 に答える 2

2

私の意見では、Hadoop は 2 つの優れた機能を提供します。並列タスクの実行 (マップのみのジョブ) と分散ソート (マップとリデュースの間のシャッフル)
NGram の場合、ngram を発行する並列タスク (マッパー) の両方が必要なようですシャッフル - 各 ngram の数をカウントするので、
ここでの Hadoop は理想的なソリューションだと思います。

于 2012-12-06T18:30:32.717 に答える
2

Mapreduce は問題なく動作し、ほとんどの入出力シャッフルは pig で行うことができます。

見る

http://arxiv.org/abs/1207.4371

一部のアルゴリズムの場合。

もちろん、確実に実行を開始するために、実際にこのタスクに mapreduce を使用する必要はありません。入力を自分で分割し、単一の入力ファイルの ngram を計算し、後で ngram 頻度を集計する最も簡単で高速なプログラムを作成します。

于 2012-12-06T15:46:18.273 に答える