Подтвердить что ты не робот

Есть ли способ обнаружить строки, такие как putjbtghguhjjjanika?

Поиск людей на моем веб-сайте и некоторые из этих поисков:

tapoktrpasawe
qweasd qwa as
aıe qwo ıak kqw
qwe qwe qwe a

Мой вопрос: есть ли способ обнаружить строки, похожие на те, что указаны выше?

Я полагаю, что невозможно обнаружить 100% из них, но любое решение будет приветствоваться:)

edit: Я имею в виду "поиски смеха". Например, некоторые люди ищут строки, такие как "asdqweasdqw", "paykaprkg", "iwepr wepr ow" в моей поисковой системе, и я хочу обнаружить поиски сплетни.

Не имеет значения, будет ли результат поиска 0 или что-то еще. Я не могу использовать эту логику.

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

Спасибо за помощь

4b9b3361

Ответ 1

Вы можете построить модель символа для переходов символов из куча текста на английском языке. Так, например, вы узнаете, насколько распространено это для "h" после "t" (довольно часто). На английском языке вы ожидаете, что после "q" вы получите "u". Если вы получите "q", за которым следует нечто иное, чем "u", это произойдет с очень низкой вероятностью, и, следовательно, это должно быть довольно тревожным. Нормализовать подсчеты в таблицах так, чтобы у вас была вероятность. Затем для запроса пройдите по матрице и вычислите произведение переходов, которые вы берете. Затем нормализуйте длину запроса. Когда число будет низким, у вас, вероятно, есть таинственный запрос (или что-то на другом языке).

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

Для фона читайте Марковские цепи.

Изменить, я реализовал это здесь в Python:

https://github.com/rrenaud/Gibberish-Detector

и buggedcom переписали его в PHP:

https://github.com/buggedcom/Gibberish-Detector-PHP

my name is rob and i like to hack True
is this thing working? True
i hope so True
t2 chhsdfitoixcv False
ytjkacvzw False
yutthasxcvqer False
seems okay True
yay! True

Ответ 2

Предполагая, что вы имеете в виду поиски сплетни... Это будет больше проблем, чем того стоит. Вы предоставляете им функцию поиска, пусть они используют ее, как им заблагорассудится. Я уверен, что есть некоторые алгоритмы, которые обнаруживают странные группировки символов, но, вероятно, это будет больше ресурсов/трудоемких, чем просто отсутствие результатов.

Ответ 4

Я бы подумал, что вы можете обнаружить эти строки так же, как вы могли бы обнаружить "обычные слова". Это просто соответствие шаблону, нет?

Что касается того, почему пользователи ищут эти строки, это вопрос большой. Возможно, вам удастся искоренить тарабарщину другим способом. Например, если он комментирует спам-фразы, которые ищут люди (или script), затем установите CAPTCHA.

Изменить. Еще один конец интерпретации ввода - немного уменьшить его. Разрешить поиск каждые 10 секунд или около того. (Я помню, что видел это на программном обеспечении форума, а также в разных местах на SO.) Это будет отвлекать от поиска sdfpjheroptuhdfj снова и снова и в то же время не будет мешать пользователям, которые ищут для и найти их материал.

Ответ 5

Как некоторые люди прокомментировали, в google нет кликов для tapoktrpasawe или putjbtghguhjjjanika (ну, теперь есть, конечно), поэтому, если у вас есть способ сделать быстрый поиск Google через API, вы можете выбросить любой поиск которые не получили результатов Google и не были названы одним из ваших продуктов. Почему вы хотите сделать это, это еще один вопрос: пытаетесь ли вы сохранить усилия для своей библиотеки поиска? Сделайте свой ручной обзор "популярных поисковых терминов" более значимым? Или вы просто расстроены необъяснимым поведением некоторых людей в большом широком интернет-пространстве? Если это последний, мой совет просто отпустит его, даже если есть способ предотвратить его. Придет какая-то другая странность.

Ответ 6

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

Ответ 7

Я думаю, что проверка наличия одного согласного, за которым следует гласная или два согласных, за которыми следует гласная, обычно означает произносимое слово. В противном случае это будет мусор (за исключением очень небольшого количества слов). Я думаю, что это позаботится о 98% от мусора и здравого слова.

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