diseÑo e implementaciÓn de un filtro de...

51

Upload: doandang

Post on 03-Jul-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE CENSURA EN FOROS WEBRESISTENTE A TRANSLITERACIÓN ASCII

CHRISTIAN GERMAN MOGOLLÓN PINZÓN

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDASFACULTAD DE INGENIERÍAINGENIERÍA DE SISTEMAS

BOGOTÁ2015

Page 2: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE CENSURA EN FOROS WEBRESISTENTE A TRANSLITERACIÓN ASCII

CHRISTIAN GERMAN MOGOLLÓN PINZÓNDirector

Ing. SERGIO A. ROJAS, PhD.

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDASFACULTAD DE INGENIERÍAINGENIERÍA DE SISTEMAS

BOGOTÁ2015

Page 3: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

Copyright © 2015 Christian G. Mogollón P.

Page 4: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

A todas las personas que hicieron posible este proyecto.

Page 5: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

v

Agradecimientos

Agradezco a Sergio Rojas Galeano PhD. por su orientación y asesoría. A mis padres por su incondi-cional apoyo y a todas las personas que hicieron posible el desarrollo de este proyecto.

Page 6: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

vi

Tabla de Contenido

Agradecimientos v

1 Introducción 11.1 Descripción del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.2.1 Objetivo general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2.2 Objetivos especí�cos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3 Marco téorico, tecnológico y metodológico . . . . . . . . . . . . . . . . . . . . . . . . 41.3.1 Comparación de cadenas de caracteres . . . . . . . . . . . . . . . . . . . . . . 71.3.2 Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2 Algoritmos y experimentos 112.1 Algoritmos básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2 Implementación de los algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.3 Experimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.3.1 Tiempo de ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.3.2 Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.3.3 Precisión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3 Análisis, diseño e implementación de la herramienta Web 273.1 Análisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.1.1 Requerimientos Funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.1.2 Requerimientos no Funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . 283.1.3 Diagrama general de casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . 283.1.4 Especi�cación de casos de uso en formato extendido . . . . . . . . . . . . . . 29

3.2 Diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.2.1 Base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.2.2 Modelo de clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.2.3 Diagrama de secuencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.2.4 Diagrama de despliegue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.3 Despliegue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.4 Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4 Conclusiones 41

Page 7: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

vii

Lista de Tablas

2.1 Conjunto de caracteres de sustitución ξa . . . . . . . . . . . . . . . . . . . . . . . . . 122.2 Datos relevantes del conjunto de prueba . . . . . . . . . . . . . . . . . . . . . . . . . 232.3 Resultados de inspección manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.4 Resultados promedios ponderados por grupo de caracteres . . . . . . . . . . . . . . . 252.5 Tabla análisis ROC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.1 Requerimientos funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.2 Requerimientos no funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.3 Descripción de la tabla mensaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.4 Descripción de la tabla tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.5 Descripción de la tabla foro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.6 Descripción de la tabla obscenidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.7 Descripción de la tabla umbral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.8 Descripción de la tabla obscenidadumbral . . . . . . . . . . . . . . . . . . . . . . . . 333.9 Descripción de la tabla transliteración . . . . . . . . . . . . . . . . . . . . . . . . . . 333.10 Descripción de las clases del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.11 Resultados prueba carga de trinos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Page 8: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

viii

Lista de Figuras

1.1 Ejemplos de burla a �ltros de foros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Ejemplos de abuso de lenguaje tomado de reconocidas redes sociales . . . . . . . . . 51.3 Matriz de cálculo del algoritmo de programación dinámica . . . . . . . . . . . . . . . 9

2.1 Fragmento matriz delta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.2 Sumatoria tiempo de ejecución para los algoritmos de cálculo . . . . . . . . . . . . . 192.3 Mensajes clasi�cados por número de caracteres . . . . . . . . . . . . . . . . . . . . . 192.4 iempos promedios de los algoritmos por grupos de mensajes . . . . . . . . . . . . . . 202.5 Sumatoria tiempo de ejecución para los algoritmos de cálculo . . . . . . . . . . . . . 202.6 Tiempo de ejecución puntual por obscenidad . . . . . . . . . . . . . . . . . . . . . . . 212.7 Sumatoria tiempo de ejecución para los algoritmos de �ltrado . . . . . . . . . . . . . 212.8 Tiempo de �ltrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.9 Sumatoria consumo de memoria por mensajes . . . . . . . . . . . . . . . . . . . . . . 222.10 Obscenidades clasi�cadas por número de caracteres . . . . . . . . . . . . . . . . . . . 232.11 Espacio ROC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.12 Espacios ROC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.1 Diagrama de casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.2 Especi�cación del CU1 Publicar mensaje . . . . . . . . . . . . . . . . . . . . . . . . . 293.3 Diagrama de actividades del CU1 Publicar mensaje . . . . . . . . . . . . . . . . . . . 303.4 Diagrama entidad-relación extendido . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.5 Diagrama de clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.6 Diagrama de secuencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.7 Diagrama de despliegue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.8 ForumForte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.9 Fragmento archivo JSON de trinos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.10 Tema de �ltrado de trinos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Page 9: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

1

Capitulo 1

Introducción

N.B. A lo largo del documento se presenta material con lenguaje que puede parecerofensivo o herir susceptibilidades para algunos lectores. La inclusión de este materialse realiza con �nes puramente ilustrativos para el planteamiento efectivo del problemafoco del proyecto. Se recomienda leer con cautela.

Desde la aparición del concepto de Web 2.0, Internet se ha caracterizado como un espacio delibre intercambio de información e ideas. Un ejemplo claro son los foros electrónicos y los blogs[ver Sección 1.3], aplicaciones Web que dan soporte a discusiones u opiniones en línea, permitiendoal usuario expresar una idea o comentario respecto a un tema tratado. Al ser un espacio de libreexpresión, algunas veces los usuarios utilizan estos espacios para propósitos no apropiados: trollingo la acción que busca provocar o confundir intencionalmente a los usuarios mediante la publicaciónde mensajes groseros, ofensivos o fuera de tema, y spamming o el abuso de cualquier tipo de sis-tema de mensajes electrónicos para enviar gran cantidad de mensajes (por lo general publicidad)indiscriminadamente. Un problema más delicado es que los usuarios busquen escribir palabras pro-hibidas dentro de las reglas del foro en sus mensajes (obscenidades, ofensas, publicidad), aunqueestos cuenten con �ltros básicos para la censura de palabras incluidas en listas negras que no per-miten la publicación de las mismas. Lo más común es que estas listas sean una especie de diccionariocontra el cual el sistema realiza un procedimiento básico de comparación de ocurrencias exactas paraactivar el bloqueo.

A pesar de lo anterior, últimamente se ha popularizado una práctica que tiene sus orígenes enel lenguaje leet (Rouse, 2011), un tipo de escritura compuesta de caracteres alfanuméricos (porejemplo, �computador� en leet es ��KOmPU74dOR�) y la jerga de los mensajes por medios elec-trónicos en las cuales las abreviaturas y el uso constante de signos y símbolos es común. La idea esutilizar tales mecanismos para burlar los �ltros de censura mediante transliteración o intercambiode caracteres ASCII alfanuméricos (ejemplo en la palabra �viagra� cambiar una �a� por un �@�,�vi@gr@�), o mediante la inserción de caracteres separadores (nuevamente por ejemplo �v.i.a.g.r.a.�)y de esta forma conservar la semántica del mensaje prohibido, desde la interpretación visual querealiza el lector y que le permite seguir entendiendo el mensaje, a la vez que se esquiva la acciónde los �ltros estándares de comparación de palabras censuradas. A manera de ilustración, en laFigura 1.1 se muestran ejemplos concretos de cómo comentarios generados por los usuarios de forosde un reconocido periódico colombiano, donde burlan los �ltros básicos mediante transliteraciónASCII para incluir mensajes con palabras obscenas o prohibidas. La motivación de plantear esteproyecto es la de proponer técnicas resistentes a la transliteración de obscenidades de manera que

Page 10: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

funcionen como �ltros de censura efectivos en estas situaciones.

Figura 1.1: Ejemplos de burla a �ltros de foros. [Extractos de los foros de www.eltiempo.com]

1.1 Descripción del problema

La detección o identi�cación de palabras restringidas (obscenidades, groserías, temas vedados) nor-malmente se realiza mediante algoritmos de comparación exacta para cadenas de caracteres [verSección 1.3.1], y existen técnicas muy e�caces para este �n. Un enfoque simple para �ltrado quecomúnmente incluyen los foros en Internet, es utilizar dichos algoritmos para buscar en los comen-tarios digitados por los usuarios cualquier ocurrencia de palabras incluidas en un diccionario detérminos vedados, junto con algunas de sus variantes más conocidas. Sin embargo, algunos usuariosingeniosos de estos foros, conciben maneras para burlar los �ltros de censura mediante la translit-

Page 11: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

eración de símbolos ASCII. En efecto, las operaciones de transliteración conducen a la generaciónde variantes que visualmente preservan la semántica de la palabra, a pesar de que su codi�caciónsea distinta. Entre los casos más comunes se pueden mencionar:

� Combinaciones de mayúsculas y minúsculas: jUEPucha | JuePuchA

� Inserción de espacios separadores: j u e p u c h a | jue pucha

� Inserción de Signos de puntuación separadores: j.u.e.p.ucha | j-u-e.p*u-c-***h*a

� Lenguaje leet: jepch/

� Inserción de letras repetidas: jjjjuuueeepppuuuccchhhaaa

� Substitución de letras por símbolos homógrafos: jvepv<h@

� Substitución por símbolos homófonos: huepucha | guepucha

� Errores tipográ�cos/ortográ�cos: jepucha | juepuca | juepukha

� Cadenas embebidas: jijuepucha | juepuchica

Además se pueden presentar combinaciones de los casos anteriores (ejemplo �JuePPPPuchAAAA�,�juepvvvch@@@�) con lo cual el problema de detección de todas las posibles combinaciones tienenivel de complejidad exponencial. A manera de ilustración, realizando sustitución homógrafa e in-serción de separadores, sería posible escribir la palabra �viagra� en más de seis billones de variantesdiferentes (Cockerham, 2004)

Ante la complejidad de la situación descrita, se hace inviable la creación de diccionarios de talvolumen para realizar una comparación exacta con cada uno de los términos allí incluidos (lo cualademás añadiría un costo computacional extremadamente alto). La motivación de este trabajo surgede la idea de contemplar la utilización de algoritmos para comparación aproximada de cadenas decaracteres [ver Sección 1.3.1]. Estos algoritmos realizan la comparación de dos palabras permitiendola ocurrencia de errores (sustituciones, inserciones, eliminaciones). El uso de estos algoritmos hapermitido avances en campos tales como comparación de genomas para biología computacional,procesamiento de texto para corrección ortográ�ca y compleción de frases [ver Sección 1.3.2]. Lapregunta problemática que surge a partir de este planteamiento es la siguiente:

¾Cómo diseñar mecanismos para �ltros de censura en foros electrónicos y blogs de Internet re-sistentes a transliteración, utilizando técnicas de comparación aproximada de cadenas y qué tanefectivos pueden llegar a ser en esta tarea?

Adicionalmente surgen preguntas de índole práctica, como: ¾Qué técnicas de extracción y ma-nipulación de textos son necesarias para procesar mensajes generados por los usuarios de manera quepuedan ser analizados por los mecanismos mencionados anteriormente?; ¾es el costo computacionalde estas técnicas apropiado para la implementación de un mecanismo de �ltrado viable, en cuantoa tiempo de respuesta para el usuario? La veri�cación de estas cuestiones son las que precisamentepropician el planteamiento de este proyecto. Seguidamente se desglosan en detalle los objetivos, lajusti�cación y el marco referencial y temporal del proyecto.

Page 12: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

1.2 Objetivos

1.2.1 Objetivo general

Diseñar e implementar un mecanismo de �ltrado de censura en foros Web resistente a transliteraciónASCII, mediante algoritmos de comparación aproximada de cadenas.

1.2.2 Objetivos especí�cos

� Crear un marco referencial para el mecanismo de �ltrado propuesto.

� Contextualizar el potencial uso del mecanismo de �ltrado de censura en la perspectiva de laWeb 2.0.

� Diseñar e implementar algoritmos para la detección de obscenidades resistentes a translit-eración ASCII.

� Desarrollar un foro Web experimental e incorporar el mecanismo de �ltrado.

� Construir los casos de estudio y la plataforma experimental para ejecutar las pruebas de losalgoritmos implementados.

1.3 Marco téorico, tecnológico y metodológico

Foros

Un foro de Internet o tablero de mensajes, es un sitio de discusión en línea donde las personas puedenmantener conversación en forma de mensajes publicados (Feerst, nd). También, dependiendo delnivel de acceso de un usuario o de la con�guración del foro, un mensaje publicado puede necesitarser aprobado por un moderador antes de ser visible.Un foro tiene una estructura jerárquica: contiene cierto número de subforos, cada uno de estospuede tener varios temas. Dentro de tema de un foro, cada nueva discusión iniciada es llamada unhilo (thread), y puede ser respondida por cuanta gente desee.Los foros modernos son una evolución tecnológica de los sistemas de tablones de anuncios de accesotelefónico que iniciaron a �nales de años 70's. Desde un punto de vista técnico, foros o tablonesson aplicaciones Web para la gestión de contenido generado por el usuario. Las bases para los forosWeb modernos se remontan a 1994, con el proyecto WIT (WWW Interactive Talk) del ConsorcioW3 (Ternisien, 2011). Una característica importante es la conformación implícita de un sentido de�comunidad virtual� que a menudo se desarrolla alrededor de los foros que tienen usuarios regulares.Tecnología, videojuegos, deportes, música, moda, religión, política son temas populares en foros.

Redes sociales

El concepto de redes sociales (Jaramillo, 2011) está relacionado con las actividades que compartenlos miembros de una comunidad (en su acepción más alta, sería �la sociedad�) bajo un entornoWeb donde se comparte contenido de texto, audio, vídeo y/o imágenes con otros miembros de lacomunidad de quienes se puede recibir retroalimentación directa.En un sentido más estricto una red social está de�nida como un estructura social compuesta porpersonas (u organizaciones u otras entidades), que están conectadas por unos o varios tipos derelaciones, tales como amistad, parentesco, intereses comunes, intercambios económicos, relaciones

Page 13: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

sentimentales, o comparten creencias o pasatiempos comunes, conocimientos o estatus. Esta estruc-tura viene apoyada de un servicio de red o comunicación, que se enfoca en facilitar la construcciónde las actividades y relaciones que componen la red social.Según Vaughan-Nichols (2013) las redes sociales más populares en el momento son Facebook, Twit-ter, Google+ y Youtube. En todas ellas los usuarios generan contenidos de manera masiva, ince-santemente y con un alcance mundial. Nuevamente en estos casos es posible que los autores decontenido más relevante en estas redes consigan tantos adeptos que pueden convertirse en �guraspúblicas. Igualmente la posibilidad de que sus seguidores y en general miembros de la comunidadgeneren contenido de manera autónoma, se asocia con el riesgo de abuso y extralimitación. A man-era de ejemplo, la Figura 1.2 permite observar la manipulación de mensajes con contenido obscenoo vulgar en las páginas de algunos usuarios de estas redes sociales.

Figura 1.2: Ejemplos de abuso de lenguaje tomado de reconocidas redes sociales.[Elaboración propia]

Filtros de obscenidades

Un �ltro de obscenidades o de lenguaje (a menudo referido simplemente como ��ltro� o �censor�)es un programa usado típicamente en foros de Internet (Word�lter, nd), salas de chat o blogs queautomáticamente revisa los comentarios o mensajes de los usuarios y modi�ca texto o remuevepalabras consideradas ofensivas por el administrador o comunidad (vulgaridades, blasfemias, sug-erencias publicitarias, profanidad). Los �ltros más primitivos buscan una cadena de texto especí�cay la reemplazan si encuentran coincidencia exacta. El reemplazo normalmente se realiza medianteun enmascaramiento parcial o total de la palabra (�culo� por �c*lo� o �****�). Algunos �ltros másavanzados pueden hacer distinciones con ciertas palabras, por ejemplo �ltrar �culo� pero no �tubér-culo�. Otros pueden inclusive usar expresiones regulares.

Page 14: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

El propósito primordial de los �ltros es el de aliviar la tarea de los autores, moderadores o admin-istradores de plataformas Web 2.0 de estar constantemente revisando el contenido generado por elusuario en busca de palabras prohibidas. En los �ltros primitivos la veri�cación mediante coinci-dencia exacta se complementa con la utilización de otras heurísticas de detección de comentariossospechosos que incluyen mensajes con:

� Muchas letras mayúsculas.

� Muchas repeticiones.

� Utilización de símbolos alfanuméricos ASCII.

� Comentarios muy largos o muy cortos.

� Uso de etiquetas HTML intercaladas con el texto Web.

� Cualquier ocurrencia de una palabra o frase considerada ofensiva o vulgar.

La detección de alguna palabra prohibida activa un mecanismo de bloqueo que desencadena enalguna de las siguientes acciones:

� Enmascaramiento de la palabra original con asteriscos o una secuencia de caracteres al-fanuméricos (�culo� como �****� o como �&%$½�).

� Reemplazo con palabras respetuosas posiblemente fuera de contexto (�culo� por �amor�)

� Eliminación u ocultamiento del mensaje completo que no puede ser puede ser publicado ovisualizado por los miembros de la comunidad.

� Borrado de la palabra, aunque se mantenga el comentario modi�cado (�culo grande� seríamostrada solamente como �grande�)

La e�cacia de estos sistemas automáticos de �ltrado muchas veces es superada por usuarios real-izando transliteración de símbolos ASCII, utilizando lenguaje leet, incluyendo separadores arti�cialeso también mediante el uso de etiquetas escondidas [ver Sección 1.1].

El problema de los falsos positivos

Los falsos positivos o mejor conocido en inglés como el problema Scunthorpe (Neuman, 1996),ocurre cuando un �ltro bloquea un comentario porque su texto contiene una subcadena de caracteresconsiderada obscena o prohibida. El problema se originó en un incidente en 1996 en el que el �ltrode vulgaridades de AOL previno a los residentes de la localidad de Scunthorpe, North Lincolnshire,Inglaterra, la creación de cuentas con AOL, porque el nombre de la ciudad contiene la subcadena�cunt� (una forma de �coño� en inglés). Años más tarde, los �ltros de Google, aparentementecometieron el mismo error, previniendo a los residentes de la búsqueda de negocios locales queincluían Scunthorpe en sus nombres.Entre los casos más conocidos de este problema están:

� En Febrero de 2004, en Escocia, Craig Cockburn reportó que era incapaz de usar su apellido(pronunciado �Coburn�) en Hotmail. En 2010 tuvo problemas similares en el sitio Web de laBBC, esto debido a que su apellido contiene la subcadena �cock� (una forma vulgar en ingléspara referirse al pene).

Page 15: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

� En Julio de 2008, Herman I. Libshitz no pudo inicialmente obtener un correo electrónicode Verizon debido a que su apellido contiene la subcadena �shit� (que en español signi�ca�mierda�).

� En correo electrónico pueden surgir problemas con palabras como socialismo, socialista yespecialista porque contienen la subcadena �cialis�, que es el nombre de una marca de unmedicamento para el tratamiento de la disfunción eréctil comúnmente bloqueado por �ltrosde spam.

� La palabra �ass� (�culo� en inglés) puede ser reemplazada por la versión menos ofensiva�butt�(trasero en inglés), conllevando a reemplazos ilógicos para palabras en inglés como �clbut-tic� para �classic� y �buttbuttinate� para �assassinate�.

Lo anterior evidencia algunas di�cultades técnicas relacionadas con la manipulación de textos quedeben contemplarse en los mecanismos de �ltrado para los comentarios generados por los usuarios.

1.3.1 Comparación de cadenas de caracteres

Algoritmos de comparación exacta

La búsqueda de patrones es un problema básico en las ciencias de la computación y ocurre natural-mente como parte del procesamiento de datos, recuperación de información, reconocimiento de voz,reconocimiento de imágenes y biología computacional [ver Sección 1.3.2]. La comparación de cade-nas es un caso especial de la búsqueda de patrones, donde el patrón es descrito por una secuencia�nita de símbolos contenidos en un conjunto

∑(o alfabeto). El problema consiste en encontrar una

o más ocurrencias exactas de un patrón corto P = P[0]P[1] . . . P[m−1] de tamaño m en un texto largoT = T[0][1] . . .[n−1] de tamaño n, donde m,n > 0 y m ≤ n. Tanto P como T están construidos sobreel mismo alfabeto

∑. La solución a este problema se diferencia si el algoritmo tiene que ser online

(esto es, si el texto T no es conocido de antemano) u o�ine (el texto puede ser preprocesado). Lasprincipales cuatro categorías de algoritmos de comparación exacta según Michailidis and Margaritis(2000) son:

� Algoritmos clásicos: algoritmos de fuerza bruta, algoritmo Knuth-Morris-Pratt algoritmo Si-mon, algoritmo Colussi, algoritmo Boyer-Moore, entre otros.

� Algoritmos de autómata �jos: algoritmo Reverse Factor y algoritmo Turbo Reverse Factor.

� Algoritmos de paralelismo de bits: algoritmo Shift-Or, algoritmo Shift-And y algoritmoBNDM.

� Algoritmos de hashing: algoritmo Harrison y algoritmo Karp-Rabin.

Algoritmos de comparación aproximada

Conceptos básicos

El problema de comparación aproximada de cadenas es una generalización del problema de com-paración exacta de cadenas, el cual involucra encontrar subcadenas de una cadena de texto parecidaa un patrón de texto dado. Formalmente el problema puede de�nirse como: Dado un alfabeto

∑,

un patrón corto P de tamaño m , un texto largo T de tamaño n con m << n , un entero k ≥ 0 yuna función de distancia d(.,.), el problema consiste en encontrar todas las subcadenas S de T talesque d(P,S) ≤ k (Michailidis and Margaritis, 2000).

Page 16: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

Operaciones

El conjunto de posibles operaciones que usualmente se contemplan entre dos cadenas de caracteress y t son las siguientes (Morgan, 1970):

� Inserción: δ(−, a); es decir, substituir un vacío (o carácter nulo,−) por la letra a.

� Eliminación: δ(a,−); es decir, substituir la letra a por el carácter nulo.

� Sustitución o reemplazo: δ(a, b) para a 6= b; es decir intercambiar a por b.

� Transposición: δ(ab, ba) para a 6= b; es decir, trastocar el orden de la subcadena ab.

Distancias de edición

Una distancia de edición es de�nida como el costo de la mejor secuencia de operaciones para convertiruna cadena de caracteres s en otra cadena de caracteres t (Wagner and Fischer, 1974). Cadaoperación de edición tiene un costo asignado. Por lo general un valor pequeño de la distancia indicagran similaridad entre las dos cadenas de caracteres.Dos ejemplos de distancias de edición son:

� Distancia de Hamming (Hamming, 1950): considera solamente operaciones de sustitución, conun costo de 1. La distancia es simétrica, y es �nita siempre y cuando |s| = |t|, donde |.| de�nela longitud de la cadena. En este caso se mantiene 0 ≤ d(s, t) ≤ |s|.

� Distancia de Levenshtein (Levenshtein, 1966): Es la función básica de distancia, todas lasoperaciones tiene un costo de 1. Puede entenderse como el número mínimo de inserciones,eliminaciones y sustituciones para convertir s en t . La distancia es simétrica y cumple que0 ≤ d(s, t) ≤ max(|s|, |t|).

Algoritmo comparación aproximada mediante programación dinámica

Este es el algoritmo más conocido, inicialmente propuesto por Wagner and Fischer (1974) comouna variación del algoritmo de Levenshtein (1965). La idea como cualquier algoritmo de progra-mación dinámica es solucionar un problema complejo (computar la distancia total entre las doscadenas, permitiendo errores atribuidos a las operaciones descritas anteriormente) descomponién-dolo en subproblemas más simples, es decir, calculando distancias progresivas entre subcadenas yluego reutilizando tales resultados parciales. Para calcular la distancia d(s, t), se utiliza una matrizauxiliar de distancias C (costos de edición), donde Ci, j representa el número mínimo de operacionesnecesarias para convertir s[1 . . . i] en t[1 . . . j].

En el Algoritmo 1.1 se presenta inicialmente el método para calcular la distancia exacta uti-lizando esta técnica; seguidamente se menciona la modi�cación necesaria para que considere com-paraciones aproximadas.

Como resultado, al �nal se obtiene Cm,n = d(s, t). El algoritmo primero calcula Ci,0 y C0,j querepresentan la distancia de edición entre s[1 . . . i] y t[1 . . . j] con la cadena vacía, correspondiendoa la primera �la y primera columna, respectivamente, de C. Evidentemente para la subcadena delongitud i (respectivamente j) se requieren i (respectivamente j) eliminaciones para convertirla enla cadena vacía. Por su parte Ci,j mantiene la distancia entre las subcadenas s[1 . . . i] y t[1 . . . j].Elalgoritmo de programación dinámica debe llenar la matriz de tal manera que los vecinos superiorese izquierdos de una celda han sido calculados antes de calcular dicha celda (garantizando de esta

Page 17: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

Algoritmo 1.1: Comparación de cadenas de caracteres mediante programación dinámica.Tomado de Wagner and Fischer (1974).

for i← 0 to m doCi,0 = i;

endfor j ← 0 to n do

C0,j = j;endfor i← 1 to m do

for j ← 1 to n doif sj == tj then

Ci,j = Ci−1,j−1;endelse Ci,j = 1 +min(Ci−1,j , Ci,j−1, Ci−1,j−1);

endend

forma que las distancias de edición entre subcadenas más cortas han sido obtenidas previamente).La Figura 1.3 ilustra la matriz de cálculo de la función d(�survey�,�surgery�). Dado que se rellenatodas las celdas de la matriz, el tiempo de cómputo es O(nm).

Figura 1.3: Matriz de cálculo del algoritmo de programación dinámica.[Tomado de Navarro (2001)]

