如何比较许多文本文件的相似性?

时间:2019-08-12 15:15:30

标签: python-3.x performance comparison

首先,对不起,如果有一个明显的解决方案-我是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分钟。在没有完全从头开始重写的情况下,有什么方法可以加快速度?

0 个答案:

没有答案