如何从大数据中找出两条相同的信息

发布于 2022-08-24 09:39:25 字数 82 浏览 17 评论 0

有50亿条商品名称信息,每条信息最长是50个字符,给定限制内存是4G,如何从这50亿条商品信息中查找出任意两条相同商品名称信息。给出思路以及算法思路。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜警司 2022-08-31 09:39:26

算法2粗糙版:基于布隆过滤器,扫一遍,找出那些可能是重复的。看完这个数据结构你就懂了。

算法2精确版:使用布隆过滤器,扫一遍,找出那些可能是重复的。再扫一遍,计算它们的出现次数,超过1的就是精确的答案。

---

算法1:基本思路是对n个信息进行相对比较平均的分组(使用 hash(info) % m 分成m组),使得每组构成的哈希表可以放在内存中,且保证相同的两个信息进入同一组,然后再对每一组中的数据建立哈希表进行匹配即可。

4GB内存大约可以存下8000w+个50Bytes,考虑到hash表的空间利用率,假设以5000w为一组,则需要1000组(这个数字可以适当增加,并且使用质数的话通常效果更好)。

时间复杂度和空间复杂度都是O(n)。

p.s. 由于涉及到了外存,所以时间和空间复杂度其实就是扯淡。这个算法需要将所有数据先扫描一次(读取),分组(写入硬盘),再对每组进行查找(再读取),也就是要读2次写1次。

泪之魂 2022-08-31 09:39:26

把商品名称分词,再对分词进行向量运算。然后就把这个问题转换成了向量比较问题,夹角越小则越被认为是同一个商品。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文