Научная статья-NonHeader. Использование метод расстояния Левенштейна с использованием библиотеки Fuzzywuzzy на языке Python
Скачать 32.65 Kb.
|
УДК 004.89 Использование метод расстояния Левенштейна с использованием библиотеки Fuzzywuzzy на языке Python Черкашин Александр Михайлович, Приамурский государственный университет имени Шолом-Алейхема, Студент Научный руководитель: Баженов Руслан Иванович, Приамурский государственный университет имени Шолом-Алейхема, к.п.н., доцент, зав. кафедрой информационных систем, математики и правовой информатики Аннотация В данной статье рассматривается способ преобразования множества разных вариантов значений по схожести до единого значения строки с применением алгоритма расстояния Левенштейна, с использованием библиотеки fuzzywuzzy написаной на python. Ключевые слова: Pandas, Python, Pandarallel, Fuzzywuzzy, электронная таблица, расстояние Левенштейна, неточные сравнения, нечеткие сравнения, нечеткий поиск, нечеткое соответствие. Using the Levenshtein distance method using the Fuzzywuzzy Python library Cherkashin Alexander Mihailovich, Sholom-Aleichem Priamursky State University, student Scientific adviser: Bazhenov Ruslan Ivanovich, Sholom-Aleichem Priamursky State University, candidate of pedagogical sciences, associate professor, Head of the Department of Information Systems, Mathematics and Legal Informatics Abstract This article discusses a way to convert from many different similarity value options to a single string value using the Levenshtein distance algorithm using the fuzzywuzzy library written in python. Keywords: Pandas, Python, Pandarallel, Fuzzywuzzy, spreadsheet, Levenshtein distance, fuzzy comparison, fuzzy search, fuzzy matching. Актуальность статьи в том что данные исходный таблицы поступают необработанным виде имеют нечеткие значения, которые машина воспринимает как разные значения, человек воспринимает значение одинаковыми. Шарлотта Гускенс и Уилберт Херинга описали понятие определения термина расстояние Левенштейна - это мера расстояния редактирования строки. На основе лингвистических расстояний между диалектными разновидностями можно определить области диалектов. [1] Мэтью Т. Резерфорд, Натан Д. Типански, Дали Ван, Гао Чен рассматривают решение комбинаторы синтаксического анализатора позволяющее объединить несколько простых парсеров, чтобы сформировать серию конгломератных парсеров, которые затем могут коллективно адресовать нерегулярный, сложный ввод. [3] Майкл Бааке, Роберт Гигерих, Уве Гримм рассматривают проблему метода сравнения L-расстояние с расстоянием на основе репрезентативного словаря. [4] Массимо Пиццол, Елена Виги, Ромен Сакки применяют нечеткую логику для решение проблемы связанные с объединением данных цифровых платежей и данных ввода-вывода для изменения моделей потребления. [5] В данной статье используется язык программирование python, библиотека fuzzywuzzy для нечеткого поиска строки и сравнения, библиотека Pandas для анализа и обработки таблиц, библиотека pandarallel для распараллеливания обработки таблиц по каждой строке. Исходные данные полученные в необработанном виде, содержат нечеткие значения которые воспринимаются человеком, но непригодны для машинной обработки, например, создания сводных таблиц или логических связей с таблицами. Целью данной статьи является описание решения проблемы путем удаления дубликатов, которые воспринимается человеком, путем применения алгоритма расстояния Левенштейна с использованием библиотеки «fuzzywuzzy». Исходные данные содержится в файле формата csv (Таблица 1) id — уникальный идентификатор result_status — Состояние результатов. result_value — Значение результатов. Таблица 1 – Исходные данные
Данная таблица (таблица 1) взята из лаборатории ФБУЗ «Центр гигиены и эпидемиологии в ЕАО» для сбора статистики, и была специально обработана. В столбец «result_value» выбраны только строки, все остальные типы данных отброшены. Исходный код обработки для таблицы 1.
Таблица 2. Список корректные значение.
Загрузка библиотека
Инициализация библиотеки «pandarallel».
Чтение файла «list_data.csv» (таблица 1).
Определение переменных «result_value_type». (Таблица 2)
Обработка таблицы. (Таблица 1)
Функция pd.Series создает одномерный массив (временный ряд). [2] df.result_value — выбирает столбец «result_value», функция unique выбирает уникальные строки из таблицы 1, в столбеце «result_value». Функция parallel_apply взята из библиотеки «pandarallel» выполняет многопоточную обработку, каждый поток читает строки из таблицы и вызывается в lambda. Функция process.extractOne выполняет поиск и сравнение строки с использованием алгоритма расстояние Левенштейна, и находит максимальную точность совпадения. Переменная x — текущая строка таблицы, result_value_type — Список (таблица 2). Возвращает значение виде списока. Переменная res_raw, полученная в результате вычисления, представляется в виде массива (временного ряда), а для преобразования в таблицу используется следующий код. Преобразование из массива в таблицу заданным заголовки.
Условная выборка res.p больше 60, отбрасывает все неточные значение меньше 60.
Таблица 3 – Результаты вычисления переменной rse_p.
В таблице 3. name — взята из переменной result_value_type (таблица 2). p — точность, значение от 0 до 100, 0 — неточный, 100 — точный. orig_name — столбец, взят из таблицы 1 столбец result_value. Замена значения в таблице 1, столбец result_value в таблица 3 столбец name.
Таблица 4 – Обработанная таблица.
Вывод: в результате обработки данных (Таблица 4) ячейка result_value содержит четкие значения, пригодные для восприятия человеком. Библиографический список Charlotte Gooskens, Wilbert Heeringa Perceptive evaluation of Levenshtein dialect distance measurements using Norwegian dialect data // University of Groningen, The Netherlands. - 2004. - №16. - С. 189. pandas.Series — pandas 1.2.1 documentation // pandas URL: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.html (дата обращения: 2021-01-21). Matthew T. Rutherford, Nathan D. Typanski, Dali Wang, Gao Chen Processing of ICARTT data files using fuzzy matching and parser combinators // International Conference on Artificial Intelligence (ICAI’14). - 2014. Michael Baake, Robert Giegerich, Uwe Grimm Surprises in approximating Levenshtein distances // Theoretical Biology. - 2006. - №279-282. Massimo Pizzol, Elena Vighi, Romain Sacchi Challenges in Coupling Digital Payments Data and Input-output Data to Change Consumption Patterns // Procedia CIRP. - 2017. - №633-637. |