- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Знаю, тема уже поднималась не раз, но все-таки хотелось бы собрать summary насчет существующих алгоритомов.
Я знаю о 2х алгоритмах определения дублировния - шинглы и http://company.yandex.ru/articles/article7.html (descriptive words).
С шинглами - все понятно, но вот они очень небыстрые. Что же касается метода, преложенного Sergey Ilyinsky, Maxim Kuzmin, Alexander Melkov, Ilya Segalovich, то он заявлен как более быстрый и проще в реализации. Вот только не ясно, как же все-таки выбирать эти слова.
Есть 3 правила:
1. A set of words should cover the maximal possible amount of documents
2. The "quality" of a word in the sense described below should be the highest
3. The number of words in the set should be minimal
Но, к сожалению, конкретики это не прибавляет.
В дополнение к 2м перечисленным методам, есть еще такая идея - считать контрольную сумму от слов с частотами появления в интервале 3% - 4% (пока что сказал наобум, смысл в том, чтобы учитывать слова из "середины" по частоте появления в документе)
В дополнение к 2м перечисленным методам, есть еще такая идея - считать контрольную сумму от слов с частотами появления в интервале 3% - 4% (пока что сказал наобум, смысл в том, чтобы учитывать слова из "середины" по частоте появления в документе)
А поподробнее можно? Идея, насколько я понял в том, что эти слова передают суть документа и при незначительных изменениях теста страницы остаются не изменными?
А поподробнее можно? Идея, насколько я понял в том, что эти слова передают суть документа и при незначительных изменениях теста страницы остаются не изменными?
Да, мы берем качественный состав (т.е., например, считаем контрольную сумму от строки из конкатенированных, отсортированных в определенном порядке - например, по алфавиту - слов из среднечастотников) среднечастотников. К сожалению - это не более чем идея. Интересно, какая получится у нее статистика в плане ошибок 1го и 2го рода. Но метод длжен быть очень удобным, т.к. имеем всего 1 контрольную сумму для документа и считать ее быстро.
А насчет метода от комманды Яндекса, кто-то может прокомментировать, как выбирать эти "характеристические" слова? :)
А есть уверенность, что у похожих страниц в вашем случае наблюдается действительно пересечение по общим словам? В случае спама это может быть и неверно: спамер может специально коверкать слова или заменять некоторые русские буквы латинскими эквивалентами.
Если пересечение есть, то можно использовать идеи Locality Sensitive Hash, см. например здесь: http://www-db.stanford.edu/~taherh/papers/scalable-clustering.pdf
только вместо одной суммы crc будет несколько, чем больше сумм, тем меньше вероятность не найти похожий документ. Найденные в результате кандидиты нужно сравнить непосредственно с помощью какой-нибудь более точной функции.
А есть уверенность, что у похожих страниц в вашем случае наблюдается действительно пересечение по общим словам? В случае спама это может быть и неверно: спамер может специально коверкать слова или заменять некоторые русские буквы латинскими эквивалентами.
Замена букв в слове равносильна замене самомго слова, а если заменить все слова - то такой документ дубликатом являться не будет наверняка ;) Кстати, факт замены букв в слове и алгоритм шинглов будет рассматривать как факт замены слова, а значит - как разницу м/д документами.
Если пересечение есть, то можно использовать идеи Locality Sensitive Hash, см. например здесь: http://www-db.stanford.edu/~taherh/papers/scalable-clustering.pdf
только вместо одной суммы crc будет несколько, чем больше сумм, тем меньше вероятность не найти похожий документ. Найденные в результате кандидиты нужно сравнить непосредственно с помощью какой-нибудь более точной функции.
Хм... Но сравнивать еще раз с помощью более точной функции - точно очень накладно. Более точная - это расстояние Левенштейна?
Это он для компьютера перестанет быть дубликатом, а для пользователя он будет выглядеть абсолютно аутентично.
Насчет накладности непосредственного сравнения: если текст потенциального дубликата нужно вытаскивать из базы, то дополнительное сравнение - это не слишком накладно. По поводу алгоритма: левенштейн может подойдет только лучше не побуквенный, а пословный. Он на порядок быстрее отработает.
Это он для компьютера перестанет быть дубликатом, а для пользователя он будет выглядеть абсолютно аутентично.
Насчет накладности непосредственного сравнения: если текст потенциального дубликата нужно вытаскивать из базы, то дополнительное сравнение - это не слишком накладно. По поводу алгоритма: левенштейн может подойдет только лучше не побуквенный, а пословный. Он на порядок быстрее отработает.
Все же не соглашусь, во 1ых, алгоритм сслылочной кластеризации, Locality Sensitive Hash, то это все-равно будет анализ на уровне слов, а во 2ых, вы сами же предложили пословного левенштейна ;)
В моем случае надо отлвливать прежде всего неумышленные нечеткие дубли. Например, одна и та же страница, но поменялось время в футере, добавилась форма ввода сообщения (проанализируйте, к примеру, этот форум на предмет таких непреднамеренных дублей - будет понятно, о чем я). Кроме того, было бы здорово ограничится только одной контрольной суммой на документ ;) Или же найти другие быстрые алгоритмы.
Левенштейна пословного я предложил в качестве уточняющего алгоритма. Да, если, конечно, будет большинство слов искажено, то его бесполезно использовать. В качестве уточняющего можно и побуквенный, но нужно будет покумекать над подходящей модификацией, чтобы не слишком тормозила.
Еще очень полезно такое наблюдение: если пользователь ищет, то он считает дублями те странички, по которым выдаются одинаковые сниппеты (включая заголовок). Конечно, заранее невозможно предсказать, по каким словам будет искать, но можно заменить все цифры на 0, все последовательности небуквенных и нецифровых символов одним пробелом. И откусить от начала некоторый небольшой кусочек, байт тысячу. Присоединить таким же образом отшлифованный тайтл. Посчитать crc. С очень высокой полнотой можно будет отлавливать дубликаты. Ну а точность зависит от конкретики. Для интернета в целом, ИМХО, будет не самая плохая, но если в базе много страниц имеют общее начало, то будет не слишком хорошо.
Все же не соглашусь, во 1ых, алгоритм сслылочной кластеризации, Locality Sensitive Hash, то это все-равно будет анализ на уровне слов, а во 2ых, вы сами же предложили пословного левенштейна ;)
В моем случае надо отлвливать прежде всего неумышленные нечеткие дубли. Например, одна и та же страница, но поменялось время в футере, добавилась форма ввода сообщения (проанализируйте, к примеру, этот форум на предмет таких непреднамеренных дублей - будет понятно, о чем я). Кроме того, было бы здорово ограничится только одной контрольной суммой на документ ;) Или же найти другие быстрые алгоритмы.
Знаю, тема уже поднималась не раз, но все-таки хотелось бы собрать summary насчет существующих алгоритомов.
Я знаю о 2х алгоритмах определения дублировния - шинглы и http://company.yandex.ru/articles/article7.html (descriptive words).
С шинглами - все понятно, но вот они очень небыстрые. Что же касается метода, преложенного Sergey Ilyinsky, Maxim Kuzmin, Alexander Melkov, Ilya Segalovich, то он заявлен как более быстрый и проще в реализации. Вот только не ясно, как же все-таки выбирать эти слова.
Есть 3 правила:
1. A set of words should cover the maximal possible amount of documents
2. The "quality" of a word in the sense described below should be the highest
3. The number of words in the set should be minimal
Но, к сожалению, конкретики это не прибавляет.
В дополнение к 2м перечисленным методам, есть еще такая идея - считать контрольную сумму от слов с частотами появления в интервале 3% - 4% (пока что сказал наобум, смысл в том, чтобы учитывать слова из "середины" по частоте появления в документе)
Смотря для чего вам нужно находить дубли.
Вон яндекс вроде бы умеет с дублями работать, а вы посмотрите на его новости как он сюжеты объединяет - иногда очень забавно наблюдать ;)
т.е. для того, чтобы находить более точно нечеткие дубли с помощью не важно каких алгоритмов, нужно предварительно применять устойчивую кластеризацию.
Смотря для чего вам нужно находить дубли.
Вон яндекс вроде бы умеет с дублями работать, а вы посмотрите на его новости как он сюжеты объединяет - иногда очень забавно наблюдать ;)
т.е. для того, чтобы находить более точно нечеткие дубли с помощью не важно каких алгоритмов, нужно предварительно применять устойчивую кластеризацию.
Разделение на класы похожих документов происходит всегда, не зависимо от того для чего это нужно. Разница только в том какие алгоритмы и с какими параметрами использовать. Мне нужно отлавливать дубли-кандидаты на уничтожение, чтобы очистить индекс от "почти" одинаковых страниц.
Я сегодня по подобному поводу весь день в блоге бредил:
http://users.livejournal.com/_yukko_/221124.html (предупреждаю, там нет никакой математики, там мысли)