首頁 >後端開發 >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. 根據禁用單字建立 Trie 資料結構。
  2. 將 Trie 轉換為正規表示式模式。
  3. 利用正規表示式模式進行高效率的單字替換。

基於集合的方法

對於正規表示式不適合的情況,可以使用更快的替代方法使用基於集合的方法。

  1. 建構一組禁止的單字。
  2. 對於每個句子,將其拆分為單字。
  3. 從分割單字清單中刪除停用單字。
  4. 從修改後的單字清單重新建構句子。

這種方法避免了正規表示式匹配的開銷,但其速度取決於禁詞的大小set。

其他最佳化

要進一步提高效能,請考慮其他最佳化:

  • 為正規表示式和基於集合的方法預先編譯禁用的單字模式。
  • 跨多個 CPU 核心並行化替換過程。
  • 考慮使用預先訓練的語言模型進行單字辨識和刪除。

以上是我們如何加速正規表示式替換以從 Python 中數百萬個句子中刪除單字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn