【问题标题】:How would I sort through lists of frequently used words to find efficient combinations using the most unique words as possible?我将如何对常用单词列表进行排序,以找到使用最独特单词的有效组合?
【发布时间】:2013-02-13 21:28:13
【问题描述】:

我有最常用词的列表,这些词来自 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 的方向是正确的......但任何帮助将不胜感激!

【问题讨论】:

  • @Jeremy,您能告诉我们您在 CS 方面的背景吗?
  • @AlptiginJalayr 我对 PHP、JavaScript 和 MySQL 很有信心……但以前从未尝试过像这样的机器学习。这可能有点出乎我的意料,但我希望至少尝试了解解决问题所涉及的技术。

标签: algorithm optimization set-cover


【解决方案1】:

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

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

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

【讨论】:

  • 这真的很有帮助,谢谢。我想多了。是时候给我在剑桥的朋友发邮件了——现在我知道我在问什么了!我非常感谢您的回复。干杯。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-21
  • 1970-01-01
  • 1970-01-01
  • 2018-07-12
  • 1970-01-01
  • 1970-01-01
  • 2012-03-16
相关资源
最近更新 更多