[PYTHON] Analysieren Sie Daten mit RegEx 100x Flash Text

Bei der Datenanalyse ist ** FlashText ** ein schnelleres und zuverlässigeres Tool zum Suchen und Ersetzen.

Wenn Sie eine Text- oder Datenanalyse durchgeführt haben, sind Sie möglicherweise bereits mit regulären Ausdrücken (RegEx) vertraut. RegEx hat sich als das Werkzeug entwickelt, das für die Textbearbeitung benötigt wird. Wenn Sie weiterhin RegEx für die Textverarbeitung verwenden, müssen möglicherweise Probleme behoben werden. Warum das? Bei großen Texten kann die Ineffizienz von RegEx die Datenanalyse inakzeptabel zeitaufwändig machen.

In diesem Artikel können Sie Daten 100-mal schneller analysieren als RegEx [Python](https://www.alibabacloud.com/blog/how-to-write-a-headless-web-scraping-bot- in-python_594829? spm = a2c65.11461447.0.0.61739943rkkVz0) Einführung in die Verwendung der Bibliothek "FlashText".

Vergleich von RegEx und FlashText

Bevor Sie mit der Analyse fortfahren, müssen Sie selbst den einfachsten Text von den Quelldaten bereinigen. Dies beinhaltet häufig das Suchen und Ersetzen von Schlüsselwörtern. Suchen Sie beispielsweise im Korpus nach dem Schlüsselwort "Python" oder ersetzen Sie alle "Python" durch "Python".

RegEx ist ein ideales Tool, wenn Sie Hunderte von Schlüsselwörtern suchen und ersetzen müssen. Viele dieser Aufgaben betreffen jedoch die Verarbeitung natürlicher Sprache (NLP). Möglicherweise stoßen Sie auf Zehntausende solcher Vorgänge. Die Verwendung von RegEx zur Erfüllung dieser Anforderungen kann Tage dauern.

Natürlich könnten Sie denken, dass die Parallelisierung des Prozesses dieses Problem lösen könnte, aber in Wirklichkeit macht diese Lösung keinen großen Unterschied.

Gibt es eine andere Möglichkeit, mit diesem Problem umzugehen?

FlashText-Entwickler hatten zu dieser Zeit das gleiche Problem. Einige Untersuchungen ergaben keine Ergebnisse, daher beschloss er, einen neuen Algorithmus zu schreiben.

Bevor wir den zugrunde liegenden Algorithmus verstehen, werfen wir einen Blick auf eine Vergleichstabelle, die die Geschwindigkeit von FlashText bei der Suche und reguläre Ausdrücke bei der Suche zeigt.

image.png

In der obigen Abbildung sehen Sie, dass die Verarbeitungszeit von RegEx mit zunehmender Anzahl von Schlüsselwörtern nahezu linear zunimmt. Auf der anderen Seite wirkt sich die Zunahme der Schlüsselwörter jedoch nicht auf FlashText aus.

Schauen wir uns als nächstes ein anderes Diagramm für die Keyword-Ersetzung an.

image.png

In ähnlicher Weise ändert sich die Verarbeitungszeit von FlashText mit zunehmender Anzahl von Schlüsselwörtern nicht wesentlich.

So machen Sie die Datenbereinigung intelligenter und schneller - FlashText

Wie der Name schon sagt, ist FlashText eine der schnellsten Möglichkeiten, Schlüsselwörter zu suchen und zu ersetzen. Dies ist eine Open-Source-Python-Bibliothek auf GitHub.

Wenn Sie FlashText verwenden, geben Sie zunächst eine Liste mit Schlüsselwörtern an. FlashText verwendet diese Liste, um ein internes Trie-Wörterbuch zu erstellen. Anschließend wird eine Textzeichenfolge gesendet, je nachdem, ob Sie sie suchen oder ersetzen möchten.

Wenn Sie eine Ersetzung durchführen möchten, erstellen Sie eine neue Zeichenfolge mit den Ersetzungsschlüsselwörtern. Um eine Suche durchzuführen, wird eine Liste von Schlüsselwörtern in der Zeichenfolge zurückgegeben. Diese Aufgaben werden nur einmal über die Zeichenfolge wiederholt.

Warum ist FlashText so schnell?

Betrachten Sie ein Beispiel, um wirklich zu verstehen, warum FlashText so schnell ist. Stellen Sie sich einen Satz vor, der aus den drei Wörtern "Ich mag Python" besteht. Angenommen, Sie haben einen Korpus von vier Wörtern {Python, Java, J2ee, Ruby}.

Wenn Sie jedes Wort im Korpus auswählen und prüfen, ob es im Satz enthalten ist, müssen Sie die Zeichenfolge viermal wiederholen.

image.png

Es sind mehrere Iterationen für die n Wörter im Korpus erforderlich. Und jeder Schritt (in der Anweisung? Dies ist die RegEx-Übereinstimmungslogik. Es gibt auch eine andere Methode, die mit der ersten Methode in Konflikt steht. Es geht darum, nach jedem Wort in einem Satz zu suchen, um festzustellen, ob es im Korpus vorhanden ist.

image.png

Für m Wörter in einem Satz haben Sie m Zyklen. In dieser Situation hängt die aufgewendete Zeit nur von der Anzahl der Wörter im Satz ab. Sie können das Wörterbuch verwenden, um diesen Schritt schnell auszuführen.

Der FlashText-Algorithmus verwendet die zweite Methode. Darüber hinaus inspirieren der Aho-Corasick-Algorithmus und die Trie-Datenstruktur diesen Algorithmus.

Wie FlashText funktioniert

Erstellen Sie zunächst eine Trie-Datenstruktur aus dem Korpus. Es sollte wie in der Grafik unten aussehen.

image.png

Start und EOT (End of Term) geben Wortgrenzen an. Entweder ein Leerzeichen, ein Komma oder ein Zeilenrückgabewert. Sie können das Schlüsselwort abgleichen, wenn es auf beiden Seiten Grenzen hat. Dies verhindert Fälle wie Ananas-Apfel-Matching.

Lassen Sie uns Zeichen für Zeichen mit der Zeichenfolge "Ich mag Python" suchen.

image.png

image.png

Dieser Algorithmus sucht Zeichen für Zeichen. Wenn Sie also nach 1 suchen, können Sie leicht darüber springen, da ich nicht unmittelbar danach bin. Mit diesem Mechanismus können Sie alle nicht vorhandenen Wörter überspringen.

Der FlashText-Algorithmus überprüft jedes Zeichen in der Zeichenfolge "Ich mag Python". Selbst wenn das Wörterbuch 1 Million Schlüsselwörter enthält, hat dies keine Auswirkungen auf den Vorgang.

Wann soll FlashText verwendet werden?

Wir empfehlen die Verwendung von FlashText, wenn die Anzahl der Schlüsselwörter 500 überschreitet.

image.png

In Bezug auf die Suche ist FlashText besser als RegEx, wenn die Anzahl der Schlüsselwörter 500 oder mehr beträgt.

Darüber hinaus kann RegEx nach Sonderzeichen wie "^, $, *, d" suchen, die von FlashText jedoch nicht unterstützt werden.

Es stimmt nicht mit Teilwörtern überein (z. B. "worddvec"), aber es stimmt mit vollständigen Wörtern überein ("word2vec").

Werfen wir einen Blick auf die grundlegende Verwendung von FlashText. Versuch es. Sie werden feststellen, dass es viel schneller als RegEx ist.

Im Folgenden finden Sie einen Code, der Ihnen bei der Verwendung von FlashText hilft. Code: Suchen Sie mit FlashText nach Schlüsselwörtern.

image.png

Code: Suchen Sie mit FlashText nach Schlüsselwörtern.

image.png

Fazit

Wir hoffen, dass Sie diesen Artikel lesen und verstehen, dass FlashText ein besseres Tool als RegEx ist. Insbesondere habe ich ein Diagramm gezeigt, das die Leistung von RegEx und FlashText zeigt.

Recommended Posts

Analysieren Sie Daten mit RegEx 100x Flash Text
Wählen Sie Features mit Textdaten aus
Lassen Sie uns Covid-19 (Corona) -Daten mit Python analysieren [Für Anfänger]
[Memo] Textabgleich im Pandas-Datenrahmen mit Flashtext
Datenanalyse mit xarray
Datenbereinigung 2 Datenbereinigung mit DataFrame
Datenbereinigung mit Python
Aufblasen von Textdaten durch erneute Übersetzung mithilfe der Google-Übersetzung in Python
Analysieren Sie die Aktienkurse mithilfe der Pandas-Datenaggregation und der Gruppenoperationen
Ich habe versucht, scRNA-seq-Daten mithilfe der topologischen Datenanalyse (TDA) zu analysieren.