in

Los trolls y los bots están interrumpiendo las redes sociales: así es como la IA puede detenerlos (Parte 1)

0TG XUEGZbYCEWiwG

Los trolls y los bots están interrumpiendo las redes sociales: así es como la IA puede detenerlos (Parte 1)

Jason Skowronski

30 de julio de 2019·9 min de lectura

Los trolls y los bots tienen una influencia enorme y, a menudo, no reconocida en las redes sociales. Se utilizan para influir en conversaciones por motivos comerciales o políticos. Permiten que pequeños grupos ocultos de personas promuevan información que apoye su agenda y a gran escala. Pueden llevar su contenido a la parte superior de las noticias, los resultados de búsqueda y los carritos de compras de las personas. Algunos dicen que incluso pueden influir en las elecciones presidenciales.

Para mantener la calidad oF discusión en los sitios sociales, se hace necesario filtrar y moderar el contenido de la comunidad. ¿Podemos utilizar el aprendizaje automático para identificar publicaciones y comentarios sospechosos? La respuesta es sí y le mostraremos cómo.

Fuente: pixabay.com

Los trolls y los bots son un gran dolor para las redes sociales

Los trolls son peligrosos en línea porque no siempre es obvio cuando estás siendo influenciado por ellos o interactuando con ellos. Las publicaciones creadas por agentes rusos fueron vistas por hasta 126 millones de estadounidenses en Facebook antes de las últimas elecciones. Twitter lanzó un volcado de datos masivo de más de 9 millones de tweets de trolls rusos. ¡Y no es solo Rusia! También hay relatos de trolls que intentaron influir en Canadá después del conflicto con Huawei. El problema se extiende incluso a las compras en línea, donde las reseñas en Amazon se han ido volviendo cada vez más manipuladas por los comerciantes.

Los bots son programas de computadora que se hacen pasar por personas. Pueden amplificar el efecto de los trolls al involucrar o dar me gusta a su contenido en masa, o al publicar su propio contenido de forma automatizada. Se volverán más sofisticados y más difíciles de detectar en el futuro. Los bots ahora pueden crear párrafos completos de texto en respuesta a publicaciones de texto o comentarios. El modelo GPT-2 de OpenAI puede escribir texto que se siente y se ve muy similar a la calidad humana. OpenAI decidió no publicarlo debido a problemas de seguridad, pero es solo cuestión de tiempo antes de que los spammers se pongan al día. Como descargo de responsabilidad, no todos los bots son dañinos. De hecho, la mayoría de los bots en Reddit intentan ayudar a la comunidad moderando el contenido, encontrando enlaces duplicados, proporcionando resúmenes de artículos y más. Será importante distinguir los bots útiles de los dañinos.

¿Cómo podemos defendernos de la propaganda y el spam publicado por trolls y bots maliciosos? Podríamos investigar cuidadosamente los antecedentes de cada póster, pero no tenemos tiempo para hacer esto por cada comentario que leemos. La respuesta es automatizar la detección mediante big data y aprendizaje automático. ¡Luchemos fuego con fuego!

Identificación de bots y trolls en Reddit

Nos centraremos en Reddit porque los usuarios a menudo se quejan de los trolls en los hilos políticos. Es más fácil para los trolls operar gracias a la publicación anónima. Los operadores pueden crear docenas o cientos de cuentas para simular la participación de los usuarios, los me gusta y los comentarios. La investigación de Stanford ha demostrado que solo el 1% de las cuentas crean el 74% de los conflictos. En los últimos meses, hemos visto numerosos comentarios como este en el subreddit de worldnews:

“¿Alguien más notó los usuarios falsos en este hilo? Reconozco su idioma. Tiene rasgos muy específicos, como parecer tener una curiosidad genuina, pero respaldada por declaraciones absurdas. Pidiendo ‘evidencia clara’ y cuestionando la veracidad de las declaraciones (lo que normalmente sería algo bueno pero no bajo un disfraz). Me pregunto si podría ejecutarlo mediante el aprendizaje automático para identificar este tipo de usuarios / comentarios «. – koalefant en r / worldnews

1*O6NFnZ22xxbXvP84X Y26A

Hay varios recursos existentes que podemos aprovechar. Por ejemplo, el subreddit botwatch realiza un seguimiento de los bots en Reddit, ¡fiel a su homónimo! El Informe de transparencia de 2017 de Reddit también enumeró 944 cuentas sospechosas de ser trolls que trabajan para la Agencia de Investigación de Internet de Rusia.

