Как увеличить скорость вычисления показателя сходства строк в рамках датафрейма? - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть следующий фрейм данных:

df = pd.DataFrame(data=[[1, 'Berlin',], [2, 'Paris', ],
                    [3, 'Lausanne', ], [4, 'Bayswater',],
                    [5, 'Table Bay', ], [6, 'Bejing',],
                    [7, 'Bombay',], [8, 'About the IIS']],
                    columns=['id', 'text'],)

и я хочу использовать jaro_winkler из библиотеки медуз, чтобы вычислить оценку сходства для каждой строки, сравнить со всеми остальными, и вывести наиболее сходную единицу или получить матрицу оценки сходства следующим образом:

      str1 str2 str3
str1    1   0.6  0.7
str2    0.6  1   0.3
str3    0.7  0.3  1

как я могу получить этот результат как быстрый путь. Теперь я просто использую цикл для сравнения каждого и сохраняю результат в списке.

 def sim_cal(string1, string2):
     similar = jellyfish.jaro_winkler(string1, string2)
     return similar

Но если данные станут большими, скорость будет очень медленной, так что, если есть какой-либо способ может ускорить?

Спасибо.

1 Ответ

0 голосов
/ 24 апреля 2019

С Gensim вы можете делать такие вещи, как this .

Я использовал GloVe для этого временного примера:

enter image description here

Не буду врать, это довольно интересно.

...