Вычислить сходство между предложениями с помощью Spark [duplicate]

Вы не можете просто назначить значение символу в строке. Используйте этот метод для замены значения определенного символа:

name = "India"
result=name .replace("d",'*')

Вывод: In * ia

Кроме того, если вы хотите заменить say * для всех вхождений первого символа кроме первого символа, например. строка = лепетный вывод = ba ** le

Код:

name = "babble"
front= name [0:1]
fromSecondCharacter = name [1:]
back=fromSecondCharacter.replace(front,'*')
return front+back
20
задан mrtnsd 12 May 2017 в 13:14
поделиться

1 ответ

Я бы не использовал Spark в первую очередь, но если вы действительно привержены конкретному стеку, вы можете комбинировать кучу трансформаторов мл, чтобы получить наилучшие совпадения. Вам понадобятся Tokenizer (или split):

import org.apache.spark.ml.feature.RegexTokenizer

val tokenizer = new RegexTokenizer().setPattern("").setInputCol("text").setMinTokenLength(1).setOutputCol("tokens")

NGram (например, 3 грамма)

import org.apache.spark.ml.feature.NGram

val ngram = new NGram().setN(3).setInputCol("tokens").setOutputCol("ngrams")

Vectorizer (например CountVectorizer или HashingTF):

import org.apache.spark.ml.feature.HashingTF

val vectorizer = new HashingTF().setInputCol("ngrams").setOutputCol("vectors")

и LSH:

import org.apache.spark.ml.feature.{MinHashLSH, MinHashLSHModel}

// Increase numHashTables in practice.
val lsh = new MinHashLSH().setInputCol("vectors").setOutputCol("lsh")

Объединить с Pipeline

import org.apache.spark.ml.Pipeline

val pipeline = new Pipeline().setStages(Array(tokenizer, ngram, vectorizer, lsh))

Fit на примерах:

val query = Seq("Hello there 7l | real|y like Spark!").toDF("text")
val db = Seq(
  "Hello there                   
20
ответ дан user8371915 19 August 2018 в 06:44
поделиться
  • 1
    Как быстро это происходит? У меня есть два набора данных с 10 миллионами и 70 миллионами строк. Мне приходится сравнивать строки в них. Сколько времени это займет? И как упоминалось в этом ответе, что бы вы сделали, если не искры? – Ravi Ranjan 11 January 2018 в 06:08
  • 2
    @RaviRanjan Быстро сравнить с чем? – user8371915 21 January 2018 в 16:23
  • 3
    Я работаю над вычислением расстояния между левенштейном между 10 и 70 миллионами строк. Для этого, конечно, потребуется время, которое было бы очень много. У меня было два вопроса: как быстро вышеназванный алгоритм и что бы вы сделали, если не используете искру? – Ravi Ranjan 22 January 2018 в 06:54
Другие вопросы по тегам:

Похожие вопросы: