Heim > Backend-Entwicklung > Python-Tutorial > Wie können wir Regex-Ersetzungen zum Entfernen von Wörtern aus Millionen von Sätzen in Python beschleunigen?

Wie können wir Regex-Ersetzungen zum Entfernen von Wörtern aus Millionen von Sätzen in Python beschleunigen?

Linda Hamilton
Freigeben: 2024-12-03 04:30:10
Original
675 Leute haben es durchsucht

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

Regex-Ersetzungen in Python beschleunigen

Problem

Der folgende Python-Code zielt darauf ab, bestimmte Wörter effizient aus einer großen Sammlung von Sätzen zu entfernen und so dies sicherzustellen Ersetzungen erfolgen nur an Wortgrenzen:

import re

for sentence in sentences:
  for word in compiled_words:
    sentence = re.sub(word, "", sentence)
Nach dem Login kopieren

Dieser Ansatz funktioniert zwar, ist aber langsam und dauert Stunden, um Millionen von Sätzen zu verarbeiten. Es ist notwendig, schnellere Lösungen zu erforschen.

Schnellere Regex-Methode

Eine optimierte Version des Regex-Ansatzes kann die Leistung erheblich verbessern. Anstatt eine langsame Regex-Vereinigung zu verwenden, die mit zunehmender Anzahl verbotener Wörter ineffizient wird, kann ein Trie-basierter Regex erstellt werden.

Ein Trie ist eine Datenstruktur, die verbotene Wörter effizient organisiert. Durch die Verwendung eines Trie kann ein einzelnes Regex-Muster generiert werden, das Wörter an Wortgrenzen genau ersetzt, ohne dass der Leistungsaufwand für die Prüfung jedes Wortes einzeln anfällt.

Dieser Trie-basierte Regex-Ansatz kann mit den folgenden Schritten implementiert werden:

  1. Konstruieren Sie eine Trie-Datenstruktur aus den verbotenen Wörtern.
  2. Konvertieren Sie den Trie in einen regulären Ausdruck Muster.
  3. Verwenden Sie das Regex-Muster für effiziente Wortersetzungen.

Satzbasierter Ansatz

Für Situationen, in denen Regex nicht geeignet ist, ist eine schnellere Alternative möglich unter Verwendung eines satzbasierten Ansatzes.

  1. Konstruieren Sie einen Satz von Verboten Wörter.
  2. Teilen Sie jeden Satz in Wörter auf.
  3. Entfernen Sie verbotene Wörter aus der Liste der geteilten Wörter.
  4. Rekonstruieren Sie den Satz aus der geänderten Wortliste.

Diese Methode vermeidet den Aufwand für den Abgleich regulärer Ausdrücke, ihre Geschwindigkeit hängt jedoch von der Größe des gesperrten Worts ab set.

Zusätzliche Optimierungen

Um die Leistung weiter zu verbessern, ziehen Sie zusätzliche Optimierungen in Betracht:

  • Kompilieren Sie Ihre verbotenen Wortmuster sowohl für reguläre Ausdrücke als auch für satzbasierte Methoden vor.
  • Parallelisieren Sie den Austauschprozess über mehrere CPU-Kerne hinweg.
  • Erwägen Sie die Verwendung eines Vorab trainiertes Sprachmodell zur Worterkennung und -entfernung.

Das obige ist der detaillierte Inhalt vonWie können wir Regex-Ersetzungen zum Entfernen von Wörtern aus Millionen von Sätzen in Python beschleunigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage