Поиск сходства между строками в столбцах фрейма данных - PullRequest
0 голосов
/ 21 июня 2019

У меня есть такие данные

name     name in another column 
-------------------------------
raju      vasu
ramana    seshu
seshu     ramana

Я хочу вычислить сходство между этими столбцами

raju * vasu сходство

вот так я хочу получить оценку сходства для каждой строки

name     name in another column  similarity
-------------------------------------------
raju     vasu                    0.1
ramana   seshu                   0.2
seshu    ramana                  0

Ответы [ 3 ]

0 голосов
/ 21 июня 2019

fuzzywuzzy модуль может быть использован для сопоставления строк

например

>>> from fuzzywuzzy import fuzz
>>> fuzz.ratio("this is a test", "this is a test!")
    97
>>> fuzz.partial_ratio("this is a test", "this is a test!")
    100

Для получения более подробной информации посетите https://pypi.org/project/fuzzywuzzy/

0 голосов
/ 21 июня 2019

Fuzzy wuzzy хорош, чтобы делать то, что вы хотите, но очень медленный, если в вашем наборе данных много строк.

я бы использовал векторизатор из sklearn (например: TfidfVectorizer) для преобразования строк в вектор, тогдапередать его в косинусе-сходстве (от sklearn aswell)

0 голосов
/ 21 июня 2019

Этот пост , вероятно, отвечает на ваш вопрос.

Краткий пример кода

from difflib import SequenceMatcher

names_a = ["raju", "ramana", "seshu"]
names_b = ["vasu", "seshu", "ramana"]
similar = [SequenceMatcher(None, a, b).ratio() for a,b in zip(names_a, names_b)]

Выход:

In [7]: similar
Out[7]: [0.5, 0.0, 0.0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...