gpt4 book ai didi

redis - 比较 1000 万套彼此

转载 作者:可可西里 更新时间:2023-11-01 11:00:31 24 4
gpt4 key购买 nike

这是我正在进行的设置:

[domain:id] => [keyword_id, keyword_id2, keyword_id3....]....

我想做的是针对每个域,找到其他包含相似关键字的相似域。例如,我“测量”domain:1 和 domain:2 之间相似性的方法是将 intersection(domain:1, domain:2) 除以 union(domain:1, domain:2)。

问题是我有大约 500 万个域,每个域平均有大约几百个关键字。在我现在拥有的硬件上,在嵌套循环中将每个域与其他域进行比较需要数年时间才能完成这种相似性计算。我只对一个域进行了测试:

keys = redis.keys("domain:*");

foreach(keys as key){
long inter = sinterstore("inter_temp", "domain:1", key);
long union = sunionstore("union_temp", "domain:1", key);

float similarity = inter / union;

if(similarity > 0.1){
similar_domains.add(key);
}
}

...

^ 并为这个域计算相似的域大约需要 2 分钟。为 500 万个域执行此操作需要数年时间。

那我该怎么办呢?我可以毫无问题地将这个程序移到最昂贵的 Amazon EC2 实例上,每周花一个小时来计算所有内容,然后将其发送回我的主机,但这是否有帮助,还是我的数据太多了?

最佳答案

而不是一个一个地比较每个域。你不能创建一批 say 100 并将该域中的所有键传递给 Redis,它会为你做联合/交集。

例如

SADD domain:1   a b c d e f 
SADD domain:2 a c e
SADD domain:3 c e f h

SINTERSTORE destination domain:1 domain:2 domain:3
will result following keys [a, b ,c ,d ,e ,f, h] in destination set
and

SINTERSTORE destination domain:1 domain:2 domain:3
will result following keys [c ,e] in destination set

关于redis - 比较 1000 万套彼此,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26876260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com