gpt4 book ai didi

java - 大规模文档共现分析

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:17:43 25 4
gpt4 key购买 nike

我有大约 1000 个文件。其中每个包含大约 20,000 个文档。我还有一个大约 1,000,000 个单词的列表。

我想计算每个词与任何其他词出现的次数。因此,存在大小为 1M X 1M 的稀疏矩阵。

为了加快计算速度,我通过执行以下操作分别处理每个文件:

1- 我机器中的每个内核都在处理一个文件并输出以下格式的文件

WordId1 WordId2 Frequency 

2- 完成每个文件后,我将 1000 个文件合并为一个文件。

这是我目前的方法,但它需要很长时间才能完成,我认为应该有更有效的方法来完成,因此欢迎您提出意见。

最佳答案

我做过这样的一些统计,我把工作分成两步

step1:多线程计数:计算每对的分区id并直接输出相应的分区文件(partition_id =(md5 of pair)/partition_count,分区过程是关键点),(我试过hash_map统计数据(当size大于thread_hold时,将map_data输出到文件,这样可以节省很多磁盘空间,我将输出文件放在不同的磁盘,这样可以加快处理速度)

step2: multi-thread merge:将step1输出的count用map合并(这个过程是在内存中完成的,如果内存不够,选择大的partition_count)

注:mapreduce很容易,step1是map语句,step2是reduce语句,关键过程是partition过程,对应hadoop中reduce过程之前的partition部分

关于java - 大规模文档共现分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21090020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com