背景:
验证文本时字符串匹配至关重要从图像或其他来源提取。然而,OCR 工具经常会引入错误,导致精确的字符串匹配不可靠。这就需要一种有效的算法来将提取的字符串与数据集进行比较,即使存在错误也是如此。
方法:
虽然使用 Spark 执行此任务可能会并不理想,我们提出了一种结合多种机器学习的方法Transformers:
实现:
<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中文网其他相关文章!