Все, что вам нужно для разрешения сущностей

Что такое разрешение сущности?

Разрешение сущностей (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