Как сравнить 2 списка? часть 2
Спасибо, что помогли с 1 частью, но задача усложнилась. У меня есть 2 таблица, я через пандас преобразую их в list, и начинаю сравнение. Так как сравниваю строку из списка со всем списком, то у меня возникае проблема. Мне нужен цикл для сравнения всех строк из 1 таблицы со второй таблицей. Решение частичное - громоздкое и может не совсем правильное.
import difflib
def similarity(s1, s2):
normalized1 = s1.lower()
normalized2 = s2.lower()
matcher = difflib.SequenceMatcher(None, normalized1, normalized2)
return matcher.ratio()
a = ['мама', 'мыла', 'раму']
# Проблема зарыта здесь
# Изначально у меня таблица из строк
мама мыла раму
папа купил приложение
дядя настроил приложение
a = ['мама', 'мыла', 'раму'] # a = df[0].lower().split(' ')
# А здесь также таблица
человек развивает свой у
мама любит котят
мама ремонтирует раму
папа моет рамы,
мама установила приложение
Мамочка помыла все рамы и искупала котят
Мама помыла раму
Маме моет мылом раму # b = df1.tolist()
b = [
'человек развивает свой ум',
'мама любит котят',
'мама ремонтирует раму',
'папа моет рамы',
'мама установила приложение',
'Мамочка помыла все рамы и искупала котят',
'Мама помыла раму',
'Маме моет мылом раму',
]
sa = " ".join(a)
# веса похожести для каждого словосочетания
w = [(s, similarity(sa, s),) for s in b]
print(w)
# сортировка в убывающем порядке по весам
c = sorted(w, key=lambda el: -el[1])
print(c)
# Топ 3 с коэффициентами
print(c[:3])
# Топ 3
print(a, [s[0] for s in c[:1]])
#Результат - ['мама', 'мыла', 'раму'] ['Мама помыла раму']
# Нужен цикл чтобы по всем 3 строкам пробежался, и сравнил со всем списком