2010-09-27 7 views
7

El winner of a recent Wikipedia vandalism detection competition sugiere que la detección podría mejorarse " detectar teclado azar golpea considerando QWERTY disposición de teclado".Detección de teclado azar golpea considerando QWERTY disposición de teclado

Ejemplo: woijf qoeoifwjf oiiwjf oiwj pfowjfoiwjfo oiwjfoewoh

¿Hay algún software que hace esto ya (preferiblemente free and open source)?

Si no, ¿existe un proyecto de software libre activo cuya meta es lograr esto?

Si no, ¿cómo le sugeriría a implemento un software?

+1

Los algoritmos de detección de vandalismo ya incluyen la detección basada en el diccionario/gramática, así que aquí estoy buscando un algoritmo que NO use diccionarios o gramática, sino patrones de los dedos. –

+1

y cómo exactamente 'patrones de dedos' difieren de las entradas del diccionario además de las reglas de gramática? Es el mismo enfoque, la distinción es que uno es detección positiva y la otra detección negativa. Además, no está claro lo que estás pidiendo: los golpes de teclado aleatorios considerando qwerty no son diferentes de los golpes de teclado aleatorios considerando dvorak, a menos que no sean realmente aleatorios (mejor denomínalos "construcciones de vandalismo de uso común"). – Unreason

+0

@Unreason: sobre su primera pregunta: quise decir diccionarios y gramáticas de lenguas humanas existentes. La "detección negativa" que propone es interesante, siéntase libre de proponerla como respuesta. Acerca del "Más": reformulo mi pregunta: se le da una secuencia de caracteres que se han escrito en un teclado QWERTY, ¿cómo se calcula la probabilidad de que se haya tecleado sin cuidado? (es decir, por alguien cuyo objetivo no era expresar algo, sino ingresar rápidamente a muchos personajes, por ejemplo, oiuroiqewrcoqf) –

Respuesta

5

Si dos bigrams en texto analizado están cerca en términos QWERTY pero tienen una frecuencia estadística casi nula en el idioma inglés (como pares "fg" o "cd") existe la posibilidad de que se trate de hits de teclado aleatorios. Si se encuentran más pares de este tipo, la probabilidad aumenta enormemente.

Si desea tener en cuenta el uso de ambas manos para golpear, pruebe las letras que están separadas con otra letra para la cercanía QWERTY, pero dos bigramas (o incluso trigramas) para la frecuencia de bigram. Por ejemplo, en el texto "flsjf", verificaría F y S para la distancia QWERTY, pero bigrams FL y LS (o trigram FLS) para la frecuencia.

+1

+1 esto suena bien, pero primero se debe extraer la lista de estos bigrams comunes para galimatías; de lo contrario, el resultado final se basaría en cálculos aproximados (adivinar qué bigramas o trigramas son característicos de galimatías). – Unreason

+0

Tal vez para OP tenga que indicarse que la coincidencia de bigram es el algoritmo común que se encuentra en los correctores ortográficos – Unreason

+0

Aceptado. Como referencia, me gustaría añadir que la repetición de un bigram inusual es un signo casi seguro. –

2

La mayoría de las combinaciones de teclado tienden a estar en la fila de inicio en mi experiencia. Sería razonablemente simple verificar si una gran proporción de los caracteres utilizados son asdfjkl;.

+1

wow ¡Nunca lo noté, pero eso es tan cierto acerca de mi maceración aleatoria! – Blindy

0

La respuesta de Fredley se puede extender a una gramática que construiría palabras de letras cercanas.

Por ejemplo asasasasasdf se podría generar con una gramática que conecta as, sa, sd y df.

Con esta gramática, ampliado a todas las letras del teclado (con letras que están una al lado de la otra) podría, después del análisis, darle una medida de la cantidad de texto que se puede generar con esta gramática "galimatías".

Advertencia: por supuesto, cualquier texto que discuta tal gramática y enumere ejemplos de texto 'galimatías' puntuaría significativamente más alto que un texto de revisión ortográfica regular.

Tenga en cuenta que el enfoque de ejemplo no detectaría el vandalismo en forma de 'h4x0r rulezzzzz !!!!!'.

Otro enfoque aquí (que se puede integrar con el método anterior) sería analizar estadísticamente un corpus de texto vandalizado y tratar de obtener palabras comunes en los textos dañados.

EDITAR:
Dado que está asumiendo QWERTY, ¿supongo que también podríamos asumir el inglés?

¿Qué pasa con KISS? Ejecute el texto a través del corrector ortográfico inglés y si falla concluye miserablemente que es probablemente un galimatías (la pregunta es, ¿por qué quiere distinguir rápidamente galimatías de tonterías al azar o para el caso de texto muy mal deletreado ?)

Alternativamente, si se deben considerar otros diseños de teclado (Dvorak, ¿alguien?) E idiomas, entonces puede ejecutar el texto a través de todos los correctores ortográficos de idiomas disponibles y luego proceder (esto daría autodetección de idioma también).

Este no sería un método muy eficiente, pero podría usarse como una prueba de referencia.

Nota:
A la larga me imagino que los vándalos se adaptarían y empezar a destrozar con, por ejemplo, extractos de otras páginas de Wikipedia, lo que sería en última instancia, difícil de detectar automáticamente como el vandalismo (bueno, los textos existentes podrían ser una suma de comprobación y bandera levantada en duplicados, pero si el texto proviene de alguna otra fuente sería finalmente difícil).

+0

Acerca de su párrafo "Hacer nota": De hecho, el 'h4x0r rulezzzzz !!!!!"El caso no está dirigido aquí, y de hecho se lo cuida por otros medios, de lo que habla el periódico del ganador. En resumen: la repetición de caracteres de "zzzzz" y la puntuación excesiva ya lo marcarían como probable vandalismo. –

1

Considere la distribución empírica de secuencias de dos letras, es decir, "probabilidad de tener una letra dada sigue la letra b", todas estas probabilidades llenan una tabla de tamaño 27x27 (considerando el espacio como una letra).

Ahora, compare esto con los datos históricos de un grupo de inglés/francés/cualquier texto. Usa la divergencia de Kullback para comparar.

+0

¿Tengo razón en que para implementar tu solución necesito un corpus de "texto triturado"? –

+0

necesita un cuerpo de texto inglés estándar (como artículos de wikipedia). –

+0

Creo que solo teniendo en cuenta la última versión del artículo (a menos que sea realmente corto) es probable que funcione para el ejemplo de Wikipedia. –

1

Tomando un enfoque basado en el diseño del teclado proporcionará un buen indicador. Con un diseño QWERTY, encontrará que alrededor del 52% de las letras en cualquier texto dado será desde la línea superior de los caracteres del teclado. Alrededor del 32% de los personajes pertenecerán a la línea media y el 14% de ellos a partir de la línea de fondo. Si bien esto varía ligeramente de un idioma a otro, sigue habiendo un patrón muy claro que se puede detectar. Use la misma metodología para descubrir patrones en otros diseños de teclado, luego asegúrese de detectar el diseño utilizado para cualquier texto ingresado antes de buscar un galimatías. Aunque el patrón es claro, es mejor utilizar este método como un indicador solo dado que esta metodología funciona mejor con scripts más largos. El uso de otros indicadores, como caracteres no alfa/numéricos mezclados con alfa/numérico, longitud del texto, etc. proporcionará más indicadores que al aplicar la ponderación, pueden proporcionar una muy buena indicación general de entrada de galimatías.