【发布时间】:2018-06-09 04:14:27
【问题描述】:
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中的句子中检测句子是否抄袭的问题吗?
【问题讨论】:
-
基于文本的相似度指标非常慢。尝试对文本数据进行向量化,使用余弦相似度度量,或者一些基于它的方法。
-
hi@CrazyElf,感谢您的 cmets。现在我正在使用 word2vec 来做这件事。
标签: python-3.x nlp