>백엔드 개발 >파이썬 튜토리얼 >기계 학습 변환기를 사용하여 오류가 발생하기 쉬운 텍스트와 효율적인 문자열 일치를 위해 Apache Spark를 어떻게 사용할 수 있습니까?

기계 학습 변환기를 사용하여 오류가 발생하기 쉬운 텍스트와 효율적인 문자열 일치를 위해 Apache Spark를 어떻게 사용할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-03 02:27:29850검색

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-그램(예: 3-gram)을 생성합니다.
  3. 벡터화기: n-그램을 숫자 벡터로 변환하여 다음을 허용합니다. 거리 계산용.
  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개의 유사한 항목을 출력해야 하는 Spark 작업 최적화](https://stackoverflow.com/questions/53917468/optimize-spark-job-that- 각 항목마다 유사성을 계산해야 함)

위 내용은 기계 학습 변환기를 사용하여 오류가 발생하기 쉬운 텍스트와 효율적인 문자열 일치를 위해 Apache Spark를 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.