ホームページ >バックエンド開発 >Python チュートリアル >Python の何百万もの文から単語を削除するための正規表現置換を高速化するにはどうすればよいでしょうか?

Python の何百万もの文から単語を削除するための正規表現置換を高速化するにはどうすればよいでしょうか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-03 04:30:10607ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。