Друкарня від WE.UA

Всіх вітаю! У цій статті ми дослідимо, як перевіряти подібність слів у Python за допомогою бібліотек difflib та TheFuzz.

Використання difflib

Дана бібліотека є вбудованою, а тому нам не потрібно витрачати час на її встановлення. У даній бібліотеці нас цікавить конкретно функція get_close_matches(), яка приймає в основному два параметри: головне слово, з яким ми і будемо порівнювати інші, та список зі схожими словами, з яких дана функція потім вибере найбільш схожі до оригінального слова варіанти.

Ось приклад коду:

original_word = "ward"
similar_words = ["word", "sword", "password", "toword", "coward", "foreword", "wardrobe"]

define_matches = get_close_matches(original_word, similar_words)
print(define_matches)

Спершу ми оголосили потрібні змінні, а саме original_word, де зберагіється головне слово, та similar_words, що є списком схожих слів.

Далі ми застосовуємо функцію get_close_matches() та передаємо усі оголошені змінні.

Результат:

['coward', 'word', 'wardrobe']

У результаті ми отримали лише три слова, які найбільш схожі на слово “ward”.

Також ця функція має кілька опціональних параметрів, таких як n та cutoff. Параметр n встановлює максимальну кількість слів, яку ми будемо отримувати у результаті. А cutoff дозволяє встановити відсоток схожості, який повинен задовольняти нас. І, звісно, збільшення або зменшення відсотка схожості слів вплине на кінцевий результат.

Ось приклад застосування цих параметрів:

from difflib import get_close_matches

original_word = "ward"
similar_words = ["word", "sword", "password", "toword", "coward", "foreword", "wardrobe"]

define_matches = get_close_matches(original_word, similar_words, n=4, cutoff=0.4)
print(define_matches)

У даному випадку ми визначили те, що хочемо отримувати максимально чотири слова та знизили рівень схожості до 40% (cutoff=0.4), хоча за замовчуванням даний параметр дорівнює 60% (cutoff=0.6).

Результат:

['coward', 'word', 'wardrobe', 'sword']

Як бачимо, ми отримали рівно чотири схожі слова.

Тепер пропоную підвищити cutoff до 80%, щоб розуміти різницю:

from difflib import get_close_matches

original_word = "ward"
similar_words = ["word", "sword", "password", "toword", "coward", "foreword", "wardrobe"]

define_matches = get_close_matches(original_word, similar_words, n=4, cutoff=0.8)
print(define_matches)

Результат:

['coward']

Тут ми вже отримали не максимальну кількість слів, а лише одне, бо рівень схожості слів значно збільшився.

Використання TheFuzz

Тепер перейдемо до бібліотеки TheFuzz, яку вже треба встановлювати перед використанням. Конкретно ж ми будемо працювати з модулем process.

Встановлення

Спочатку нам треба встановити саму бібліотеку TheFuzz.

Windows:

pip install thefuzz

MacOS:

pip3 install thefuzz

Linux:

pip install thefuzz

Також для коректнох роботи треба встановити бібліотеку python-Levenshtein, бо вона використовується у бібліотеці TheFuzz.

Windows:

pip install python-Levenshtein

MacOS:

pip3 install python-Levenshtein

Linux:

pip install python-Levenshtein

Застосування функції extraxt() у коді

Тепер розглянемо наступний приклад з функцією extract(), яка виконує подібну до минулої функції роботу:

from thefuzz import process

original_word = "ward"
similar_words = ["word", "sword", "password", "toword", "coward", "foreword", "wardrobe"]

define_matches = process.extract(original_word, similar_words, limit=4)
print(define_matches)

Результат:

[('coward', 90), ('wardrobe', 90), ('word', 75), ('password', 68)]

Важливо зазначити той факт, що функція extract() повертає список слів з їхнім рівнем схожості поряд. Як бачимо, перші два слова є найбільш схожими на оригінал.

Щодо параметра limit — це опціональний параметр, який визначає максимальну кількість слів, яку ми отримаємо у результаті.

Далі протестуємо код без параметра limit:

from thefuzz import process

original_word = "ward"
similar_words = ["word", "sword", "password", "toword", "coward", "foreword", "wardrobe"]

define_matches = process.extract(original_word, similar_words)
print(define_matches)

Результат:

[('coward', 90), ('wardrobe', 90), ('word', 75), ('password', 68), ('toword', 68)]