Además, existen herramientas de software para analizar a los usuarios de Reddit. Por ejemplo, el analizador de usuarios reddit muy bien diseñado puede realizar análisis de sentimientos, trazar la controversia de los comentarios de los usuarios y más. Llevemos esto un paso más allá y creemos una herramienta que ponga el poder en manos de moderadores y usuarios.

En este artículo, el primero de una serie de dos partes, cubriremos cómo capturar datos de la API de Reddit para su análisis y cómo construir el tablero real. En la segunda parte, profundizaremos en cómo creamos el modelo de aprendizaje automático.

Creación de un tablero de bots y trolls sospechosos

En este tutorial, aprenderá a crear un panel para identificar bots y trolls en los comentarios de Reddit en tiempo real, con la ayuda del aprendizaje automático. Esta podría ser una herramienta útil para ayudar a los moderadores de subreddits políticos a identificar y eliminar contenido de bots y trolls. A medida que los usuarios envíen comentarios al subreddit r / policy, capturaremos los comentarios y los ejecutaremos a través de nuestro modelo de aprendizaje automático, luego informaremos los sospechosos en un panel para que los moderadores los revisen.

Aquí hay una captura de pantalla de nuestro panel de control. Pruébelo usted mismo en reddit-dashboard.herokuapp.com.

Para establecer sus expectativas, nuestro sistema está diseñado como una prueba de concepto. No está destinado a ser un sistema de producción y no es 100% exacto. Lo usaremos para ilustrar los pasos involucrados en la construcción de un sistema, con la esperanza de que los proveedores de plataformas puedan ofrecer herramientas oficiales como estas en el futuro.

Arquitectura del sistema

Debido a la gran cantidad de publicaciones y comentarios que se realizan en los sitios de redes sociales, es necesario utilizar una infraestructura escalable para procesarlos. Diseñaremos la arquitectura de nuestro sistema utilizando un ejemplo escrito por el equipo de Heroku en Gestión de flujos de eventos en tiempo real con Apache Kafka. Esta es una arquitectura impulsada por eventos que nos permitirá producir datos de la API de Reddit y enviarlos a Kafka. Kafka facilita el proceso de transmisión de datos y desacopla las diferentes partes de nuestro sistema. Al leer estos datos de Kafka, nuestro panel puede llamar a la API de aprendizaje automático y mostrar los resultados. También almacenaremos los datos en Redshift para un análisis histórico y los usaremos como datos de entrenamiento.

Recopilando datos de Reddit

Nuestro primer paso es descargar los comentarios del subreddit de política para su análisis. Reddit facilita el acceso a los comentarios como datos estructurados en formato JSON. Para obtener confirmaciones recientes para cualquier subreddit, simplemente solicite la siguiente URL:

https://www.reddit.com/r/${subreddit}/comments.json

Asimismo, podemos acceder a datos públicos sobre cada usuario, incluido su karma e historial de comentarios. Todo lo que tenemos que hacer es solicitar estos datos desde una URL que contenga el nombre de usuario, como se muestra a continuación.

https://www.reddit.com/user/${username}/about.json
https://www.reddit.com/user/${username}/comments.json

Para recopilar los datos, simplemente recorrimos cada comentario en el subreddit r / policy y luego cargamos los datos del usuario para cada comentarista. Puede usar cualquier biblioteca de solicitud HTTP que desee, pero usamos nuestros ejemplos y usaremos axios para Node.js. Además, combinaremos los datos de ambas llamadas en una única estructura de datos conveniente que incluye tanto la información del usuario como sus comentarios. Esto hará que sea más fácil almacenar y recuperar cada ejemplo más adelante. Esta funcionalidad se puede ver en el archivo profile-scraper.js y puede obtener más información sobre cómo ejecutarla en el archivo README.

Transmisión de eventos en tiempo real en Kafka

Ahora que los datos se han recopilado de Reddit, estamos listos para transmitir los comentarios a Kafka. Antes de conectarse al servidor de Kafka, deberá crear un tema en el panel de Heroku. Haga clic en Agregar tema y configure el nombre del tema con una sola partición.

Para conectarse al servidor Kafka como productor en Node.js, puede usar la biblioteca no-kafka con la información de conexión ya configurada en el clúster creado por Heroku:

const Kafka = require(‘no-kafka’)const url = process.env.KAFKA_URL
const cert = process.env.KAFKA_CLIENT_CERT
const key = process.env.KAFKA_CLIENT_CERT_KEY
fs.writeFileSync(‘./client.crt’, cert)
fs.writeFileSync(‘./client.key’, key)
const producer = new Kafka.Producer({
clientId: ‘reddit-comment-producer’,
connectionString: url.replace(/+ssl/g, ‘’),
ssl: {
certFile: ‘./client.crt’,
keyFile: ‘./client.key’
}
})

