Intereting Posts

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

Люди ищут на моем сайте, и некоторые из этих поисков:

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

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

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

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

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

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

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

Вы можете построить модель символа для переходов символов из куча текста на английском языке. Так, например, вы узнаете, насколько распространено это для «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 

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

Вы можете сделать то, что делает Stackoverflow, и вычислить энтропию строки .

Конечно, это всего лишь одна из многих эвристик SO использует для определения ответов низкого качества и не следует полагаться на 100% точно.

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

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

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

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

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

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

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