Оптимизация нечеткого соответствия в PySparkPython

Программы на Python
Ответить
Anonymous
 Оптимизация нечеткого соответствия в PySpark

Сообщение Anonymous »

Я пытаюсь выполнить нечеткое сопоставление некоторых данных через PySpark. Для этого я использую пакет fuzzywuzzy и запускаю его на Databricks.
Мой набор данных очень простой. Он хранится в файле CSV и содержит два столбца: Имя1 и Имя2. Однако я хочу не просто сравнить два значения в одной строке, а сравнить каждое Имя1 со всеми доступными значениями Имя2.
Вот как выглядит мой код,

Код: Выделить всё

from pyspark.sql import functions as f
from fuzzywuzzy import fuzz
from pyspark.sql.types import StringType

# create a simple function that performs fuzzy matching on two strings
def match_string(s1, s2):
return fuzz.token_sort_ratio(s1, s2)

# convert the function into a UDF
MatchUDF = f.udf(match_string, StringType())

# separate the two Name columns into individual DataFrames
df1 = raw_df.select('Name1')
df2 = raw_df.select('Name2')

# perform a CROSS JOIN on the two DataFrames
# CAN THIS BE AVOIDED?
df = df1.crossJoin(df2)

# use the UDF from before to calculate a similarity score for each combination
df = df.withColumn("similarity_score", MatchUDF(f.col("Name1"), f.col("Name2")))
После того, как я получу оценки сходства, я смогу вычислить ранг для каждого имени и таким образом получить наилучшее совпадение.
Что меня беспокоит, так это КРЕСТОВОЕ СОЕДИНЕНИЕ. Это экспоненциально увеличивает количество имеющихся у меня точек данных. Можно ли этого избежать?
Я также открыт для совершенно других подходов, которые позволят выполнить то, что мне нужно, более оптимизированным образом.

Подробнее здесь: https://stackoverflow.com/questions/760 ... in-pyspark
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»