Una vez que esté conectado a Kafka, puede enviar mensajes al tema que creó anteriormente. Por conveniencia, decidimos secuenciar los mensajes JSON antes de enviarlos a Kafka en nuestra aplicación de transmisión en vivo:

producer.send({
topic: ‘northcanadian-72923.reddit-comments’,
partition: 0,
message: {
value: JSON.stringify(message)
}
})

En nuestro repositorio, el código de trabajo de muestra de transmisión en vivo se encuentra en el archivo kafka-stream.js.

Creación de un panel de moderador

Nuestro panel de control de muestra es una aplicación JavaScript basada en una versión anterior de la aplicación de demostración Kafka con pantalla de twitter de Heroku. Simplificamos la aplicación eliminando algunas dependencias y módulos, pero la arquitectura general permanece: una aplicación Express (del lado del servidor) para consumir y procesar el tema de Kafka, conectada a través de un socket web con un front-end D3 (del lado del cliente) para mostrar los mensajes (comentarios de Reddit) y su clasificación en tiempo real. Puede encontrar nuestro código fuente abierto en https://github.com/devspotlight/Reddit-Kafka-Consumers.

En la aplicación Node del lado del servidor, nos conectamos a Kafka como un consumidor simple, nos suscribimos al tema y transmitimos cada grupo de mensajes a nuestra función que carga la predicción:

new Consumer({
broadcast: (msgs) => {
predictBotOrTrolls(msgs)
},
interval: constants.INTERVAL,
topic: constants.KAFKA_TOPIC,
consumer: {
connectionString: process.env.KAFKA_URL,
ssl: {
cert: ‘./client.crt’,
key: ‘./client.key’
}
}
})

Luego usamos inquietud (Biblioteca de solicitudes HTTP / REST) ​​para enviar el esquema de datos unificados de esos mensajes a nuestra API de aprendizaje automático para realizar predicciones en tiempo real sobre si el autor es una persona, un bot o un troll (más sobre eso en la siguiente sección de este artículo).

Finalmente, se utiliza un servidor WebSocket en nuestro app.js para que el front-end pueda obtener todos los datos de visualización en tiempo real. Dado que los comentarios de subreddit se transmiten en tiempo real, se debe considerar y monitorear el escalado y el equilibrio de carga de cada aplicación.

Usamos la popular biblioteca de JavaScript D3 para actualizar el tablero de forma dinámica a medida que los mensajes de Kafka ingresan. Visualmente, hay una tabla especial vinculada al flujo de datos, y esta tabla se actualiza con los comentarios más recientes a medida que vienen (los más nuevos primero), también como el recuento de cada tipo de usuario detectado:

import * as d3 from ‘d3’class DataTable {

constructor(selector, maxSize) {
this.tbody = d3.select(selector)
this._maxSize = maxSize
this._rowData = []
}
update(data) {
data.forEach((msg) => {
this._rowData.push(msg)
}
if (this._rowData.length >= this._maxSize)
this._rowData.splice(0, this._rowData.length — this._maxSize)
// Bind data rows to target table
let rows = this.tbody.selectAll(‘tr’).data(this._rowData, (d) => d)

Consulte data-table.js para obtener más detalles. El código que se muestra arriba es solo un extracto.

Llamando a nuestra API de ML

Nuestra API de aprendizaje automático está diseñada para examinar funciones sobre la cuenta del autor de comentarios y el historial de comentarios reciente. Entrenamos nuestro modelo para examinar características como su «karma» de Reddit, la cantidad de comentarios publicados, si verificaron su cuenta y más. También le proporcionamos una colección de características que, según la hipótesis, serán útiles para clasificar a los usuarios. Pasamos la colección al modelo como un objeto JSON. Luego, el modelo devuelve una predicción para ese usuario que podemos mostrar en nuestro panel de control. Puede leer más sobre cómo construimos nuestro modelo ML en la segunda parte de esta serie.

A continuación, se muestran objetos de datos JSON de muestra (utilizando nuestro esquema de datos unificados) enviados como solicitudes a la API HTTP.

Ejemplo de Bot usuario:



  


            
                 
  


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

DVgdvxbLT2HDCX7drM38ST 1200 80

Las mejores tabletas económicas 2021: nuestra guía de las mejores opciones de presupuesto

Gestión de identidades y accesos (IAM) | Oracle