首页 >后端开发 >Python教程 >我们如何加速正则表达式替换以从 Python 中数百万个句子中删除单词?

我们如何加速正则表达式替换以从 Python 中数百万个句子中删除单词?

Linda Hamilton
Linda Hamilton原创
2024-12-03 04:30:10611浏览

How Can We Speed Up Regex Replacements for Removing Words from Millions of Sentences in Python?

加速 Python 中的正则表达式替换

问题

以下 Python 代码旨在有效地从大量句子集合中删除特定单词,确保替换仅发生在单词边界处:

import re

for sentence in sentences:
  for word in compiled_words:
    sentence = re.sub(word, "", sentence)

虽然这种方法有效,但速度很慢,需要处理数百万个句子的小时。探索更快的解决方案是必要的。

更快的正则表达式方法

正则表达式方法的优化版本可以显着提高性能。可以制作基于 Trie 的正则表达式,而不是使用缓慢的正则表达式联合(随着禁用单词数量的增加而变得低效)。

Trie 是一种有效组织禁用单词的数据结构。通过利用 Trie,可以生成单个正则表达式模式,该模式可以准确地替换单词边界处的单词,而无需单独检查每个单词的性能开销。

这种基于 Trie 的正则表达式方法可以使用以下步骤来实现:

  1. 根据禁用单词构建 T​​rie 数据结构。
  2. 将 Trie 转换为正则表达式模式。
  3. 利用正则表达式模式进行高效的单词替换。

基于集合的方法

对于正则表达式不适合的情况,可以使用更快的替代方法使用基于集合的方法。

  1. 构建一组禁止的单词。
  2. 对于每个句子,将其拆分为单词。
  3. 从拆分单词列表中删除禁用单词。
  4. 从修改后的单词列表中重新构建句子。

这种方法避免了正则表达式匹配的开销,但其速度取决于禁词的大小set。

其他优化

要进一步提高性能,请考虑其他优化:

  • 为正则表达式和基于集合的方法预编译禁用的单词模式。
  • 跨多个 CPU 核心并行化替换过程。
  • 考虑使用预先训练的语言模型进行单词识别和删除。

以上是我们如何加速正则表达式替换以从 Python 中数百万个句子中删除单词?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn