como paralelizar muitas comparações de strings (nebulosas) usando apply no Pandas?

Eu tenho o seguinte problema

Eu tenho um quadro de dadosmestre que contém frases, como

master
Out[8]: 
                  original
0  this is a nice sentence
1      this is another one
2    stackoverflow is nice

Para cada linha no Master, procuro outro Dataframeescravo para a melhor correspondência usandofuzzywuzzy. Uso fuzzywuzzy porque as frases correspondentes entre os dois quadros de dados podem diferir um pouco (caracteres extras, etc.).

Por exemplo,escravo poderia ser

slave
Out[10]: 
   my_value                      name
0         2               hello world
1         1           congratulations
2         2  this is a nice sentence 
3         3       this is another one
4         1     stackoverflow is nice

Aqui está um exemplo de trabalho totalmente funcional, maravilhoso e compacto :)

from fuzzywuzzy import fuzz
import pandas as pd
import numpy as np
import difflib


master= pd.DataFrame({'original':['this is a nice sentence',
'this is another one',
'stackoverflow is nice']})


slave= pd.DataFrame({'name':['hello world',
'congratulations',
'this is a nice sentence ',
'this is another one',
'stackoverflow is nice'],'my_value': [2,1,2,3,1]})

def fuzzy_score(str1, str2):
    return fuzz.token_set_ratio(str1, str2)

def helper(orig_string, slave_df):
    #use fuzzywuzzy to see how close original and name are
    slave_df['score'] = slave_df.name.apply(lambda x: fuzzy_score(x,orig_string))
    #return my_value corresponding to the highest score
    return slave_df.ix[slave_df.score.idxmax(),'my_value']

master['my_value'] = master.original.apply(lambda x: helper(x,slave))

A pergunta de 1 milhão de dólares é: posso paralelizar meu código de inscrição acima?

Afinal, todas as linhas demaster é comparado a todas as linhas emslave (slave é um pequeno conjunto de dados e posso armazenar muitas cópias dos dados na RAM).

Não vejo por que não consegui executar várias comparações (ou seja, processar várias linhas ao mesmo tempo).

Problema: não sei como fazer isso ou se isso é possível.

Qualquer ajuda muito apreciada!

questionAnswers(2)

yourAnswerToTheQuestion