lst_train
中大约有 98,000 句话(长度在 5 - 100 个单词之间),lst_test
中则有约 1000 句话(长度在 5 - 100 个单词之间)。对于 lst_test
中的每个句子,我想找出它是否从 lst_train
中的某个句子剽窃而来。如果被剽窃,我应该返回在 lst_train
中的 id,否则返回 null。
现在,我想计算每个 lst_test
中的句子与 lst_train
中的每个句子之间的 Jaccard 相似度。下面是我的代码,其中 b.JaccardSim 计算两个句子之间的 Jaccard 相似度:
lst_all_p = []
for i in range(len(lst_test)):
print('i:', i)
lst_p = []
for j in range(len(lst_train)):
b = textSimilarity.TextSimilarity(lst_test[i], lst_train[j])
lst_p.append(b.JaccardSim(b.str_a,b.str_b))
lst_all_p.append(lst_p)
但我发现每次将lst_train中的每个句子与一个句子计算一次需要超过1分钟。由于大约有1000个句子,可能需要花费约1000分钟才能完成。时间太长了。
你们知道如何加快计算速度或更好的方法来解决检测句子是否从lst_train中抄袭的问题吗?