Heim > Backend-Entwicklung > Python-Tutorial > Wie kann Apache Spark mithilfe von Machine-Learning-Transformatoren für einen effizienten String-Abgleich mit fehleranfälligem Text verwendet werden?

Wie kann Apache Spark mithilfe von Machine-Learning-Transformatoren für einen effizienten String-Abgleich mit fehleranfälligem Text verwendet werden?

Barbara Streisand
Freigeben: 2024-11-03 02:27:29
Original
900 Leute haben es durchsucht

How can Apache Spark be used for efficient string matching with error-prone text using machine learning transformers?

Effizienter String-Abgleich in Apache Spark für fehleranfälligen Text

Hintergrund:

Der String-Abgleich ist bei der Textüberprüfung von entscheidender Bedeutung aus Bildern oder anderen Quellen extrahiert. OCR-Tools führen jedoch häufig zu Fehlern, wodurch die genaue Übereinstimmung von Zeichenfolgen unzuverlässig wird. Dies erhöht den Bedarf an einem effizienten Algorithmus, um extrahierte Zeichenfolgen mit einem Datensatz zu vergleichen, selbst wenn Fehler vorliegen.

Ansatz:

Während der Verwendung von Spark für diese Aufgabe möglicherweise Sollte dies nicht ideal sein, stellen wir einen Ansatz vor, der mehrere Machine-Learning-Transformatoren kombiniert:

  1. Tokenizer: Zerlegt die Zeichenfolge in Token, um Fehler wie das Ersetzen von Zeichen zu behandeln.
  2. NGram: Erstellt n-Gramm (z. B. 3-Gramm), um fehlende oder beschädigte Zeichen zu berücksichtigen.
  3. Vektorisierer: Konvertiert n-Gramm in numerische Vektoren und ermöglicht so für Entfernungsberechnungen.
  4. LSH (Locality-Sensitive Hashing): Führt eine ungefähre Suche nach dem nächsten Nachbarn auf den Vektoren durch.

Implementierung:

<code class="scala">import org.apache.spark.ml.feature.{RegexTokenizer, NGram, HashingTF, MinHashLSH, MinHashLSHModel}

val tokenizer = new RegexTokenizer()
val ngram = new NGram().setN(3)
val vectorizer = new HashingTF()
val lsh = new MinHashLSH()

val pipeline = new Pipeline()
val model = pipeline.fit(db)

val dbHashed = model.transform(db)
val queryHashed = model.transform(query)

model.stages.last.asInstanceOf[MinHashLSHModel]
  .approxSimilarityJoin(dbHashed, queryHashed, 0.75).show</code>
Nach dem Login kopieren

Dieser Ansatz nutzt LSH, um ähnliche Zeichenfolgen auch bei Fehlern effizient zu identifizieren. Der Schwellenwert von 0,75 kann je nach gewünschtem Ähnlichkeitsgrad angepasst werden.

Pyspark-Implementierung:

<code class="python">from pyspark.ml import Pipeline
from pyspark.ml.feature import RegexTokenizer, NGram, HashingTF, MinHashLSH

model = Pipeline(stages=[
    RegexTokenizer(pattern="", inputCol="text", outputCol="tokens", minTokenLength=1),
    NGram(n=3, inputCol="tokens", outputCol="ngrams"),
    HashingTF(inputCol="ngrams", outputCol="vectors"),
    MinHashLSH(inputCol="vectors", outputCol="lsh")
]).fit(db)

db_hashed = model.transform(db)
query_hashed = model.transform(query)

model.stages[-1].approxSimilarityJoin(db_hashed, query_hashed, 0.75).show()</code>
Nach dem Login kopieren

Verwandte Ressourcen:

  • [Spark-Job optimieren, der die Ähnlichkeit jedes einzelnen Eintrags berechnen und für jeden die Top-N-ähnlichen Elemente ausgeben muss](https://stackoverflow.com/questions/53917468/optimize-spark-job-that- (muss-jede-zu-jedem-Eintrag-Ähnlichkeit-und-aus-berechnen)

Das obige ist der detaillierte Inhalt vonWie kann Apache Spark mithilfe von Machine-Learning-Transformatoren für einen effizienten String-Abgleich mit fehleranfälligem Text verwendet werden?. 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