首頁 > 後端開發 > Python教學 > 如何使用機器學習轉換器將 Apache Spark 與容易出錯的文字進行有效的字串比對?

如何使用機器學習轉換器將 Apache Spark 與容易出錯的文字進行有效的字串比對?

Barbara Streisand
發布: 2024-11-03 02:27:29
原創
878 人瀏覽過

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

Apache Spark 中針對易錯文字的高效字串比對

背景:

驗證文字時字串符合至關重要從圖像或其他來源提取。然而,OCR 工具經常會引入錯誤,導致精確的字串匹配不可靠。這就需要一種有效的演算法來將提取的字串與資料集進行比較,即使存在錯誤也是如此。

方法:

雖然使用Spark 執行此任務可能會並不理想,我們提出了一種結合多個機器學習轉換器的方法:

  1. Tokenizer:將字串分解為標記以處理字元替換等錯誤。
  2. NGram: 建立 n-gram(例如 3-gram)以解決遺失或損壞的字元。
  3. Vectorizer: 將 n-gram 轉換為數值向量,允許用於距離計算。
  4. LSH(局部敏感雜湊): 對向量執行近似最近鄰搜尋。

實作:

<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>
登入後複製

這種方法利用 LSH 來有效地識別相似的字串,即使有錯誤也是如此。閾值 0.75 可以根據所需的相似度進行調整。

Pyspark 實作:

<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>
登入後複製

相關資源:

  • [最佳化個條目的相似度並為每個條目輸出前N 個相似項](https://stackoverflow.com/questions/53917468/optimize-spark-job-that-必須計算每個條目與每個條目的相似度)

以上是如何使用機器學習轉換器將 Apache Spark 與容易出錯的文字進行有效的字串比對?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板