使用概率数据结构进行文本匹配(Python)

时间:2016-12-15 17:12:23

标签: python data-structures bloom-filter minhash

我有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可能有一些潜力,但我无法理解它将如何应用于这个问题。

0 个答案:

没有答案