0

我有最常用的单词列表,这些单词来自 Google 公开的 ngram 数据。

我有:

6800 频繁 2 克 4800 频繁 3 克 2500 频繁 4 克 1100 频繁 5 克

一个示例 2 ngram 将类似于:

《狗》《一本书》《三把椅子》等

一个示例 5 ngram 类似于:“从前有”“从前有”“这是一个黑暗的和”等等。

我还有一个包含 2000 个常用词的列表。

1)我想从我的各种列表中找出最少数量的 ngram 组合包含频繁单词列表中最多的单词。

例如,如果我发现 200 个 2 克、40 个 3 克、50 个 4 克和 20 个 5 克使用了 1800 个常用词,那将是成功的。我把这些比率做了起来,但我想找到少于 500 个使用大部分单词的组合。

2)我还想从列表中找到包含最多单词的各种 ngram 组合的最少数量。

例如,如果我能找到 500 个使用超过 2000 个不同单词的 ngram,那就太好了。

我遇到的问题是我不知道该怎么做。我认为 hadoop 和 mapreduce 的方向是正确的......但任何帮助将不胜感激!

4

1 回答 1

2

你有大约 15k ngrams。这是一个非常小的数据集。它可能适合 1 MB 内存,可能不到您机器上总内存的 1/5000。你不需要 hadoop 来解决这样的问题。此外,这根本不是一个真正的机器学习问题,它只是一个优化问题。

您可以将您的 n-gram 视为(小)单词集,而将您的常用单词列表视为更大的集合。对于您的第一个问题,您希望选择最少数量的 n-gram,以便您可以使用这些 n-gram 覆盖(或尽可能接近覆盖)频繁单词列表。这正是一个套套问题。您可能不会得到确切的解决方案,但有一些简单的启发式方法效果很好。

但是,我并不完全清楚您的第一个问题与第二个问题有何不同。

于 2013-02-14T00:20:12.000 回答