Algorithm 我如何对常用词列表进行排序,以尽可能使用最独特的词找到有效的组合?

Algorithm 我如何对常用词列表进行排序,以尽可能使用最独特的词找到有效的组合?,algorithm,optimization,set-cover,Algorithm,Optimization,Set Cover,我列出了最常用的单词,这些单词来自谷歌公开的ngram数据 我有: 6800个常用内存 4800克 2500频繁4grams 1100个常用的5grams 示例2 ngram类似于: “狗” “一本书” “三把椅子” 等等 示例5 ngram类似于: “从前在那里” “很久以前有” “那是一个黑暗的夜晚” 等等 我还列出了2000个常用词 1) 我想找出我的各种列表中数量最少的ngram的哪个组合包含频繁单词列表中数量最多的单词 例如,如果我发现200个2Gram、40个3克、50个4克和20个

我列出了最常用的单词,这些单词来自谷歌公开的ngram数据

我有:

6800个常用内存 4800克 2500频繁4grams 1100个常用的5grams

示例2 ngram类似于:

“狗” “一本书” “三把椅子” 等等

示例5 ngram类似于: “从前在那里” “很久以前有” “那是一个黑暗的夜晚” 等等

我还列出了2000个常用词

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

例如,如果我发现200个2Gram、40个3克、50个4克和20个5克使用了1800个常用词,这将是一个成功。我编造了这些比率,但我想找出使用大多数单词的少于500个组合

2) 我还想从列表中找出包含最多单词的各种ngram的最小组合数

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


我面临的问题是,我不知道我将如何着手做这件事。我认为hadoop和mapreduce的方向是正确的。。。但任何帮助都将不胜感激

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

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


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

@Jeremy,你能告诉我们你在CS方面有什么背景吗?@AlptiginJalayr我对PHP、JavaScript和MySQL很有信心。。。但我以前从未尝试过像这样的机器学习。这可能有点超出我的能力范围,但我希望至少尝试了解解决问题所涉及的技术。这真的很有帮助,谢谢。我想得太多了。是时候给我剑桥的朋友发电子邮件了——现在我知道我在问什么了!我真的很感谢你的回答。干杯