我正准备使用 Python 在相当大的数据集(400,000 行)上运行重复数据删除。在DedupeMatching
该类的文档中,既有match
和matchBlocks
功能。对于match
文档,建议仅在中小型数据集上使用。通过查看代码,我无法收集在匹配时如何比仅在更大的数据集上matchBlocks
表现block_data
更好。match
generator=True
我尝试在一个小型数据集(10,000 个实体)上运行这两种方法,但没有发现差异。
data_d = {'id1': {'name': 'George Bush', 'address': '123 main st.'}
{'id2': {'name': 'Bill Clinton', 'address': '1600 pennsylvania ave.'}...
{id10000...}}
然后是方法A:
blocks = deduper._blockData(data_d)
clustered_dupes = deduper.matchBlocks(blocks, threshold=threshold)
或方法 B
clustered_dupes = deduper.match(blocks, threshold=threshold, generator=True)
(然后计算密集型部分正在对象for-loop
上运行clustered_dupes
。
cluster_membership = {}
for (cluster_id, cluster) in enumerate(clustered_dupes):
# Do something with each cluster_id like below
cluster_membership[cluster_id] = cluster
我期望/想知道是否存在性能差异。如果是这样,您能否指出显示这一点的代码并解释原因?