Тут варто розуміти, що за замовчуванням функція extract() виводить п’ять слів з їхнім рівнем схожості.

Крім цього, коли limit більший за кількість слів у списку, то код не повертає жодної помилки. У підсумку він просто видає менше слів у кінцевому списку.

Розглянемо такий приклад:

from thefuzz import process

original_word = "ward"
similar_words = ["word", "sword", "password", "toword"]

define_matches = process.extract(original_word, similar_words, limit=6)
print(define_matches)

Результат:

[('word', 75), ('password', 68), ('toword', 68), ('sword', 67)]

Як бачимо, функція повернула лише чотири слова, хоча ми зазначили 6 у limit.

Застосування функції extraxtOne() у коді

Також у цій бібліотеці є функція extractOne(), єдиною відмінністю якої від усіх попередніх є те, що вона повертає лише одне найбільш схоже слово з усіх наявних у списку similar_words.

Ось приклад:

from thefuzz import process

original_word = "ward"
similar_words = ["word", "sword", "password", "toword", "coward", "foreword", "wardrobe"]

define_matches = process.extractOne(original_word, similar_words)
print(define_matches)

Результат:

('coward', 90)

Висновок

У даній статті ми розглянули одразу дві бібліотеки, що дозволять знаходити схожі слова, та приділили достатню увагу їх особливостям.

Статті про вітчизняний бізнес та цікавих людей:

  • Шлейф сучасного смартфону та його призначення

    Шлейф - це тонка пластикова стрічка з ледь видимими доріжками і саме вона зʼєднує важливі компоненти мобільного, без яких він не запрацює. Власники пристроїв Xiaomi, які стикаються з потребою заміни цієї деталі, можуть підібрати відповідний варіант на сайті AKS.UA

    Теми цього довгочиту:

    Шлейф Для Мобільного
  • Чохли для iPhone 15: повний гід по кольорах, матеріалах і виробниках

    Перед тим як вибрати чохли для iPhone 15, варто визначитися, що саме ви хочете отримати від аксесуара. Комусь потрібен тонкий прозорий корпус, інший покупець шукає посилений захист, а для когось вирішальним стане колір або підтримка MagSafe

    Теми цього довгочиту:

    Чохли Для Iphone
  • Як побудована програма Meest China Academy

    Курс про товарний бізнес охоплює різні етапи роботи: від пошуку ідеї до перевірки товару, логістики та масштабування. Програма Meest China Academy містить 17 модулів, які послідовно розкривають ці теми без зведення всього навчання до однієї універсальної поради.

    Теми цього довгочиту:

    Meest
  • Які технології використані в Айфон 17

    Айфон 17 поєднує OLED-дисплей із частотою до 120 Гц, чип A19, дві камери Fusion 48 Мп і швидке заряджання через USB-C. У COMFY можна купити Айфон 17 з накопичувачем на 256 або 512 ГБ, вибравши конфігурацію відповідно до обсягу фото, відео та застосунків

    Теми цього довгочиту:

    Iphone 17
  • Як вибрати вживаний iPhone: коротке керівництво для розумної покупки

    Вторинний ринок смартфонів Apple активно зростає, і питання, як вибрати вживаний iPhone, стає актуальним для дедалі більшої кількості користувачів. Правильний підхід дозволяє отримати бу iPhone з актуальною iOS і доброю камерою за помітно нижчу ціну, ніж у нових пристроїв.

    Теми цього довгочиту:

    Iphone
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Magnifique numérique
Magnifique numérique@magnifiquedigitalworld

Світ, де код робить чудеса

93Довгочити
1.9KПерегляди
27Підписники
Підтримати
На Друкарні з 14 липня 2025

Більше від автора

  • Метод zfill() у Python

    У цій статті ми розберемо метод zfill() у Python на основі практичних прикладів його використання.

    Теми цього довгочиту:

    It
  • Команда WHERE у SQL

    Сьогодні ми розглянемо команду WHERE та принцип роботи цієї команди.

    Теми цього довгочиту:

    Програмування
  • Робота з омогліфами у Python

    У цій статті ми розберемо бібліотеку confusables та її функціонал. Також ми розглянемо, що таке омогліфи та як їх використовують.

    Теми цього довгочиту:

    Програмування

Це також може зацікавити:

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити: