Introducción
Hace poco @Samu_ publicaba el siguiente artículo: www.meneame.net/story/gran-avance-google-deepmind-hacia-inteligencia-a
A lo largo de todo ese artículo destacaba un troll en particular: @h4x0r
Mirando su perfil es bastante fresco, junio del 2018, y solamente 183 comentarios. ¿Se trataría de alguien con más experiencia en Menéame? ¿Cómo saberlo?
Natural Language Processing al rescate
Aquí es dónde entra en juego la inteligencia artificial, en concreto una rama llamada NLP (Natural Language Processing) que trata de analizar el lenguaje. Una de las técnicas utilizadas en NLP son los n-gramas, que el nombre técnico suena raro, pero no es más que el análisis de las palabras consecutivas dónde n es el número de palabras. Pongamos un ejemplo: "Desde Santurce a Bilbao" tendría 3 bigramas: [Desde, Santurce], [Santurce, a], [a, Bilbao], y 2 trigramas: [Desde, Santurce, a],[Santurce, a, Bilbao]
Esta técnica de los n-gramas se usa muchísimo, y seguramente que lo habéis usado, porque son la base para los modelos de Markov. ¿Sabéis los teclados predictivos que os muestran las siguientes palabras? ¿O los típicos retos de "escribe tal cosa y luego pon la primera palabra que te sugiera"? Pues dichas predicciones son por el análisis de frecuencias de los n-gramas. También se emplean mucho en análisis de secuencias de ADN o proteínas, para que veáis lo potentes que pueden llegar a ser, sirven para identificar el lenguaje de una frase, se usan al pasar de voz a texto para identificar las palabras...
¿Y cómo se puede identificar si dos personas hablan igual?
Las personas suelen hablar de una cierta manera, y suelen crear una especie de "firma" lingüística, que se aprecia muchísimo más cuanto más marcado y único es el vocabulario y expresiones de una persona, y cómo no, cuanto más habla. Esa firma lingüística, a mano, es muy compleja de procesar, pero recordemos que tenemos los n-gramas. Además utilizaremos algo llamado stemmers. Un stemmer es un algoritmo capaz de calcular la raíz de una palabra, de manera que cosas como "viajé", "viajando", "viajero" tienen la misma raíz "viaj".
Usando los n-gramas de cada persona, diremos que cada n-grama es una feature, y si tenemos tooooodos los n-gramas que han dicho las personas de menéame, lo que podemos es hacer es para cada persona crear vectores de unos y ceros que nos indican si ese usuario ha utilizado esa feature o no. Como tener una única observación por usuario es poco, usamos además data augmentation, es decir, modificaciones de las observaciones (sustituir unos por ceros) para generar un dataset de 200 observaciones por usuario.
Ahora tendremos un modelo entrenado que dado un input de una persona (su array de features) nos da la probabilidad de que sea cada usuario del foro.
¿Y h4x0r es Malversan?
Bueno, no se puede estar seguro, pero el resultado de la red es que h4x0r se trata de malversan con un 0.96 de coincidencia (96%). Hay que tener en cuenta que los siguientes usuarios más probables no alcanzan el 0.5 de coincidencia.
Si suponemos que h4x0r es un troll dupe de un usuario habitual preexistente, pues... que cada uno saque sus conclusiones.
¿Pero hay forma de comprobarlo?
En inteligencia artificial hay un campo que es la interpretabilidad. Es el campo que investiga cómo justificar la respuesta de la IA sobre todo por sus posibles implicaciones éticas: nadie quiere tener un sistema para tomar decisiones que no se sabe en qué se basa. En este caso, la decisión está tomada por la frecuencia de algunos n-gramas que son comunes entre ambos y que sin embargo su frecuencia es muy baja o nula en el resto de usuarios. En una red neuronal que clasifica, la última capa suele ser una softmax, para interpretar el resultado basta con mirar los pesos más elevados que conectan la capa anterior con el nodo más activado de la softmax, de esa manera encontramos las features más decisivas.
Todos los n-gramas comunes de h4x0r y Malversan se pueden consultar aquí: batman.gyptis.org/zerobin/?63bdf69bae3a183d#cvF535OEH9vIN+/kDrdM/Y3wfa
He obviado los stemmers y los skipgramas para que no fuese enorme. Pero simplemente con el análisis de n-gramas si hacer stemming es suficiente para ver ciertas cosas. Ojo, las que pongo a continuación son solamente una pequeña muestra:
"temas de los que no tienes ni puta idea": Aunque podría parecer una frase habitual, lo cierto es que esa construcción exacta solamente se ha utilizado 42 veces en Menéame. De esas 42, una vez ha sido h4x0r y 3 ha sido malversan. Eso significa que entre ambos monopolizan casi el 10% del uso de esa construcción exacta.
"Es una gilipollez del tamaño de Notre Dame": Esta construcción exacta ha sido usada 2 veces en menéame: 1 h4x0r y otra Malversan, así que alcanzan el 100% de uso y constituye una expresión muy suya. Por cierto, "del tamaño de Notre Dame" ha sido usada 5 veces en total en la historia de menéame, 2 veces Malversan, 1 vez h4x0r , y luego dos usuarios llamdos daphoene y danihr.
"Que tú has venido aquí a hablar de": De nuevo una construcción que podría parecer habitual, pero no lo es. Estamos hablando de 19 veces, 2 de ellas Malversan y una h4x0r. Además, la construcción completa es un 10-grama! "que tú has venido aquí a hablar de tu libro", pero al no usar skipgramas no vemos que h4x0r puso "hablar tu libro" en su lugar. En ese caso, tenemos que ha sido usada 13 veces, 2 por malversan y una por h4x0r.
"Ni te has molestado en comprobar": Otra que es común pero ha sido empleada 53 veces, 3 de las cuales ha sido Malversan y 1 h4x0r.
"Lo cual no quita que la": Es común, aparece más de 20.000 veces, pero es muy característica de Malversan que la ha empleado 136 veces, y h4x0r 6 veces en tan solo 181 comentarios. Así que no marca la diferencia, pero es una huella lingüística más.
"tengo mejores cosas que hacer que": Aparece 152 veces, 2 de Malversan y 1 de h4x0r
"dónde te salga de los cojones": Aparece 51 veces, 1 de Malversan y 1 de h4x0r.
"lo que te he dicho porque": Otra coletilla... aparece 3981 veces, 39 de Malversan y 4 de h4x0r
"además es una falta de respeto": 19 veces, 1 de Malversan y 1 de h4x0r
"puedes seguir haciendo el ridículo": 41 veces, 2 de Malversan y 1 de h4x0r
"por ejemplo tirarme un cuesco": Ha sido empleado un total de 10 veces, 3 veces Malversan, 1 vez h4x0r y el resto de veces 2 cuentas borradas.
"cuesco lentejero": ha sido empleado 4 veces: 2 Malversan, 1 h4x0r y 1 El_Apolítico. Como curiosidad, esta expresión fuera de Menéame solamente se ha usado una vez en la historia de internet, en el foro burbuja.info.
"sólo te has apuntado": ha sido empleado 3 veces: 1 Malversan, 1 h4x0r y 1 Melirka
"forma parte del retraso": Ha sido empleado 3 veces: 1 Malversan, 1 h4x0r y 1 fentdaci
Pero además hay una cierta cantidad de insultos y expresiones características y poco frecuentes que comparten en común.
Por ejemplo, ambos definen a los niños como "monstruitos de turno", nadie más en menéame lo hace. "chimpancé" y "cacahuetes" en la misma frase como folma de insulto, "zote" (de 810 veces, 114 son de Malversan), "zopenco", "ejperto", "berreando", "barrabasada", "tontolhaba", "maniqueas", "milongas", "attentionwhore", "murga", "cazurros", "tirria",... menciones a "Reinhard Heydrich"...
No es por una en concreto sino la suma de todas las pequeñas coincidencias las que hacen que la IA afirme que son la misma persona.
Conclusión
¿Se puede estar totalmente seguro? No. Pero si no son la misma persona, es demasiada coincidencia como para que no hayan recibido la misma educación en la misma casa... o ser almas gemelas.