为大型数据集生成 ngram 频率

Posted

技术标签:

【中文标题】为大型数据集生成 ngram 频率【英文标题】:Producing ngram frequencies for a large dataset 【发布时间】:2012-12-06 15:38:41 【问题描述】:

我想。***,或者更具体地说,Freebase 的 WEX 适合我的目的。

在接下来的一天左右最好和最经济有效的方法是什么?

我的想法是:

PostgreSQL 使用正则表达式来拆分句子和单词。我已经在 PostgreSQL 中有 WEX 转储,并且我已经有正则表达式来进行拆分(这里不需要主要准确性) MapReduce 与 Hadoop MapReduce 与 Amazon 的 Elastic MapReduce,我对此几乎一无所知

我的 Hadoop 经验包括在三个 EC2 实例上计算 Pi 的效率非常低。我精通Java,并且了解Map + Reduce 的概念。 我担心 PostgreSQL 需要很长时间,因为它不容易并行化。

还有其他方法吗?在接下来的几天里,我最好的选择是什么?

【问题讨论】:

【参考方案1】:

Mapreduce 可以正常工作,并且可能您可以通过 pig 完成大部分输入输出混洗。

http://arxiv.org/abs/1207.4371

对于一些算法。

当然,为了确保您能顺利开始,您实际上并不需要使用 mapreduce 来执行此任务;只需自己拆分输入,制作最简单的快速程序来计算单个输入文件的 ngram,然后聚合 ngram 频率。

【讨论】:

【参考方案2】:

Hadoop 为您提供了两个好东西,在我看来主要是:并行任务运行(仅映射作业)和分布式排序(在 map 和 reduce 之间洗牌 对于 NGram,您似乎需要两者——并行任务(映射器)来发出 ngram 和洗牌——来计算每个 ngram 的数量。 所以我认为这里的 Hadoop 是理想的解决方案。

【讨论】:

以上是关于为大型数据集生成 ngram 频率的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 StreamingHttpResponse 生成 PDF,因为可以使用 CSV 来生成大型数据集?

无法为大型数据集运行 Spark 作业

在 python 中处理大型数据集的最佳方法

Python 帮助延迟加载大型数据集

FFT后如何得到幅度和对应的频率

如何访问 S3 上的 aws 公共数据集?