Изучение методов нечеткого сопоставления для анализа данных в Python

При анализе данных часто встречаются ситуации, когда данные необходимо сопоставить или сравнить на основе сходства, а не точного совпадения. Нечеткое сопоставление обеспечивает решение этой проблемы, позволяя нам сравнивать строки и выявлять сходства даже при наличии незначительных различий или вариаций в данных. В этой статье мы рассмотрим различные методы нечеткого сопоставления в Python с использованием библиотеки FuzzyWuzzy и продемонстрируем их использование на примерах кода. Мы также будем использовать Streamlit, популярную библиотеку Python для создания интерактивных веб-приложений, чтобы продемонстрировать функциональность наших методов нечеткого сопоставления.

  1. Метод расстояния Левенштейна:
    Расстояние Левенштейна — популярный метод измерения разницы между двумя строками. Он вычисляет минимальное количество операций (вставки, удаления или замены), необходимых для преобразования одной строки в другую. Библиотека FuzzyWuzzy предоставляет функцию под названием fuzz.ratio(), которая использует расстояние Левенштейна для расчета коэффициента сходства между двумя строками. Вот пример:
import pandas as pd
from fuzzywuzzy import fuzz
string1 = "apple"
string2 = "apples"
similarity_ratio = fuzz.ratio(string1, string2)
print(similarity_ratio)  # Output: 91
  1. Метод частичного соотношения:
    Метод частичного соотношения полезен, когда мы хотим сравнить только часть двух строк. Он похож на метод fuzz.ratio(), но работает с подстроками исходных строк. Этот метод особенно удобен при работе с большими наборами данных. Вот пример:
import pandas as pd
from fuzzywuzzy import fuzz
string1 = "apple"
string2 = "pineapple"
partial_ratio = fuzz.partial_ratio(string1, string2)
print(partial_ratio)  # Output: 80
  1. Метод коэффициента сортировки токенов:
    Метод коэффициента сортировки токенов используется, когда порядок слов в строке не важен. Он сортирует слова в обеих строках в алфавитном порядке, а затем применяет метод соотношения. Этот метод эффективен при работе со строками, содержащими похожие слова, но в другом порядке. Вот пример:
import pandas as pd
from fuzzywuzzy import fuzz
string1 = "apple pie"
string2 = "pie apple"
token_sort_ratio = fuzz.token_sort_ratio(string1, string2)
print(token_sort_ratio)  # Output: 100
  1. Метод соотношения наборов токенов:
    Метод соотношения наборов токенов полезен, когда мы хотим сравнить две строки, игнорируя общие слова. Он разбивает строки на отдельные слова, удаляет общие слова и вычисляет коэффициент сходства. Этот метод особенно полезен при работе со строками, которые могут иметь дополнительные слова или варианты. Вот пример:
import pandas as pd
from fuzzywuzzy import fuzz
string1 = "apple pie"
string2 = "apple pie with ice cream"
token_set_ratio = fuzz.token_set_ratio(string1, string2)
print(token_set_ratio)  # Output: 100

Нечеткое сопоставление предоставляет мощные методы для задач анализа данных, где точное совпадение невозможно. В этой статье мы исследовали несколько методов нечеткого сопоставления, доступных в библиотеке FuzzyWuzzy, включая методы расстояния Левенштейна, частичного соотношения, коэффициента сортировки токенов и соотношения набора токенов. Мы также продемонстрировали их использование на примерах кода на Python. Включив эти методы в рабочий процесс анализа данных, вы сможете эффективно справляться с расхождениями и вариациями данных, повышая точность анализа.