Проверка 1 списка на сходство по шаблону 2 списка и вывод результата
Я хочу сравнить два списка: command и words. В command хранятся шаблоны слов, а в words - то, что введет сам пользователь. вот пример:
command = ['бег', 'прыжок', 'полет']
words = ['я', 'бегал', 'вчера']
мне нужно, чтобы программа написала, в данном случае, совпадение найдено, потому что бегал почти совпадает со словом бег из списка command. Сейчас я считаю, что это можно реализовать алгоритмом Вагнера — Фишера (чтобы каждой букве присваивался 1-сходство или 0-не сходство) также может быть несколько слов или отпечатка (в слове есть лишняя буква, но так, чтобы смысл самого слова был понятен) вот пример:
command = ['бег', 'прыжок', 'полет']
words = ['я', 'бегал', 'и', 'прыгал', 'вчера']
тут тоже программа видит, что некоторые слова из списка words практически совпадают со списком command, а значит программа напишет совпадение найдено
Ответы (1 шт):
Ну вот вам "из коробки" практически ваш процент:
# pip install thefuzz[speedup]
from thefuzz import fuzz
command = ['бег', 'прыжок', 'полет']
words = ['бегать', 'прыгать', 'летать']
print(f'{fuzz.token_sort_ratio(command, words)}%')
Вывод:
59%
Но в любом случае, если вы не понимаете, что хотите считать, то это "сферические проценты в вакууме". Вот, например, другой процент с теми же данными:
print(f'{fuzz.ratio(command, words)}%')
Вывод:
74%
Если нужно просто сравнить соответствующие слова из двух списков, то так:
command = ['бег', 'прыжок', 'полет']
words = ['бегать', 'прыгать', 'летать']
for a, b in zip(command, words):
print(f'{fuzz.ratio(a, b)}%')
Вывод:
67%
46%
55%