64 votos

Hay alguna forma de detectar cadenas como putjbtghguhjjjanika?

La búsqueda de personas en mi sitio web y algunas de estas búsquedas son estas:

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

Mi pregunta es hay alguna manera de detectar cadenas similares a los de arriba ?

Supongo que es imposible detectar el 100% de ellos, pero cualquier solución será bienvenida :)

edit: me refiero a la "jibberish búsquedas". Por ejemplo, algunas personas cadenas de búsqueda como "asdqweasdqw", "paykaprkg", "iwepr wepr ow" en mi motor de búsqueda, y quiero detectar jibberish búsquedas.

No importa si el resultado de la búsqueda será 0 o cualquier otra cosa. Yo no puedo usar esta lógica.

Algunas de las nuevas marcas o productos será ignorado si voy a considerar "normales palabras".

Gracias por su ayuda

159voto

Rob Neuhaus Puntos 5522

Se podría construir un modelo de personaje a personaje de la transición de un montón de texto en inglés. Así, por ejemplo, saber cómo de común es que exista una 'h', después de una 't' (bastante común). En inglés, se espera que después de una 'q', obtendrá una 'u'. Si usted recibe una 'q' seguido por algo distinto de una "u", esto sucederá con probabilidad muy baja, y por lo tanto debe ser bastante alarmante. Normalizar la cuenta en sus mesas, por lo que tiene una probabilidad. Luego de una consulta, a pie a través de la matriz y calcular el producto de las transiciones que usted toma. Luego normalizar por la duración de la consulta. Cuando el número es bajo, es probable que tenga un galimatías de consulta (o algo en un idioma diferente).

Si usted tiene un montón de registros de consultas, se podría hacer un modelo de inglés general, de texto y, a continuación, fuertemente su peso propio de consultas en el que el modelo de la fase de entrenamiento.

Para más información, lea acerca de las Cadenas de Markov.

Editar, he implementado esta aquí en Python:

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

y buggedcom reescribió en 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

8voto

Usted podría hacer lo que Stackoverflow ¿ y calcular la entropía de la cadena.

Por supuesto, este es sólo uno de los muchos heurística, por LO que utiliza para determinar la baja calidad de las respuestas, y no debe confiarse en ella como un 100% de precisión.

5voto

John Puntos 12438

Me gustaría pensar que podría detectar estas cadenas de la misma manera que se podría detectar "regular las palabras". Es sólo coincidencia de patrón, ¿no?

En cuanto a por qué los usuarios están buscando estas cadenas, que es la pregunta más grande. Usted puede ser capaz de madre fuera de la galimatías en busca de alguna otra manera. Por ejemplo, si el comentario de spam frases que las personas (o una secuencia de comandos) que está buscando, a continuación, instalar un CAPTCHA.

Edit: Otro final de carrera alrededor de la interpretación de la entrada es de acelerador ligeramente. Permitir una búsqueda cada 10 segundos o así. (Recuerdo haber visto esto en el foro de software, así como varios lugares). Esto tomará un poco de la diversión de la búsqueda para sdfpjheroptuhdfj una y otra vez, y al mismo tiempo no interfieran con los usuarios que están buscando, y encontrando, sus cosas.

3voto

Kate Gregory Puntos 13451

Como algunas personas comentaron, no hay hits en google para tapoktrpasawe o putjbtghguhjjjanika (Bueno, ahora hay, por supuesto), así que si usted tiene una manera de hacer una rápida búsqueda en google a través de una API, usted podría lanzar fuera de los términos de búsqueda que no obtuvo los resultados de Google y no el nombre de uno de sus productos. Por qué se quiere hacer esto es otra pregunta - ¿estás tratando de ahorrar esfuerzos para su búsqueda la biblioteca? Que tu mano-reseña de "popular" términos de búsqueda más significativos? O simplemente estás frustrado por la inexplicable conducta de algunos de la gente de la gran internet? Si es esto último, mi consejo es que acaba de dejarlo ir, incluso si hay una manera de evitarlo. Algunas otras rarezas va a llegar.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X