首先,对不起,如果有一个明显的解决方案-我是Python的初学者。我需要尽快在目录中比较多达3,000个文本文件,以查找相似的句子和短语。
我目前正在使用DiffLib SequenceMatcher将文件对相互比较。如果可能的话,我想坚持使用SequenceMatcher,因为我最终想要实现htmlDiff并突出显示文件之间的特定异同。
“文档”是文件名键和文本正文值的字典,因为现在我想向用户显示哪些文件具有很大的相似性。
documents_and_duplicates = {}
checked_docs = []
check_counter = 0 #for testing
start_time = time.time() #for testing
for i in range(len(documents)):
counter = len(documents)
while counter >= 0:
for key, value in documents.items():
if str(list(documents.keys())[i]) != key and list(documents.keys())[i] not in checked_docs and key not in checked_docs:
ratio = SequenceMatcher(None, list(documents.values())[i], value, True).ratio()
if ratio >= .8 and str(list(documents.keys())[i]) not in str(documents_and_duplicates.values()):
documents_and_duplicates.setdefault(list(documents.keys())[i], []).append(key + ' (' + str(ratio) + ')')
check_counter += 1
counter -= 1
checked_docs.append(list(documents.keys())[i])
我的代码可以在大约0.7秒内完成比较,因此对于数百个批处理来说已经足够好了,但是对于大约2,200个文本文件来说,目前大约需要25分钟。在没有完全从头开始重写的情况下,有什么方法可以加快速度?