背景:
驗證文字時字串符合至關重要從圖像或其他來源提取。然而,OCR 工具經常會引入錯誤,導致精確的字串匹配不可靠。這就需要一種有效的演算法來將提取的字串與資料集進行比較,即使存在錯誤也是如此。
方法:
雖然使用Spark 執行此任務可能會並不理想,我們提出了一種結合多個機器學習轉換器的方法:
實作:
<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>
相關資源:
以上是如何使用機器學習轉換器將 Apache Spark 與容易出錯的文字進行有效的字串比對?的詳細內容。更多資訊請關注PHP中文網其他相關文章!