letras griegas graficos python unicode glyph profanity

graficos - letras griegas en python



¿Hay una lista de caracteres que se parecen a las letras inglesas? (3)

Estoy teniendo problemas con el filtrado de blasfemias para un foro web escrito en Python.

Como parte de eso, intento escribir una función que tome una palabra y devuelva todas las posibles ortografías simuladas de esa palabra que usen caracteres visualmente similares en lugar de letras específicas (por ejemplo, s † å køv € rƒ | øw).

Espero que tenga que expandir esta lista a lo largo del tiempo para abarcar la creatividad de las personas, pero ¿hay alguna lista flotando en Internet que pueda usar como punto de partida?



Probablemente sea mucho más profundo de lo que necesita, pero no lo suficientemente amplio como para cubrir su caso de uso, pero el consorcio Unicode tuvo que lidiar con ataques contra nombres de dominio internacionalizados y creó esta lista de homógrafos (caracteres con el mismo o similar representación):

http://www.unicode.org/Public/security/latest/confusables.txt

Podría hacer un punto de partida al menos.


No tengo solución per se, pero tengo algunas ideas.

El enfoque de @ collapsar en los comentarios me suena bien en principio, pero creo que querrá usar una biblioteca de OCR disponible en lugar de tratar de analizar las imágenes usted mismo. Para hacer las imágenes, usaría una fuente como algo en la familia DejaVu, porque tiene una buena cobertura de caracteres Unicode relativamente oscuros.

Otra manera fácil de obtener datos es observar las descomposiciones de caracteres "precompuestos" como "à"; si un personaje se puede descomponer en uno o más capítulos de combinación seguidos por un personaje base que parece una letra inglesa, probablemente se parezca a una letra inglesa en sí misma.

Nada supera a muchos datos para un problema como este. Podrías recopilar muchos buenos ejemplos de las sustituciones de personajes que las personas han hecho al rozar los foros web adecuados. Luego puede usar este procedimiento para aprender otros nuevos: primero, busque "palabras" que contengan principalmente caracteres que pueda identificar, junto con algunas que no puede. Haz una expresión regular a partir de la palabra, convirtiendo todo lo que puedas en letras regulares y reemplazando todo lo demás con ".". Luego haga coincidir su expresión regular con un diccionario, y si solo obtiene una coincidencia, tiene algunos candidatos muy buenos para lo que se supone que representan los personajes desconocidos. (En realidad, no usaría una expresión regular para buscar un diccionario, pero entiendes la idea).

En lugar de minar foros, puede utilizar el n-gram corpus de Google ( http://storage.googleapis.com/books/ngrams/books/datasetsv2.html ), pero no puedo verificarlo ahora si contiene el tipo de pseudo palabras que necesitas.