Перейти к контенту

Удаление нечетких дублей


Рекомендуемые сообщения

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

Это сильно раздражает и пользователей и админов/модеров.

 

Было бы неплохо, если бы перед публикацией сообщения оно проверялось на уникальность т.е. сравнивалось с последними, например, 100 сообщениями на форуме или с сообщениями за последние X минут (в зависимости от нагруженности сервера уже это можно подстроить).

При чем сравнивать можно только с сообщениями от этого логина, что значительно ускорит проверку.

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

 

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

 

Такой алгоритм было бы неплохо встроить в сам форум, но, можно и в виде отдельной модификации.

 

Кто мог бы написать такой модуль с учетом наличия алгоритма поиска нечетких дублей?

Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 63
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

Загружено фотографий

Думаю, в этом случае пользователи начнут экспериментировать с этой модификацией. Тестировать алгоритм отсеивания сообщений. Даже если тихо все сделать - все равно заметят и раскусят.
Ссылка на комментарий
Поделиться на других сайтах

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

 

Не каждый будет раскусывать - это во-первых :D

Во-вторых, алгоритм можно и поменять, если что.

 

Любой алгоритм можно обмануть, желающие всегда найдутся, но таковых крайне мало. Поэтому это не повод не писать такою модификацию ;)

Ссылка на комментарий
Поделиться на других сайтах

В общем сложностей написать-то нет, есть 3 принципиальных минуса:

1. Прийдётся в таблицу постов добавлять булево поле "не копия ли этот пост".

2. Прийдётся во всех запросах вывода постов дописывать условие связанное с этим полем, это долго и к тому же ухудшает запросы, ибо будут увесистей запросы для любых постов, и правильных и неправильных.

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

 

Могу сказать по своему опыту, что пункты 2-3 иногда могут вызывать затруднения.

Ссылка на комментарий
Поделиться на других сайтах

компьютер не человек, искусственный интелект еще не изобрели, что значит проверка на уникальность?

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

а долгий сложный алгоритм загрузит и без того алчный ипб, которому и 16МБ мемори лимита мало

Ссылка на комментарий
Поделиться на других сайтах

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

 

Sannis, добавлять к таблице ничего не придется. При поступлении текста поста в скрипт делается проверка на уникальнось по описанному выше приницпу, и если пост является дублем, то есть несколько вариантов:

1) Выводится сообщение об ошибке.

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

3) Пользователь перебрасывается на тот пост, который является дублем к постируемому посту.

4) Посту сразу присваивается раздел "Корзина", чтобы модератор потом смог видеть "откуда ноги растут".

 

Скрипт определения нечетких дублей я могу сделать и сам, а вот встроить скрипт в форум не смогу. :D

Изменено пользователем XTR
Ссылка на комментарий
Поделиться на других сайтах

Аффтар, перечитайте ваш первый пост.

 

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

Для того чтобы пользователь не догнал что произошло, нужно сделать так чтобы он думал что сообщение добавилось. Если же сделать по этим 4м пунктам, то он нажмёт "Назад", отредактирует сообщение и запостит. А нужно чтобы оно добавилось, но помеченное как дубль: для автора видно, а для остальных - нет.

 

А тут в силу вступает ещё фишка, если это первое сообщение темы и он даст на неё ссылку, то всё тоже вскроется, ибо для него она видна, а для остальных нет.

 

P.S. Так что следует поработать над ТЗ, чтобы без неясностей и всё логично было.

Ссылка на комментарий
Поделиться на других сайтах

Sannis, пользователь может и увидеть, что произошло - это не так важно. Пусть редактирует сколько влезет.

Посту можно присвоить статус "на модерации", например.

Ссылка на комментарий
Поделиться на других сайтах

Ну. Если пост уйдёт на модерацию, пользователь его больше не увидит, заподозрит неладное.

 

А если он сможет вернуться и подправить чтобы система не определила что это дубль - грош ей цена.

Ссылка на комментарий
Поделиться на других сайтах

Ну. Если пост уйдёт на модерацию, пользователь его больше не увидит, заподозрит неладное.

 

Вот и хорошо - напишет модератору, а тот ему покажет соотв. пункт правил форума ;)

Можно написать сразу, что это дубль и отправить его невозможно. Большинство просто забьет, а особо упорные будут наказаны позже модератором в крайнем случае :D

 

А если он сможет вернуться и подправить чтобы система не определила что это дубль - грошь ей цена.

 

Повторю еще раз: любую защиту можно обойти, весь вопрос в цене и временных затратах. И это не повод не делать защиту.

 

Какие есть варианты действий в IPB при обнаружении дубля без изменения таблиц?

Изменено пользователем XTR
Ссылка на комментарий
Поделиться на других сайтах

Тогда сначала нужно увидеть интефейс модуля проверки на дубль. И вы должны понимать, что это очень большая нагрузка на базу в любом случае, ибо с ней сравнение будет идти. А прикрутить можно будет одной строчкой.

 

P.S. Хотя бы в псевдокоде.

Ссылка на комментарий
Поделиться на других сайтах

Выбрать посты пользователя за последние 24 часа, например, но не более 30-50 штук в массив - это большая нагрузка? Прошу меня не смешить :D

Проверка на дубликат - это уже моя забота и делаться скорее всего будет на PHP, а не средствами MySQL. Есть несколько идей по поводу алгоритма, но их надо опробовать на живых текстах на всякий случай, чтобы подобрать параметры.

Изменено пользователем XTR
Ссылка на комментарий
Поделиться на других сайтах

Arhar, я готов заплатить денежку (в разумных пределах) IBR за такой модуль, а алгоритм сравнения я отлажу еще до этого.

Модулю только нужно дать две переменных - пост и очередной пост из базы (в цикле). Соответственно в настройках хорошо бы задавать сколько постов максимально можно брать и за сколько прошедшего времени (за N часов, но не более N постов - это, если пользователь очень активен, чтобы не перегружать сервер все-таки, хотя вероятность такого крайне мала).

Можно еще 2 или 3 варианта ответа, но мы тут подумали и решили, что наиболее честным и правильным будет просто сообщение о том, что пользователь постит дубль. Особо упорных придется учить уже модератору :D

 

Если IBR готова написать такой модуль - прошу озвучить условия в личку ;)

Ссылка на комментарий
Поделиться на других сайтах

IBR тут не причем, я просто ради спортивного интереса спрашиваю

насчет прикрутить, так это пожалуйста

могу даже сделать настройку группы - если в админке стоит да в графе сканировать на дубли, то будет жесткая загрузка, а если нет, то вперед

можно таким образом исключить админов, модераторов, ну и проверенных пользователей, допустим

создадите группу, в которую попадают при наборе 30 сообщений...

Ссылка на комментарий
Поделиться на других сайтах

Надо ставить защиты от ботов.

 

Сумлеваюсь, что он вручную их набил.

Ссылка на комментарий
Поделиться на других сайтах

вручную

оставил дурак свой номер аськи, а сообщения копипастил

найдем по горячим следам

 

защита - код Гаррета

 

плюс тема рекламы такая, что только МИРЭА касается

Ссылка на комментарий
Поделиться на других сайтах

Собстенно, самый первый вариант алгоритма готов - две простых проверки, но работают, кажется, неплохо.

По шинглам Бродера я не стал делать т.к. это довольно ресурсоемкое занятие, да и для форумских постов не нужно такое качество. Впрочим, посмотрим, может позже сделаю :D

Единственное, что перед сравнением постов надо вырезати цитирование из них.

А в остальном, кусок кода на входе получает в двух переменных текст поста и очередной кусок из базы, а на выходе выдает 1 (дубль) или 0 (не дубль).

Можете смело писать модуль, код пришлю куда надо - он простейший, может еще и доработаете более профессионально ;)

 

Song, защита от ботов - это капча? Если поставить ее на каждый пост, пользователи просто уйдут с форума.

Изменено пользователем XTR
Ссылка на комментарий
Поделиться на других сайтах

Подумалось, что можно попробовать делать замену знаков препинания на пробелы, затем разбивать пост через explode по пробела, делать trim, приводить к одному регистру. А затем проверять процент совпадений такого массива с теми, которые получим таким же способом из 10 последних постов этого пользователя...

 

И тогда фразы:

 

"Покупайте наших слонов, наши слоны самые большие в мире!"

 

И

 

"Наших купите слонов пожалуйста, они большие!"

 

Будут считаться за дубль...

 

++++++++++++++

 

защит от ботов можно много всяких придумать.

 

Зато от грамотного человека защита невозможна. :D Разве что совсем регистрацию закрыть...

Ссылка на комментарий
Поделиться на других сайтах

как невозможна?

а бан по ip)))

ах, да, динамический блаблабла..

ну тогда бан по морде.

 

наши калькуляторы самые большие калькуляторы в мире!

Ссылка на комментарий
Поделиться на других сайтах

WildRAID, не совсем так, ни один алгоритм определения дубликатов не устоит против нормального спамера, особенно, если он будет спамить руками :D

Рекомендую почитать http://community.livejournal.com/ru_ir/845.html и http://download.yandex.ru/IMAT2007/kosinov.pdf

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.