使用Python优化大文本数据集中的用户名删除[已关闭]

问题描述 投票:0回答:3
我正在开发一个项目,需要删除包含 510,718 个帖子的数据集中的用户名。该数据集包括 19,346 个唯一用户名。我的目标是用占位符替换帖子中所有出现的用户名(例如“USERNAME”)。我在Python中尝试了四种不同的方法来实现这一点,但这些方法的效率并不令人满意。以下是我尝试过的简要概述:

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

具体:

    是否有任何库或技术可以更有效地处理此任务?
  • 考虑到区分大小写和潜在的边缘情况,如何确保准确删除所有用户名?
  • 在处理大型数据集和执行文本替换时,我应该牢记哪些最佳实践或注意事项?
任何见解或建议将不胜感激。谢谢!

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

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

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

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


0
投票
我发现的最快的解决方案是迭代循环中的用户名(小写和大写版本),并将其替换为“USERNAME”占位符,而不使用正则表达式。如果有人有更好的解决方案,请lmk。


0
投票
一种可能更快的方法是对列运行哈希算法。您希望以有条不紊的方法对该列进行匿名化,同时防止去匿名化。这听起来正是哈希算法的构建目的。

这是一个

相关问题及其解决方案

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