Contexte :
La correspondance des chaînes est cruciale lors de la vérification du texte extraits d’images ou d’autres sources. Cependant, les outils OCR introduisent souvent des erreurs, ce qui rend la correspondance exacte des chaînes peu fiable. Cela soulève la nécessité d'un algorithme efficace pour comparer les chaînes extraites à un ensemble de données, même en présence d'erreurs.
Approche :
Lorsque l'utilisation de Spark pour cette tâche peut ne soit pas idéal, nous présentons une approche qui combine plusieurs transformateurs d'apprentissage automatique :
Mise en œuvre :
<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>
Cette approche exploite LSH pour identifier efficacement les chaînes similaires, même avec des erreurs. Le seuil de 0,75 peut être ajusté en fonction du niveau de similarité souhaité.
Mise en œuvre de 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>
Ressources associées :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!