Cuando se trata de comparación aproximada, la idea es considerar operaciones de edición queno incurran en un costo de 1, como se asume por defecto en la rama �else� del condicional del paso3 en el algoritmo. Es decir se modi�caría este paso con la expresión mostrada en el Algoritmo 1.2:

Nótese que se ha cambiado la condición (si == tj) por la condición δ(si, tj) == 0 donde δ(., .)es la función de costo de las operaciones de edición de�nidas anteriormente; dependiendo de lade�nición de esta función, el algoritmo podría por ejemplo, no considerar el costo de sustitucionesde letras homófonas (cambiar `s' por `z') y de esta forma realizar comparaciones aproximadas depalabras. El algoritmo que se obtiene se ha escogido preliminarmente como base para el desarrollode la presente propuesta.

Page 18: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

Algoritmo 1.2: Modi�cación del algoritmo de comparación aproximada. Tomado de Rojas-Galeano (2013).

if δ(si, tj) == 0 thenCi,j = Ci−1,j−1;

endelse Ci,j = d(si, tj) +min(Ci−1,j , Ci,j−1, Ci−1,j−1);

1.3.2 Aplicaciones

A continuación se mencionan algunas aplicaciones que los algoritmos anteriormente descritos puedentener en diferentes áreas de conocimiento. Se espera que a futuro, el problema y la solución presen-tados en esta propuesta, puedan ser de relevancia en algunos de estos dominios.

Biología computacional

Las cadenas de ADN y las secuencias de las proteínas pueden considerarse extensos textos escritoscon un alfabeto de 4 aminoácidos (Adenina (A), Citosina (C), Guanina (G), Timina (T)). Estassecuencias representan el código genético de los seres vivos, es decir, el �software� que utiliza lanaturaleza para la duplicación de las células, la embriogénesis, el metabolismo y en general, el fun-cionamiento de los organismos. Los biólogos analizan pedazos de estos textos (genes, cromosomas,proteínas) para buscar secuencias especí�cas que determinen diferencias entre organismos, entre teji-dos, u otras muestras biológicas, y así buscar entender los mecanismos de varias enfermedades. Estatarea se puede enmarcar dentro del problema descrito en las secciones anteriores, el de comparardos cadenas de texto, o buscar un patrón dado en un texto. Inclusive, la comparación aproximada(ver sección 6.6.2.) es mucho más relevante en este contexto, pues raramente estos códigos genéti-cos coinciden de manera idéntica, ya sea por errores experimentales o por diferencias causadas pormutaciones o alteraciones evolutivas. De hecho, los algoritmos de comparación aproximada sonuna herramienta ampliamente utilizada en la computación biológica (Navarro, 2001), adquiriendomayor notabilidad debido al creciente interés en los proyectos del genoma humano (HGP, 2014) queaspiran a la completa decodi�cación del ADN y sus potenciales aplicaciones médicas.

Recuperación de texto

El problema de corregir textos con palabras mal escritas es quizás la aplicación más antigua de lacomparación aproximada de cadenas. Por ejemplo 80% de los errores ortográ�cos o tipográ�cosocurren por una sola una inserción, eliminación, sustitución o transposición (Navarro, 2001). Haymuchas áreas en las que este problema aparece (Navarro, 2001), y la recuperación de información(RI) es una de las más demandantes. RI trata de encontrar información relevante en una grancolección de texto, y la comparación aproximada de cadenas es una de sus herramientas básicasya que están siendo cada vez más grandes (por ejemplo, Internet), más heterogéneas (diferenteslenguajes, por ejemplo) y más propensas a errores. Muchas colecciones son tan grandes y crecentan rápido que es imposible controlar su calidad. Una palabra introducida incorrectamente en unabase de datos puede resultar en la no recuperación en consultas posteriores. Además, el mismopatrón puede contener errores, por ejemplo en escenarios multilingües donde un nombre extranjeroes escrito incorrectamente.

Page 19: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

11

Capitulo 2

Algoritmos y experimentos

En este capitulo se mostraran los distintos algoritmos implementados en el desarrollo del �ltrode censura, como así también los experimentos realizados sobre dichos algoritmos para medir surendimiento en aspectos como: tiempo de ejecución, consumo de memoria, efectividad y precisión.

2.1 Algoritmos básicos

El Algoritmo 2.1 muestra la función aproxStrMatch(a, b) la cual recibe dos cadenas de caracteres(a, b) y calcula la distancia de edición entre ambas [Sección 1.3.1]. Notese que la cadena de caracteresa sera el patrón u obscenidad y la cadena de caracteres b será el texto variable sobre el que se realizarala búsqueda.

Algoritmo 2.1: aproxStrMatch(a, b). Tomado de Rojas-Galeano (2013).

Data: cadenas de caracteres: a = (a1, ..., an), b = (b1, ..., bm); función de costo de ediciónδ(·, ·)

Result: Dn+1,m+1, la distancia de edición entre a y bD1,1 = 0;for i← 1 to n do

Di+1,1 = Di,1 + δ(ai,ø)endfor j ← 1 to m do

D1,j+1 = D1,j + δ(ø, bj)endfor i← 1 to n do

for j ← 1 to m doDi+1,j+1 =min(Di,j+1 + δ(ai,ø), Di+1,j + δ(ø, bj), Di,j + δ(ai, bj))

endend

El Algoritmo 2.2 es la implementación de la función delta (δ) que es utilizada en la funciónaproxStrMatch(a, b). El conjunto de caracteres de separación ξβ esta dado por la Tabla 2.1, elconjunto de caracteres de sustitución ξa esta dado por ξa = ,.�^\=�~°¬*/|()[]{}:;'De�niciones muy extensas o detalladas de los conjuntos ξa, ξβ afecta el rendimiento del algoritmo apesar de mejorar su precisión, de acuerdo a la capacidad de procesamiento del hardware disponiblese pueden hacen conjuntos mas extensos y detallados.

Page 20: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

Algoritmo 2.2: Función δ.Tomado de Rojas-Galeano (2013).Data: Carácter a, carácter b, conjunto de caracteres de separación ξβ , conjunto de caracteres

de sustitución ξaif b es nulo then

d = 1; /* costo de eliminación */

endelse if a es nulo y b /∈ ξβ then

d = 1; /* costo de inserción */

endelse if a es nulo y b ∈ ξβ then

d = 0; /* costo de inserción de separadores */

endelse if b ∈ ξa then

d = 0; /* costo de una sustitución admisible */

endelse

d = 1; /* costo de otras sustituciones */

end

a b c d e f g h i j k l m n ñ o p q r s t u v w x y z .aA4âäàÄÅáÁÂÀ@Ææ

Bb8ÿvV

cC([{Ç碩kKqQ¾

dDð

eEéêëèæÊËÈ3¿Ææ

fF�

gG69

hH#

iI1!ïîìí½iÍÎÏÌ:;|

Jj

KkcC

lL|¿

mM

nNÑñ

nNÑñ

oO0ØÖöôòóÓÔõÕ÷Øø

pPþÞ

qQ9

rR®

sS5$�zZ

tT

uUüûùÜúÚÛÙvV

uUüûùÜúÚÛÙvVBb8ÿvV

wW

xX*

Yy¸¥ýÝ

zZ2

,.-^\="_

°¬*/|()[]{}:;

Tabla 2.1: Conjunto de caracteres de sustitución ξa [Elaboración propia].

Page 21: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

2.2 Implementación de los algoritmos

A continuación se muestra la implementación de los algoritmos utilizados en el desarrollo del �ltrode censura en lenguaje Matlab®.La Función 2.1 genera mediante programación dinámica [ver Sección 1.3.1] una matriz D de tamañonXm donde m y n son el tamaño de las cadenas de texto a y b respectivamente.

function D = calculomatrix(a,b)n=length(a);m=length(b);D=zeros(1+n,1+m);for i=1:n;

D(i+1,1) = D(i,1)+1;end

for i=1:n;for j=1:m;

if(j>1 && b(j)==b(j-1))D(i+1,j+1)= D(i+1,j);

elseD(i+1,j+1)=min([D(i,j+1)+1 D(i+1,j)+delta(char(0),b(j)) D(i,j)+ delta(a(i),b

(j))]);end

endendend

Función 2.1: Cálculo matriz de distancia D.

La Función 2.2 recorre columna por columna la matriz D generada por la Función 2.1. Deacuerdo al umbral de sensibilidad o k el algoritmo reemplaza las coincidencias con una cadena deasteriscos (*), el resultado �nal es el texto corregido.

function texto = filtradomatrix(D,a,b,k)n=length(a);m=length(b);mj=0;mj1=0;for j=1:m+1;sw=0;

if(D(2,j)==0)if(D(2,j-1)~=0)for i=3:n+1;

if(D(i,j)==0)sw=1;end

endif(sw==0)

mj=j-1;mj1=D(n+1,j);

endend

elseif(mj>0&&D(n+1,j)>k)

if(D(n+1,j)>mj1)mj=0;

Page 22: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

mj1=0;else

mj1=D(n+1,j);endend

endif(D(n+1,j)<=k)

if(j==m+1)if((mj>0))

b = horzcat(b(1:mj-1),repmat('*',1,j-mj));mj=0;

endelseif(D(n+1,j+1)<=k)

if(mj>0)b = horzcat(b(1:mj-1),repmat('*',1,j-mj+1),b(j+1:m));

endelse

if(mj>0)b = horzcat(b(1:mj-1),repmat('*',1,j-mj),b(j:m));mj=0;

endend

endendtexto=b;end

Función 2.2: Filtrado usando la matriz D.

La Función 2.3 usa dos vectores D1 y D2 de tamaño nX1 donde n es el tamaño de la cadena decaracteres a (patrón u obscenidad). El resultado de esta función son dos vectores M y N dondeM contiene los subíndices de inicio de ocurrencias en la cadena de caracteres b, N contiene lossubíndices de terminación de ocurrencias en la cadena de caracteres b. El vector M es inyectivosobre N por lo tanto siempre van a tener el mismo número de elementos.

function [M,N]= calculovector(a,b,k)n=length(a);m=length(b);D1=zeros(n+1,1);D2=zeros(n+1,1);M=[];N=[];mj=0;sw=0;for i=1:n;

D1(i+1,1) = D1(i,1)+1 ;endfor j=1:m;

for i=1:n;if(j>1 && b(j)==b(j-1))

D2(i+1,1)= D1(i+1,1);else

D2(i+1,1)=min([D2(i,1)+1 D1(i+1,1)+delta(char(0),b(j)) D1(i,1)+ delta(a(i),b(j))]);

Page 23: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

endendif(D2(n+1,1)<=k)

if(j==m)if((j-mj)>=n-1&&(mj>0))

M(end+1)=mj;N(end+1)=j+1;mj=0;

endelse

if(mj>0)if((j-mj)>=n-1)

M(end+1)=mj;N(end+1)=j+1;

endend

endelse

if(D1(n+1,1)<=k)if((j-mj)>=n&&(mj>0))

M(end+1)=mj;N(end+1)=j;mj=0;

endend

endsw=0;if(D2(2,1)==0)

if (D1(2,1)~=0)for i=3:n;

if(D2(i,1)==0)sw=1;

endendif(sw==0)

mj=j;end

endendD1=D2;

endend

Función 2.3: Cálculo vectores M y N .

La Función 2.4 usa los vectores M y N generados en la Función 2.3 y hace las correspondientessustituciones por cadenas de asteriscos en la cadena de caracteres b. El resultado �nal es el textocorregido.

function texto = filtradovector(M,N,b)for i=1:length(M);

b = horzcat(b(1:M(i)-1),repmat('*',1,(N(i)-M(i))),b(N(i):length(b)));end

texto=b;end

Función 2.4: Filtrado usando vectores

Page 24: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

Función delta (δ)

Para la implementación en Matlab® de la función delta (Algoritmo 2.2) se utilizaron tres enfoquesdiferentes.

� Delta normal: Mediante el uso de condicionales if y switch se veri�ca si un carácter de entradasi es sustituible por el carácter de entrada vj . Por ejemplo delta(”a”, ”4”) devuelve el valorde 0 (caracteres equivalentes). La Función 2.5 muestra un fragmento de la implementación dela función delta normal.

function chdist = delta(si,vj)chdist=0;if (si==char(0))

if(any (vj==' ,.-^\="_~??*/|()[]{}:;'))chdist=0;

elsechdist=1;

endelse

switch sicase 'a'

if(any (vj=='âäàÄÅáÁÂÀÆæaA4@'))chdist=0;

elsechdist=1;

endcase 'b'

if(any (vj=='Bb8?vV'))chdist=0;

elsechdist=1;

end...case 'z'

if(any (vj=='zZ2'))chdist=0;

elsechdist=1;

endcase '.'

if(any (vj==' ,.-^\="_~??*/|()[]{}:;'))chdist=0;

elsechdist=1;

endend

endend

Función 2.5: Fragmento de la función delta (δ)

� Delta tabla: En este caso la entrada de la función delta son códigos ASCII(American Standard

Code for Information Interchange) de cada carácter si, vj . Se hace la búsqueda del indice(ASCII(si)−96, ASCII(vj)) en una matriz de tamaño 29X256. Por ejemplo deltatabla(1, 54)

Page 25: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

devuelve el valor de 0. La de�nición de la matriz es mostrada en la Figura 2.1 y la funciónque genera dicha tabla puede encontrase en el Anexo 1. La �la denotada por * es el conjuntode caracteres de separación ξβ .

Figura 2.1: Fragmento matriz delta [Elaboración propia].

� Delta lista: Mediante el uso de listas (veintinueve en total) se usa una funciónismember(vj , ASCII(si)− 96) que veri�ca si vj esta en la lista con el indice ASCII(si)− 96.La Función 2.6 genera las listas.

function l = crearlista()subs{1} = 'âäàÄÅáÁÂÀaA4@4';subs{2} = 'ßBb8vV';subs{3} = 'cCÇ碩([{kKqQ';subs{4} = 'dD';subs{5} = 'éêëèæÊËÈeE3';subs{6} = 'ƒfF';subs{7} = 'gG69';subs{8} = 'hH';subs{9} = 'iI1ïîìí¡!ÍÎÏÌi:';subs{10} = 'Jj';subs{11} = 'KkcC';subs{12} = 'lL|';subs{13} = 'mM';subs{14} = 'ÑñnN';subs{15} = 'ØÖöôòóÓÔõÕoO0';subs{16} = 'þÞpP';

Page 26: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

subs{17} = 'qQ9';subs{18} = '®rR';subs{19} = 'sS5$zZ’;

subs20 = ’tT’;subs21 = ’uUüûùÜúÚÛÙvV’;subs22 = ’uUüûùÜúÚÛÙvVBb8ßvV’;subs23 = ’wW’;subs24 = ’xX*’;subs25 = ’Yyÿ¥ýÝ’;subs26 = ’zZ2’;subs27 = ’nNÑñ’;subs28 = ’ ,.-^\=´´~°¬*/|()[]{}:;';subs29 = ’ ,.-^\=´´~°¬*/|()[]{}:;';l=subs;end

Función 2.6: Función generadora de listas

2.3 Experimentos

Sobre los algoritmos y funciones planteadas en la sección anterior se corrieron una serie de experi-mentos para medir el desempeño en aspectos como el consumo de memoria y el tiempo de ejecución.Los experimentos fueron realizados en el programa Matlab® Versión 7.9.0.529 (R2009b) sobre unamaquina Intel® Quad Core Q6600 de 2.40 Ghz, 4 Gb de memoria RAM, 500 GB de disco duro ysistema operativo Windows® 7 Profesional 64 bits.Los experimentos se realizaron con trescientos mensajes tomados de los foros de opinión del periodicocolombiano El Tiempo (http://www.eltiempo.com/) (ver Anexo 2) y con cincuenta obscenidadesprede�nidas por los autores de este proyecto (ver Anexo 3).

2.3.1 Tiempo de ejecución

En esta sección se calcula el tiempo de ejecución (runtime en ingles) de las diferentes modalidadesde las funciones y algoritmos. Para medir los tiempos en Matlab® se utilizo la función tic-toc, paramayor información ver Knapp-Cordes and McKeeman (2011).

Algoritmo de cálculo

A continuación la Figura 2.2 muestra la comparación de los resultados de los tiempos de ejecuciónpara los algoritmos de cálculo (matriz y vectores) mediante las diferentes modalidades: delta nor-mal, delta tabla y delta lista.

Page 27: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

(a) Algoritmo de cálculo por matriz. (b) Algoritmo de cálculo por vectores.

Figura 2.2: Sumatoria tiempo de ejecución para los algoritmos de cálculo [Elaboración propia].

Para un mejor análisis se dividieron los mensajes en grupos de acuerdo a su número de carac-teres, la Figura 2.3 muestra el porcentaje de cada grupo en el total de mensajes.

Figura 2.3: Mensajes clasi�cados por número de caracteres [Elaboración propia].

La Figura 2.4 muestra los promedios de tiempo de calculo de cada uno de los grupos determi-nados en la Figura 2.3. El promedio esta para cada una de las modalidades de la función delta(normal,tabla y lista).

Page 28: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

Figura 2.4: Tiempos promedios de los algoritmos por grupos de mensajes [Elaboración propia].

A diferencia de la Figura 2.2, la Figura 2.5 calcula el tiempo de ejecución por obscenidades y nopor mensajes.

(a) Algoritmo de cálculo por matriz. (b) Algoritmo de cálculo por vectores.

Figura 2.5: Sumatoria tiempo de ejecución para los algoritmos de cálculo [Elaboración propia].

La Figura 2.6 muestra el tiempo de ejecución puntual por cada obscenidad (cincuenta en total)usando el calculo por matriz y por vector por cada una de las variaciones de la función delta.

Page 29: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

(a) Algoritmo de cálculo por matriz. (b) Algoritmo de cálculo por vectores.

Figura 2.6: Tiempo de ejecución puntual por obscenidad [Elaboración propia].

Algoritmo de �ltrado

En los algoritmos de �ltrado no interviene la función delta por lo tanto solo hay dos versiones; �ltradopor matriz y �ltrado por vectores. La Figura 2.7 muestra la sumatoria del tiempo de �ltrado decada versión por mensajes y por obscenidades.

(a) Por mensajes. (b) Por obsenidades.

Figura 2.7: Sumatoria tiempo de ejecución para los algoritmos de �ltrado [Elaboración propia].

En la Figura 2.8 están los tiempos puntuales de �ltrado para cada algoritmo de �ltrado.

Page 30: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

(a) Por mensajes. (b) Por obscenidades.

Figura 2.8: Tiempo de �ltrado [Elaboración propia].

2.3.2 Memoria

Esta sección muestra el consumo de memoria RAM de los algoritmos de calculo y �ltrado (matrizy vectores) de la Sección 2.2. La función delta en cualquiera de sus modalidades (normal, tabla ylista) se maneja como una variable global cuyo consumo de memoria es insigni�cante comparadoal consumo total de memoria de la función de calculo. En los algoritmos de �ltrado no se usa lafunción delta.

(a) Calculo. (b) Filtrado.

Figura 2.9: Sumatoria consumo de memoria por mensajes [Elaboración propia].

2.3.3 Precisión

Para las pruebas de precisión fue utilizado un conjunto de sesenta obscenidades (Ver Anexo 4) y losmismos trescientos mensajes que se trabajaron en esta sección. Las obscenidades se dividieron engrupos de acuerdo a su número de caracteres tal como se muestra en la Figura 2.10.Los resultados del mecanismo son los mismos usando cualquier implementación del algoritmo cal-culo (matriz o vectores) con cualquier tipo de delta (normal, tabla o lista).

Page 31: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

Figura 2.10: Obscenidades clasi�cadas por número de caracteres [Elaboración propia].

La Tabla 2.2 muestra un resumen con los datos relevantes de los trescientos mensajes que com-ponen el conjunto total de pruebas.

No. total mensajes 300No. total palabras 9293

No. total obscenidades 537No. total caracteres 54099

Tabla 2.2: Datos relevantes del conjunto de prueba [Elaboración propia]

La Tabla 2.3 muestra los resultados por inspección manual de la efectividad del algoritmo paracada obscenidad de acuerdo al umbral de sensibilidad k. Se entiende como positivo una ocurrenciade la obscenidad en el conjunto total de mensajes. Un negativo como una no-ocurrencia en elconjunto total de mensajes. Un verdadero positivo (VP) como un palabra que el mecanismo marcacomo obscenidad y efectivamente es una obscenidad. Un falso positivo (FP) como una palabraque el mecanismo marca como obscenidad pero que no lo es. Un falso negativo (FN) como unaobscenidad que el mecanismo no marca como tal y un verdadero negativo (VN) como una palabraque no es una obscenidad y el mecanismo no la marca como obscenidad.

Page 32: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

Tabla 2.3: Resultados de inspección manual. VP= Verdaderos Positivos, FP= Falsos Positivos, FN=Falsos Negativos, VN= Verdaderos Negativos [Elaboración propia].

Page 33: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

De acuerdo a la división por grupos de las obscenidades (Figura 2.10), la Tabla 2.4 muestra losresultados de precisión mediante la técnica de promedios ponderados.

Tabla 2.4: Resultados promedios ponderados por grupo de caracteres. VP= Verdaderos Positivos, FP=Falsos Positivos, FN= Falsos Negativos, VN= Verdaderos Negativos [Elaboración propia].

Análisis ROC

En esta sección se hace una análisis ROC (Característica Operativa del Receptor) de los resultados(Fawcett, 2006). Las características analizadas fueron la sensibilidad o razón de verdaderos positivos(VPR) de�nida como V PR = V P/(V P +FN) y el ratio o razón de falsos positivos (FPR) de�nidocomo FPR = FP/(FP + V N). La Tabla 2.5 muestra los resultados obtenidos de acuerdo a losgrupos de caracteres por cada umbral de sensibilidad k.

Tabla 2.5: Tabla análisis ROC [Elaboración propia].

A continuación se realiza un análisis del espacio ROC el cual es de�nido como la representacióngrá�ca en un plano x, y de lo verdaderos positivos (V PR - aciertos) contra los falsos positivos (FPR- costes). Una clasi�cación perfecta en un espacio ROC (acertar todos los verdaderos positivos yque no hayan falsos positivos ni falsos positivos) se ubicaría en el punto (0, 1) de dicho plano, unaclasi�cación totalmente aleatoria daría un punto a lo largo de la línea diagonal. La Figura 2.11ilustra el funcionamiento del espacio ROC.

La Figura 2.12 muestra las grá�cas de los espacios ROC para cada umbral de sensibilidad k ycada grupo de obscenidades.

Page 34: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

Figura 2.11: Espacio ROC [Tomado de Wikipedia (2015)].

(a) k = 0 (b) k = 1

(c) k = 2 (d) k = 3

Figura 2.12: Espacios ROC por cada umbral k [Elaboración propia].

Page 35: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

27

Capitulo 3

Análisis, diseño e implementación de la

herramienta Web

En este capitulo se detalla el proceso de análisis, diseño e implementación de un foro Web exper-imental (ForumForte a partir de ahora) el cual incorpora un mecanismo de censura que usa losalgoritmos descritos en la Sección 2. En este caso la codi�cación de los algoritmos es realizada enun lenguaje de programación de alto nivel y no en Matlab.ForumForte es una aplicación Web diseñada usando el patrón arquitectónico MVC (Krasner et al.,1988) sobre la plataforma Java EE (Shannon, 2006).

3.1 Análisis

3.1.1 Requerimientos Funcionales

La Tabla 3.1 muestra la lista de requerimientos funcionales del sistema.

ID REQUERIMIENTOS FUNCIONALES

REQF 1 El usuario puede publicar un mensaje.

REQF 2 El usuario puede ver los foros activos en el sistema.

REQF 3 El usuario puede ver los temas activos en el sistema.

REQF 4 El usuario puede ver los mensajes activos en el sistema.

REQF 5 El usuario administrador puede crear un nuevo foro.

REQF 6El usuario administrador puede eliminar un foro existente del sistema mientras nohayan temas con mensajes asociados a dicho foro.

REQF 7 El usuario administrador puede crear un nuevo tema en el sistema asociado a unforo existente.

REQF 8El usuario administrador puede eliminar un tema existente mientras no hayanmensajes asociados a dicho tema.

REQF 9 El usuario administrador puede eliminar todos los mensajes asociados a un tema.

REQF 10 El usuario administrador puede crear una nueva obscenidad en el sistema.

REQF 11 El usuario administrador puede eliminar una obscenidad del sistema.

REQF 12El usuario administrador puede asignar un umbral de sensibilidad a todas o ungrupo de obscenidades en el sistema.

Page 36: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

REQF 13El usuario administrador puede crear una nueva contraseña y un nuevo usuariopara ingresar al modulo de administración.

REQF 14 El usuario administrador puede ver las estadísticas de desempeño del sistema.

REQF 15 El usuario puede procesar un archivo de trinos en el sistema.

REQF 16 El usuario puede descargar el instalador del sistema.

REQF 17 El usuario puede descargar el manual de usuario e instalación del sistema.

Tabla 3.1: Requerimientos funcionales [Elaboración propia].

3.1.2 Requerimientos no Funcionales

La Tabla 3.2 muestra la lista de requerimientos no funcionales del sistema.

ID REQUERIMIENTOS NO FUNCIONALES

REQNF 1 El sistema debe ser desarrollado bajo el modelo vista controlador (MVC)

REQNF 2 El lenguaje de programación usado para el desarrollo debe ser Java.

REQNF 3 El servidor de base de datos debe ser MySQL 5,5 o mejor.

REQNF 4 El servidor de aplicaciones web debe ser Tomcat 5.5 o mejor.

REQNF 5 Las etapas de análisis, diseño y construcción del aplicativo deben ser documen-tadas.

REQNF 6 El sistema garantiza su ejecución en cualquier navegador web.

REQNF 7 El sistema debe �ltrar las obscenidades de acuerdo a los algoritmos implementados.

REQNF 8 Se registra el tra�co Web en el aplicativo mediante el uso de Google Analytics

Tabla 3.2: Requerimientos no funcionales [Elaboración propia].

3.1.3 Diagrama general de casos de uso

La Figura 3.1 muestra el diagrama general de casos de uso obtenido de los requerimientos funcionaleslistados en la sección anterior.

Page 37: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

Figura 3.1: Diagrama de casos de uso [Elaboración propia].

3.1.4 Especi�cación de casos de uso en formato extendido

En el Anexo 5 publicar se encuentra la especi�cación extendida para los quince casos de uso es-peci�cados en la Figura 3.1. A manera de ejemplo se mostrara la especi�cación para el caso de usoPublicar mensaje (CU1).

Figura 3.2: Especi�cación del CU1 Publicar mensaje [Elaboración propia].

Page 38: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

Figura 3.3: Diagrama de actividades del CU1 Publicar mensaje [Elaboración propia].

Page 39: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

3.2 Diseño

3.2.1 Base de datos

La Figura 3.4 de�ne la estructura de la base de datos que utiliza la aplicación ForumForte.

Figura 3.4: Diagrama entidad-relación extendido [Elaboración propia].

A continuación se especi�ca la descripción completa para todas las tablas del modelo.

Page 40: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

TABLA MENSAJE

CAMPO TIPO NULO LLAVE DESCRIPCIÓN

id int no PrimariaIdenti�cador único del

mensaje

texto_original varchar(1000) no Mensaje introducido porel usuario

texto_transliterado varchar(1000) no Mensaje procesado por elsistema

fecha date noFecha de publicación de

un mensaje

estado int noEstado del mensaje

(activo 1 o inactivo 0)

tema_id int no ForáneaIdenti�cador del temaasociado al mensaje

Tabla 3.3: Descripción de la tabla mensaje [Elaboración propia].

TABLA TEMA

CAMPO TIPO NULO LLAVE DESCRIPCIÓN

id int no PrimariaIdenti�cador único del

temanombre varchar(45) no Nombre del tema

estado int noEstado del tema (activo 1

o inactivo 0)

foro_id int no ForáneaId del foro al quepertenece el tema

Tabla 3.4: Descripción de la tabla tema [Elaboración propia].

TABLA FOROCAMPO TIPO NULO LLAVE DESCRIPCION

id int no PrimariaIdenti�cador único del

foronombre varchar(45) no Nombre del foro

estado int noEstado del foro (activo 1

o inactivo 0)

descripción varchar(100) no Descripción del foro

Tabla 3.5: Descripción de la tabla foro [Elaboración propia].

Page 41: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

TABLA OBSCENIDAD

CAMPO TIPO NULO LLAVE DESCRIPCIÓN

id int no PrimariaIdenti�cador único de la

obscenidadnombre varchar(45) no Nombre de la obscenidad

tamano int no Numero de caracteres quetiene la obscenidad

estado int noEstado dela obscenidad(activo 1 o inactivo 0)

Tabla 3.6: Descripción de la tabla obscenidad [Elaboración propia].

TABLA UMBRAL

CAMPO TIPO NULO LLAVE DESCRIPCIÓN

id int no PrimariaIdenti�cador único del

umbralumbral int no Umbral k

Tabla 3.7: Descripción de la tabla umbral [Elaboración propia].

TABLA OBSCENIDADUMBRALCAMPO TIPO NULO LLAVE DESCRIPCION

id int no Primaria Identi�cador únicoumbral_id int no Foránea Id del umbral asociado

obscenidad_id int no ForáneaId de la obscenidad

asociada

Tabla 3.8: Descripción de la tabla obscenidadumbral [Elaboración propia].

TABLA TRANSLITERACIONCAMPO TIPO NULO LLAVE DESCRIPCION

id int no Primaria Identi�cador únicomensaje_id int no Foránea Id del mensaje asociadoumbral_id int no Foránea Id del umbral asociado

obscenidad_id int no ForáneaId de la obscenidad

asociada

Tabla 3.9: Descripción de la tabla transliteración [Elaboración propia].

Page 42: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

3.2.2 Modelo de clases

La Tabla 3.10 muestra la descripción básica de las clases usadas en el sistema. Para una mayorespeci�cación de las clases (métodos, atributos, constructores etc.) remitirse a la documentación

Java de la herramienta (Anexo 6).

NOMBRE ATRIBUTOS METODOS DESCRIPCION

ManageBean- factory:EntityManagerFactory

+getEntityManager()+getObscenidades()+getTemaGeneral()+getHilosTema()+getMensajesTema()+getNombreTema()+listaObscenidadestexto()+getTemaEspeci�coporId()+insertarMensaje()+getForoPorid()+eliminarForo()+insertarTemaGeneral()+getAllTemasEspeci�cos()+insertarTemaEspeci�co()+contarMensajesTema()+eliminarTemaEspeci�co()+limpiarmensajestema()+getAllObscenidadUmbral()+getAllObscenidad()+getObscenidadUmbralporId()+eliminaridobscenidad()+getAllUmbral()+getUmbralPorid()+insertarObscenidadUmbral()+insertarObscenidad()+getTamanos()+updateAllUmbralObs()+updateUmbralObsXTamano()+insertarTransliteracion()+contarMensajes()+contarMensajesFiltrados()+getMensajesTemasinFiltrar()+getMensajesTemaFiltrados()

Clase para elmanejo de lapersistencia

CensorPalabras

∼ b: String∼ texto_�ltrado: String∼ obscenidades: String∼ id_obscenidad: Vec-tor<ObscenidadUmbral>∼ k: int∼ M: Vector<Integer>∼ N: Vector<Integer>

+ CensorPalabras()+CensorPalabras(String)-delta()+�ltradoVector()+calculoVector()+calculomatrix()+calcular()+�ltradoMatriz()

Clase para elmanejo de lapersistencia

Page 43: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

Admo_business- managebean:ManageBean

+guardaumbral()+cargarTamanos()+guardaobscenidad()+cargarUmbral()+eliminarobscenidad()+cargarObscenidadUmbral()+limpíarmensajesTema()+eliminartema()+guardartema()+cargartemasEspeci�cos()+guardarforo()+eliminarforo()+cargartemas()+getTotalMensajes()+getTotalMensajesTransliterados()+cargarObscenidad()

Clase que manejala lógica de laaplicación

Foro_business- managebean:ManageBean

+procesarmensaje()+formatearTexto()+obtenernombreTemaporId()+cargarmensajes()+getHilosTema()+cargartemas()+procesarJson()

Clase deutilidades de la

aplicación

Obscenidad

- id: int- estado: int- nombre: String- tamano: int- obscenidadUmbrals:List<ObscenidadUmbral>- transliteracions:List<Transliteracion>- k: Long

+Obscenidad()+addObscenidadUmbral()+removeObscenidadUmbral()+addTransliteracion()+removeTransliteracion()

Clase entidadobscenidad

Tema

- id: int- estado: int- nombre: String- mensajes:List<Mensaje>-foro: Foro- respuestas: int- ultimaFecha: Date- mensajes_trans: int

+Tema()+addMensaje()+removeMensaje()

Clase entidadTema

Mensaje

- id: int- estado: int- fecha: Date- textoOriginal: String- textoTransliterado:String- tema: Tema- transliteracions:List<Transliteracion>

+Mensaje()+addTransliteracion()+removeTransliteracion()

Clase entidadMensaje

Page 44: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

Umbral

- id: int- umbral: int- obscenidadUmbrals:List<ObscenidadUmbral>- transliteracions:List<Transliteracion>

+Umbral()+addObscenidadUmbral()+removeObscenidadUmbral()+addTransliteracion()+removeTransliteracion()

Clase entidadUmbral

Transliteracion

- id: int- mensaje: Mensaje- obscenidad: Obscenidad- umbral: Umbral

+Transliteracion()Clase entidadTransliteracion

ObscenidadUmbral- id: int- obscenidad: Obscenidad- umbral: Umbral

+ObscenidadUmbral()Clase entidadObscenidadUm-

bral

Administrador - admo: Admo_business+ Administrador()#doGet()#doPost

Servletcontrolador delmodulo de

administración

Controlador

- foro_bus: Foro_business- sw_descarga: String∼ logger: Logger

+ init()# doGet()# doPost

Servletcontrolador deForumForte

Tabla 3.10: Descripción de las clases del sistema. [Elaboración propia].

La Figura 3.5 muestra el diagrama de clases de la aplicación ForumForte .

Page 45: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

Figura 3.5: Diagrama de clases [Elaboración propia].

Page 46: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

3.2.3 Diagrama de secuencia

Por cada caso de uso descrito en la Sección 3.1.3 hay un correspondiente diagrama de secuencia, la totalidadse encuentra en el Anexo 7. A manera de ejemplo se muestra el diagrama de secuencia para el caso de usoPublicar mensaje (CU1) .

Figura 3.6: Diagrama de secuencia [Elaboración propia].

3.2.4 Diagrama de despliegue

La Figura 3.7 muestra el diagrama de despliegue para la aplicación ForumForte que se encuentra en linea(http://tinyurl/ForumForte/). La con�guración de cualquier otra instalación puede ser distinta.

Figura 3.7: Diagrama de despliegue [Elaboración propia].

Page 47: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

3.3 Despliegue

La información de despliegue de ForumForte puede encontrarse en el manual de usuario e instalación (Anexo8 o en el sitio en linea http://tinyurl/ForumForte/ ). La Figura 3.8 muestra el despliegue en un ambientede producción.

Figura 3.8: ForumForte [Elaboración propia].

3.4 Pruebas

El mecanismo ForumForte fue probado mediante la carga de mil mensajes o trinos de la red social Twitter®.El sistema procesa un archivo de tipo JSON (Anexo 9) que contiene la información relacionada de cadamensaje (Twitter, 2015). La Figura 3.9 muestra un fragmento de dicho tipo de archivos.

Figura 3.9: Fragmento archivo JSON de trinos [Elaboración propia].

La carga del archivo se realiza en el tema con�gurado en ForumForte para tal �n. La Figura 3.10 muestra

Page 48: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

los archivos ya procesados en ForumForte La Tabla 3.11 muestra el los resultados de la prueba con la cargade los trinos

Figura 3.10: Tema de �ltrado de trinos [Elaboración propia].

Mensajes procesados en el sistema 996Mensajes �ltrados en el sistema 93

Porcentaje de mensajes �ltrados en elsistema

9,34%

Obscenidades �ltradas 115

Tabla 3.11: Resultados prueba carga de trinos [Elaboración propia].

Page 49: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

41

Capitulo 4

Conclusiones

Los algoritmos de comparación de cadenas de caracteres son una poderosa herramienta en el campo dereconocimiento de patrones de texto lo que permitió el desarrollo de una herramienta capaz de enfrentarproblemas que se dan en ambientes colaborativos de la Web 2.0 (foros, blogs, redes sociales) como el spam-ming, trolling o abuso de obscenidades. En la actualidad la mayoría de �ltros de censura o censores depalabras implementados en estos ambientes colaborativos quedan cortos ante la imaginación y astucia de losusuarios, el problema radica en que se limitan a mecanismos tan simples como listas negras, diccionarios depalabras prohibidas y búsqueda exacta de ocurrencias.

El uso de un algoritmo basado en programación dinámica facilito una fácil pero robusta implementaciónen lenguajes como Matlab, sin embargo hay posibilidades interesantes en la programación por autómatas oel paralelismo de bits que añadirían un gran plus al mecanismo de �ltrado. Un foro web es un sistema enlinea concurrente, en un mismo instante pueden haber cientos o miles de usuarios publicando contenidos porlo tanto el sistema censor que veri�ca estos contenidos debe ser óptimo computacionalmente, la selecciónadecuada de la función delta (normal, lista, matriz) y la estructura de manejo de datos (vectores, matriz) quemaneje el mecanismo garantiza un óptimo desempeño. De acuerdo a los experimentos realizados la mejoropción es usar un delta matriz con un manejo de vectores que es la con�guración presente en el mecanismo.Cabe anotar que el rendimiento del mecanismo también esta ligado al hardware del equipo de computodisponible además también se podrían probar otro tipo de estructuras de datos como pilas o colas.

Los resultados de precisión son independientes de la función delta o la estructura de manejo de datoselegida. Los factores que in�uyen directamente en que tan acertado es el mecanismo son el conjunto decaracteres de separación ξβ , conjunto de caracteres de sustitución ξa , el conjunto de obscenidades canónicas(lista negra) y el umbral k. Umbrales altos o una elección muy amplia de obscenidades de pocos caracteres(4 o menos) puede generar bastantes casos de falsos positivos, como regla general obscenidades largas conumbrales altos y obscenidades cortas con umbrales bajos o cero. Para la selección de los conjuntos de susti-tución no hay regla general mas que experimentar las mejores combinaciones.

El uso de tecnología Java® en la implementación de ForumForte permitió desarrollar una herramientamodular, portable y fácilmente con�gurable permitiendo que pueda ser probaba sin importar la plataformade computo, el modelo vista controlador sobre el cual fue el desarrollo permite esta expansibilidad. Variasposibilidades se desprenden de esta versión prototipo del mecanismo, mejoramiento de las estructuras dedatos, implementación en otros lenguajes de programación (phpBB es el sistema de foros mas importantedel mundo y es en su totalidad desarrollado en php), implementación de un diccionario de obscenidadespermitiría la utilización del mecanismo para idiomas diferentes al español (no se contempla el caso de idiomasque usan distintos alfabetos) .

Page 50: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

42

Bibliografía

Cockerham, R. (2004). There are 600,426,974,379,824,381,952 ways to spell viagra.). Recuperado el 27 deMarzo de 2015 de http://www.cockeyed.com/lessons/viagra/viagra.html.

Fawcett, T. (2006). An introduction to {ROC} analysis. Pattern Recognition Letters, 27(8):861 � 874.{ROC} Analysis in Pattern Recognition.

Feerst, E. (n.d). What is an "internet forum". Recuperado el 27 de Marzo de 2015 dehttp://www.videojug.com/interview/internet-communities-and-forums-2.

Hamming, R. W. (1950). Error detecting and error correcting codes. Bell System technical journal, 29(2):147�160.

HGP (2014). Recuperado el 27 de Marzo de 2015 de http://web.ornl.gov/sci/techresources/Human_

Genome/index.shtml.

Jaramillo, A. M. (2011). Redes sociales para todos: su negocio en la Web 2.0. Grijalbo.

Knapp-Cordes, M. and McKeeman, B. (2011). Improvements to tic and toc functionsfor measuring absolute elapsed time performance in matlab. Recuperado el 27 deMarzo de 2015 de http://www.mathworks.com/company/newsletters/articles/improvements-to-tic-and-toc-functions-for-measuring-absolute-elapsed-time-performance-in-matlab.html?shttp://www.mathworks.com/company/newsletters/articles/improvements-to-tic-and-toc-functions-for-measuring-absolute-elapsed-time-performance-in-matlab.html?s_cid=fb_wall_11-8-11_newsletter_tictoccid=fb_wall_11-8-11_newsletter_tictoc.

Krasner, G. E., Pope, S. T., et al. (1988). A description of the model-view-controller user interface paradigmin the smalltalk-80 system. Journal of object oriented programming, 1(3):26�49.

Levenshtein, V. I. (1966). Binary codes capable of correcting deletions, insertions, and reversals. In Sovietphysics doklady, volume 10, pages 707�710.

Michailidis, P. D. and Margaritis, K. G. (2000). String matching algorithms: Survey and experimentalresults. International Journal of Computer Mathematics, 76:411�434.

Morgan, H. L. (1970). Spelling correction in systems programs. Commun. ACM, 13(2):90�94.

Navarro, G. (2001). A guided tour to approximate string matching. ACM computing surveys (CSUR),33(1):31�88.

Neuman, P. (1996). The risk digest. Recuperado el 27 de Marzo de 2015 dehttp://catless.ncl.ac.uk/Risks/18.07.html#subj3.

Rojas-Galeano, S. A. (2013). Revealing non-alphabetical guises of spam-trigger vocables. DYNA, 80:15 �24.

Rouse, M. (2011). Leet speak (leet, leetspeak, leetspeek, or hakspeak). Recuperado el 27 de Marzo de 2015de http://whatis.techtarget.com/de�nition/leet-speak-leet-leetspeak-leetspeek-or-hakspeak.

Page 51: DISEÑO E IMPLEMENTACIÓN DE UN FILTRO DE …repository.udistrital.edu.co/bitstream/11349/2377/1/MogollonPinzon... · diseÑo e implementaciÓn de un filtro de censura en foros web

Shannon, B. (2006). Jsr 244: Java platform, enterprise edition 5 (java ee 5) speci�cation.

Ternisien, N. (2011). Forum software timeline. Recuperado el 27 de Marzo de 2015 de http://www.forum-software.org/forum-software-timeline-from-1994-to-today.

Twitter (2015). Rest apis. Recuperado el 27 de Marzo de 2015 de https://dev.twitter.com/rest/public.

Vaughan-Nichols, S. (2013). Google+ moves up to second place in social networks [blogpost]. Recuperadoel 27 de Marzo de 2015 de http://www.zdnet.com/google-moves-up-to-second-place-in-social-networks-7000010372/.

Wagner, R. A. and Fischer, M. J. (1974). The string-to-string correction problem. J. ACM, 21(1):168�173.

Wikipedia (2015). Receiver operating characteristic � wikipedia, the free encyclopedia. [Online; accessed17-Agosto-2015].

Word�lter (n.d.). En wikipedia. Recuperado el 27 de Marzo de 2015 dehttp://en.wikipedia.org/wiki/Word�lter.