gpt4 book ai didi

python - 处理大量组合python的最佳方法

转载 作者:太空宇宙 更新时间:2023-11-04 01:01:31 26 4
gpt4 key购买 nike

我有一堆 Twitter 数据(来自 45 万用户的 3 亿条消息),我正试图通过@mentions 来解开一个社交网络。我的最终目标是拥有一对,其中第一项是一对@mentions,第二项是提及这两个人的用户数。例如:[(@sam, @kim), 25]。 @mentions 的顺序无关紧要,因此 (@sam,@kim)=(@kim,@sam)

首先,我创建了一个字典,其中键是用户 ID,值是一组@mentions

for row in data:
user_id = int(row[1])
msg = str(unicode(row[0], errors='ignore'))

if user_id not in userData:
userData[user_id] = set([ tag.lower() for tag in msg.split() if tag.startswith("@") ])
else:
userData[user_id] |= set([ tag.lower() for tag in msg.split() if tag.startswith("@") ])

然后我遍历用户并创建一个字典,其中键是@mentions 的元组,值是同时提到这两者的用户数量:

for user in userData.keys():
if len(userData[user]) < MENTION_THRESHOLD:
continue
for ht in itertools.combinations(userData[user], 2):
if ht in hashtag_set:
hashtag_set[ht] += 1
else:
hashtag_set[ht] = 1

第二部分需要永远运行。有没有更好的方法来运行它和/或更好的方法来存储这些数据?

最佳答案

与其像现在这样尝试在内存中执行所有这些操作,我建议使用生成器来管道化数据。查看 David Beazely 在 PyCon 2008 上的幻灯片:http://www.dabeaz.com/generators-uk/GeneratorsUK.pdf

特别是,第 2 部分有许多解析大数据的示例,可直接应用于您要执行的操作。通过使用生成器,您可以避免现在的大部分内存消耗,我希望您能看到显着的性能改进。

关于python - 处理大量组合python的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32610951/

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