【问题标题】:How to store large number of ngrams efficently?如何有效地存储大量的二元组?
【发布时间】:2011-12-06 04:51:08
【问题描述】:

我从十六进制形式的二进制项目中提取 4 克,这意味着我每个项目最多可以有 65535 克不同的克数。

我想将每个项目与它的克数及其频率相关联,但我对如何存储所有数据感到困惑——这是我的第一次数据挖掘经验,我对最佳实践和常用工具一无所知。

我原本想在关系数据库中构建一个大表,其架构类似于(ITEM-NAME, GRAM1, GRAM2... GRAM65535),并在其中存储频率,但我可以看到这种方法由于列数而非常不切实际。

我知道肯定有更好的解决方案,但我不知道从哪里看。

建议?

【问题讨论】:

  • 生成的“矩阵”是否稀疏? IE。你能期望给定项目的 GRAMn...GRAM65535 值的至少一半可以为 0 吗?

标签: database database-design machine-learning data-mining n-gram


【解决方案1】:

存储 ngram 的最佳方式是 prefixTree 恕我直言。 用于非常高效的库 lingpipe。

树的例子:

 1. gr1
   1. gr2 (item1)
   2. gr3 (item2,item3,item4)
 2. gr3 (item1, tem2)
 3. gr2
  1. g3 (item5,item6)
  2. g4 (item1)

其他选项是以倒排索引的格式存储: ngramm -> 项目

gr1 (item1, item2)
gr2 (item1, item3)
gr3 (item2, item3)
gr4 (item1, item2)

注意:第二个选项不存储对 ngram 至关重要的订单信息...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 2013-11-10
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    相关资源
    最近更新 更多