我正在处理十万(100000)个文档(平均文档长度约为500个术语)。对于每个文档,我希望通过余弦相似度得到前k(例如k=5)个相似文档。那么如何通过Python来高效地实现这一点呢。在
以下是我所做的:对每个文档,进行文本分割,删除停止字,计算词频(tf)
所以我们得到了tf矩阵,大约100000个文档*600000个术语
do 1-pairwise_distances(tf_矩阵,metric=“余弦”)
对于每个文档,获取前k个相似文档。在
我用i5-2.5GHz运行我的代码,12小时过去了,但它仍在工作。所以我想知道如何优化我的代码或过程。在
我的想法是:对于每个文档,进行功能选择,只保留tf>;1的术语
首先进行聚类,然后计算每个聚类内的余弦相似度
既然我只需要top k个相似文档,我是否需要计算所有成对余弦相似度?在
PythonGPU编程还是并行编程?在
那么,你有什么好主意吗?在
非常感谢。在
我知道有一个similar question,但那不是我想要的。在
更新1
感谢@orange,在分析之后,我发现第2步是瓶颈!下面是示例代码:def construct_dt_matrix():
dt_matrix = pd.DataFrame(columns=['docid'])
docid = 0
for f in files:
# text seg