使用Python优化大数据集中的用户名匿名化

问题描述 投票:0回答:1

我正在开发一个项目,需要对包含 510,718 个帖子的数据集中的用户名进行匿名化。该数据集包括 19,346 个唯一用户名。我的目标是用占位符替换帖子中所有出现的用户名(例如“USERNAME”)。我尝试了四种不同的 Python 方法来实现此目的,但除了一种方法已完成但执行不完美之外,所有这些方法在我的 MacBook Pro M1 上都慢得令人望而却步。以下是我尝试过的方法的简要概述:

  1. 完整正则表达式模式:我编译了一个匹配任何用户名(不区分大小写)的单个正则表达式模式,并使用 pandas.Series.str.replace 来替换出现的情况。这个方法很慢。
  2. Dask:尝试使用 Dask 并行化操作以更有效地处理大型数据集。尽管进行了并行化,但速度仍然很慢。
  3. 循环中的单个正则表达式模式:我没有使用单个大型正则表达式,而是循环遍历每个用户名,为每个用户名编译一个正则表达式,并逐一替换出现的情况。这也是缓慢且低效的。
  4. 字典替换:最快的方法是创建一个字典,以用户名(大写和小写)作为键,“USERNAME”作为值,然后使用 pandas.Series.replace 而不使用正则表达式。此方法已完成,但并未完美匿名所有用户名。

关于一些更好的方法有什么建议吗?

python nlp data-science
1个回答
0
投票

我认为你需要拆分问题,首先尝试看看是否可以通过预处理用户名来赢得一些时间,并尝试使用最优化的方式来解决你的问题:

  • 预处理用户名:将用户名的大小写标准化为小写(或大写,但始终相同)。此步骤通过确保您只需处理每个用户名的单一大小写变化来降低复杂性。

  • 矢量化替换功能n:利用矢量化操作来替换用户名。 Pandas 的

    apply
    方法由于其本质上类似于循环的行为,在大型数据集上可能效率低下。相反,可能需要更直接的字符串操作技术,可能使用
    numpy
    来实现更高效的计算。

© www.soinside.com 2019 - 2024. All rights reserved.