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