Python. Сравнить строки на похожесть

Помните ваш стартап с самыми актуальными новостями дня? Кажется, у него появился конкурент — он нагло крадёт ваши аутентичные новости, рерайтит их, и рассылает ничего не подозревающим клиентам, подрывая вашу репутацию.

Судите сами, вот ваши новости:

genuine = [
  "«Братец-хлеб» из Китая носит плащ и корону из булочек, чтобы кормить чаек",
  "Мясо гигантских тараканов станет вкусной и недорогой альтернативой говядине",
  "Скандал в ботаническом саду: 10 миллионов рублей ушло на зарплату кактусам",
]

А вот новости жалкого подражателя:

plagiary = [
  "Китайский хлебный братец кормит чаек плащом и короной из булочек",
  "Гигантское мясо тараканов станет говядине недорогой и вкусной альтернативой",
  "Зарплата кактусов в ботаническом саду составила 10 скандальных миллионов рублей",
]

Нужны какие-то основания для судебного иска, и нужны быстро. Хорошо, что в стандартной библиотеке Питона есть модуль difflib. Сделаем на нём функцию сравнения:

import difflib

def similarity(s1, s2):
  normalized1 = s1.lower()
  normalized2 = s2.lower()
  matcher = difflib.SequenceMatcher(None, normalized1, normalized2)
  return matcher.ratio()

И сравним:

similarity(genuine[0], plagiary[0])
0.51

similarity(genuine[1], plagiary[1])
0.69

similarity(genuine[2], plagiary[2])
0.55

АГА! 51%, 69% и 55% похожести! Всё ясно, какие ещё нужны доказательства.

Подписывайтесь на канал, чтобы не пропустить новые заметки 🚀