Все, что вам нужно для разрешения сущностей
Что такое разрешение сущности?
Разрешение сущностей (ER) — это задача выявления связей между записями, которые представляют один и тот же объект реального мира, но не имеют связи между ними.
Из-за квадратичной временной сложности ER обычно выполняется в два этапа: сначала блокировка ограничивает вычислительные затраты похожими описаниями, а затем сопоставление оценивает фактическое сходство между ними.
Пример
Одним из наиболее распространенных примеров является задача найти одни и те же товары в двух разных интернет-магазинах. Например, известный набор данных содержит продукты ABT и BUY. Цель состоит в том, чтобы определить, какие записи соответствуют одному и тому же физическому продукту.
И почему это сложно?
Представьте, что каждый розничный торговец хранит каждый товар под своим названием, описанием и ценой. Эти две базы данных могут различаться как по схемам, так и по первичным ключам. Итак, наша единственная информация — это характеристики этого продукта. Давайте посмотрим пример этого набора данных:
Пример записи из ABT
id: 206
имя: «LG TROMM WM2688HNM 4.2 Cu. футов. Темно-синяя паровая стиральная машина Allergiene с фронтальной загрузкой — WM2688HNBL»
description: «LG TROMM WM2688HNM 4.2 Cu. футов. Темно-синяя паровая стиральная машина Allergiene с фронтальной загрузкой — WM2688HNBL/ 4,2 Cu. футов. Вместимость/ Система SteamWash/ Цикл SteamFresh/ 9 программ стирки/ 5 уровней температуры/ Роликовые форсунки и принудительная циркуляция воды/ Санитарный цикл с дополнительной опцией пара Белая светодиодная подсветка ванны/ Фарфоровая столешница/ Темно-синяя отделка”
Цена: -
Пример записи из КУПИТЬ
id: 216
имя: «LG Navy Blue SteamWasher 27»
описание : -
цена: -
Итак, нам нужно программное обеспечение, которое определит совпадение этих двух записей.
pyJedAI предлагает множество алгоритмов для начинающих пользователей и специалистов по обработке данных. Основная суть pyJedAI заключается в том, что это инструмент, который помогает пользователям создавать и экспериментировать как минимум с тремя типами различных рабочих процессов.
Входными данными для этих процедур должен быть кадр данных Pandas, состоящий из идентификаторов и атрибутов. Таким образом, входные данные можно легко ввести в структуру, используя один из самых популярных пакетов Python в области науки о данных.
Каждый рабочий процесс состоит из нескольких строительных блоков, которые подробно описаны и представлены на сайте проекта.
1. Блокировка рабочего процесса
Блокировка — это метод группировки, возможно, похожих записей, с целью быстрого создания групп с использованием небольших вычислительных ресурсов. В результате сложность проблемы значительно уменьшится. Простым примером может быть использование каждого слова в описании записи в качестве токена. После этого ряд алгоритмов, уже реализованных в pyJedAI, рассчитает частоту появления токена внутри каждого блока и отбросит блоки, соответствующие токенам, которые не предоставляют много информации. Это может быть вызвано большим количеством записей, разделяющих этот блок. pyJedAI предоставляет следующие процедуры: построение блоков, фильтрацию блоков и метаблокировку. После фазы блокировки выполняется этап сопоставления объектов, который рассчитывает сходство записей в каждом блоке. Для еще лучших результатов pyJedAI предлагает этап кластеризации в графе, созданном путем сопоставления сущностей, поэтому будут обнаружены кластеры похожих объектов. Вот предварительный просмотр этого рабочего процесса:
Наше подробное руководство по блокировке ABT-BUY можно найти здесь: https://pyjedai.readthedocs.io/en/latest/tutorials/CleanCleanER.html
2. Рабочий процесс объединения по сходству
Алгоритмы соединения по сходству используют схему данных. Этот рабочий процесс подходит для задач, в которых предпочтительнее учитывать атрибут набора данных. Эти алгоритмы используют пороговый критерий сходства, который позволяет легко отбрасывать пары с низкими оценками.
Наше подробное руководство по объединению по сходству на ABT-BUY можно найти здесь: https://pyjedai.readthedocs.io/en/latest/tutorials/SimilarityJoins.html
3. Метод ближайшего соседа (FAISS) с предварительно обученным рабочим процессом внедрения pyTorch.
Рабочие процессы на основе NN используют преобразователи pyTorch для преобразования исходного набора данных в векторное пространство. Это делается с помощью предварительно обученных внедрений pyTorch (встраивания на основе слов и предложений могут быть протестированы пользователем). После этого FAISS используется для высокооптимизированных запросов в этих вложениях. Каждый объект проверяется на сходство векторов со всеми остальными. Вот архитектура этого рабочего процесса:
Подробное руководство по FAISS и pyTorch по ABT-BUY можно найти здесь: https://pyjedai.readthedocs.io/en/latest/tutorials/CleanCleanER.html
Будущая работа
Наша основная цель — предоставить варианты автоматической настройки на основе каждого варианта использования и спецификации данных. Это будет большим преимуществом для начинающих пользователей.
Полезные ссылки
Соответствующая публикация
[1] pyJedAI: световой меч для обнаружения ссылок,
Константинос Николетос, Джордж Пападакис, Манолис Кубаракис
ISWC 2022