Пометка возможных идентичных пользователей в системе управления учетными записями - PullRequest
1 голос
/ 01 октября 2010

Я работаю над возможной архитектурой механизма обнаружения злоупотреблений в системе управления учетными записями. Что я хочу, так это обнаружить возможных дублирующих пользователей на основе определенных коррелирующих полей в таблице. Чтобы упростить задачу, допустим, у меня есть таблица USER со следующими полями:

Name
Nationality
Current Address
Login
Interests

Вполне возможно, что один пользователь создал несколько записей в этой таблице. Там может быть определенный шаблон, в котором этот пользователь создал свои учетные записи. Что нужно, чтобы добыть эту таблицу, чтобы пометить записи, которые могут быть возможными дубликатами. Другая проблема - масштаб. Если у нас есть, скажем, миллион пользователей, то взять одного пользователя и сопоставить его с остальными пользователями нереально в вычислительном отношении. Что если эти записи распределены по различным машинам в разных географических точках?

Какие методы я могу использовать для решения этой проблемы? Я попытался поставить этот вопрос в технологически независимом ключе, надеясь, что люди могут дать мне несколько точек зрения.

Спасибо

1 Ответ

1 голос
/ 25 октября 2010

Ответ действительно зависит от того, как вы моделируете своих пользователей и что представляет собой дубликат.

Возможно, пользователь использует имена всех персонажей Гарри Поттера. Удачи в поиске этого паттерна:)

Если вы ищете записи, которые приблизительно похожи, попробуйте этот простой подход: Хэшируйте каждое слово в документе и выбирайте минимальный гонт. Сделайте это для k различных хеш-функций. Объедините эти минимальные хеши. То, что у вас есть, является почти дубликатом.

Для ясности, допустим, в записи есть слова w1 .... wn. Допустим, ваши хеш-функции h1 ... hk.

let m_i = min_j (h_i (w_j)

и подпись S = m1.m2.m3 .... mk

Крутая вещь с этой подписью состоит в том, что если два документа содержат 90% одинаковых слов, то есть хороший шанс того, что подписи для этих двух документов будут одинаковыми. Следовательно, вместо поиска близких дубликатов, вы ищете точные дубликаты в сигнатурах. Если вы хотите увеличить количество совпадений, тогда вы уменьшаете значение k, если вы получаете слишком много ложных срабатываний, то вы увеличиваете число k.

Конечно, существует подход неявных функций пользователей, таких как их IP-адреса, файлы cookie и т. Д.

...