При анализе данных часто встречаются ситуации, когда данные необходимо сопоставить или сравнить на основе сходства, а не точного совпадения. Нечеткое сопоставление обеспечивает решение этой проблемы, позволяя нам сравнивать строки и выявлять сходства даже при наличии незначительных различий или вариаций в данных. В этой статье мы рассмотрим различные методы нечеткого сопоставления в Python с использованием библиотеки FuzzyWuzzy и продемонстрируем их использование на примерах кода. Мы также будем использовать Streamlit, популярную библиотеку Python для создания интерактивных веб-приложений, чтобы продемонстрировать функциональность наших методов нечеткого сопоставления.
- Метод расстояния Левенштейна:
Расстояние Левенштейна — популярный метод измерения разницы между двумя строками. Он вычисляет минимальное количество операций (вставки, удаления или замены), необходимых для преобразования одной строки в другую. Библиотека 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
- Метод частичного соотношения:
Метод частичного соотношения полезен, когда мы хотим сравнить только часть двух строк. Он похож на метод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
- Метод коэффициента сортировки токенов:
Метод коэффициента сортировки токенов используется, когда порядок слов в строке не важен. Он сортирует слова в обеих строках в алфавитном порядке, а затем применяет метод соотношения. Этот метод эффективен при работе со строками, содержащими похожие слова, но в другом порядке. Вот пример:
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
- Метод соотношения наборов токенов:
Метод соотношения наборов токенов полезен, когда мы хотим сравнить две строки, игнорируя общие слова. Он разбивает строки на отдельные слова, удаляет общие слова и вычисляет коэффициент сходства. Этот метод особенно полезен при работе со строками, которые могут иметь дополнительные слова или варианты. Вот пример:
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. Включив эти методы в рабочий процесс анализа данных, вы сможете эффективно справляться с расхождениями и вариациями данных, повышая точность анализа.