1

我有一个包含 10,000,000 个字符串的列表,每个字符串都是一个项目的名称。3 到 5 个单词,最多 80 个字符。

然后我有一个包含 5,000 个字符串的列表来匹配。这意味着,对于 5,000 个潜在匹配规则中的每一个,我需要确定它与 10,000,000 个字符串中的多少个匹配。

到目前为止,我已经使用以下内容进行了成对迭代:

def contains_word_fast2(check):
    counter = 0
    try:
        for item in my_list_of_10mm_items:
            if " "+check+" " in item or item.startswith(check + " ") \
                or item.endswith(" " +check):
                    counter += 1
    except:
        return 0

    return counter

我让它在 10,000,000 个字符串的一个子集上工作得很好,但我不知道如何扩展算法。使用概率数据结构有什么建议吗?我知道 MinHash 或 BloomFilter 可能有一些潜力,但我无法理解它将如何应用于此问题。

4

0 回答 0