2012-12-06 95 views
1

我想爲大數據集生成ngram頻率。維基百科,或更具體地說,Freebase的WEX適合我的目的。爲大數據集生成ngram頻率

什麼是最好的和最具成本效益的方式來做到這一點在第二天左右呢?

我的想法是:使用正則表達式

  • PostgreSQL的拆分句子和單詞。我已經有WEX轉儲在PostgreSQL和我已經有正則表達式做分裂(此處不需要大的精度)
  • 的MapReduce與Hadoop的
  • 的MapReduce與Amazon的Elastic MapReduce的,這是我下一個知道一無所知

我對Hadoop的經驗包括非常非常低效地計算三個EC2實例上的Pi。我對Java很好,我也理解Map + Reduce的概念。 PostgreSQL我擔心會花很長時間,因爲它不容易並行化。

還有其他方法可以做到嗎?爲了在接下來的幾天內完成,我最好的選擇是什麼?

回答

2

Mapreduce工作得很好,也許你可以做大部分豬的輸入輸出洗牌。

一些算法見

http://arxiv.org/abs/1207.4371

當然,爲了確保您能夠開始運行,您實際上並不需要爲此任務使用mapreduce;只需自己分割輸入,製作最簡單的快速程序即可計算單個輸入文件的ngram,並稍後彙總ngram頻率。

2

Hadoop的給你兩個好東西,這在我看來主要:parralell任務運行(圖僅供作業)和分佈式排序(圖之間的洗牌和減少
對於n元語法,它看起來像你既需要 - parralel任務(mappers)發出ngram和shuffling - 來計算每個ngram的數量。
所以我認爲Hadoop在這裏是理想的解決方案。