考虑到人们在谷歌中搜索了100亿个单词。相应 对于每个单词,您都有所有文档ID的排序列表。该列表如下所示:
[Word 1]->[doc_i1,doc_j1,.....]
[Word 2]->[doc_i2,doc_j2,.....]
...
...
...
[Word N]->[doc_in,doc_jn,.....]
我正在寻找一种算法来查找100个罕见的单词对。 一个罕见的单词对是一对单词出现在一起(不一定是连续的) 正好是1个文件。
如果可能的话,我正在寻找比O(n ^ 2)更好的东西。
答案 0 :(得分:2)
事物的表现在很大程度上取决于你要找到100对这样的对,你的想法是你只需要处理总数据集的一小部分。为了利用您只处理一小部分数据这一事实,您应该使用(1.)一种排序算法,该算法允许您在整个集合排序之前很久就找到最小的元素,例如快速排序。然后可以像O(N * log(N1))那样进行排序,其中N1是在找到100对之前实际需要添加到倒排索引的单词数。其他操作的复杂性,即向倒排索引添加单词和检查单词对是否出现在多个文档中也与每个文档的数量呈线性关系单词,所以这些操作应该在开始时快速,然后慢下来,因为以后你每个单词都有更多的文档。
答案 1 :(得分:0)
这与“频繁项集挖掘”相反
即检查最近的出版物:Rare pattern mining: challenges and future perspectives