我有最常用的单词列表,这些单词来自谷歌的公开ngram数据。
我有:
6800频2克4800频3克2500频4克1100频5克
示例2 ngram类似于:
“狗”、“一本书”、“三把椅子”等等。
例如5ngram是这样的:“曾几何时在那里”“在一段时间上”“它是一个黑暗的和”等等。
我还有一个包含2000个常用单词的列表。
1)我想从我的各种列表中找出最少数量的ngram的哪个组合包含来自频繁词列表的最多数量的单词。
例如,如果我发现200个2克、40个3克、50个4克和20个5克使用了1800个常用单词,那就成功了。我编造了这些比率,但我希望找到不到500个使用大多数单词的组合。
2)我还想从列表中找到包含最高单词总数的各种ngram的最小数量的组合。
例如,如果我能找到500个ngram,使用超过2000个不同的单词,那就太好了。
我遇到的问题是,我不知道如何去做这件事。我认为hadoop和mapreduce的方向是正确的。但任何帮助都将不胜感激!
发布于 2013-02-14 08:20:12
你有大约15k克的重量。这是一个非常小的数据集。它很可能适合1MB的内存,可能不到您机器上总内存的1/5000。你不需要hadoop来解决这样的问题。此外,这根本不是一个真正的机器学习问题,它只是一个优化问题。
您可以将n-gram视为(小)单词集合,而将频繁单词列表视为较大的集合。对于第一个问题,您希望选择最少数量的n-gram,这样您就可以用这些n-gram覆盖(或尽可能接近覆盖)频繁出现的单词列表。这就是一个set cover problem。你可能不会得到一个确切的解决方案,但有一些简单的启发式方法做得很好。
然而,我并不完全清楚你的第一个问题和第二个问题有什么不同。
https://stackoverflow.com/questions/14863479
复制相似问题