Prevendo Trolls Russos Usando o Reddit Comments

Usando Aprendizado de Máquina para Prever Trolls Russos

Brandon Punturo Blocked Unblock Seguir Seguindo 8 de janeiro

Código para os Interessados

Introdução

Logotipo do Reddit. Fonte: Reddit.com

A Rússia mantém há muito tempo um relacionamento contencioso com os países do oeste. O presidente russo, Vladimir Putin, é conhecido há muito tempo como um nacionalista russo que fará qualquer coisa para promover os interesses de seu país ( Marten, 2018 ). Isso levou a muitos países do Ocidente (Estados Unidos, Inglaterra, etc.) a suspeitarem constantemente de seus motivos. Nos últimos anos, esse relacionamento azedou devido a acusações de interferência da Rússia nas eleições presidenciais de 2016 nos EUA.

Tem havido muita discussão e indignação pública relacionada à influência russa em gigantes da mídia social, como Facebook e Twitter. As fazendas de trolls russos investem muito na criação de contas falsas e páginas do Facebook para influenciar os eleitores americanos (BBC, 2018).

Embora este problema tenha sido identificado e uma variedade de empresas tenha tomado medidas para fechar milhares de contas trolls, isso não significa que o problema tenha terminado. Há, no entanto, o medo de que a Rússia tente usar as mídias sociais para outros fins desonestos ( Washington Post ).

Bandeira Russa: Fonte- wikipedia.com

Embora o Facebook e o Twitter tenham sido destacados pela mídia como os principais locais de influência russa, o Reddit representa outra empresa que teve que lidar com os trolls russos. Em 2017, o Reddit divulgou uma lista de mais de 900 contas suspeitas de serem controladas por fazendas de troll russas ( Thomsen 2018 ). Embora eles pudessem rastrear esses usuários, isso não significa que os russos desistiram de usar o Reddit como plataforma para influenciar pessoas.

O objetivo deste projeto é desenvolver um algoritmo que possa identificar possíveis trolls russos usando a atividade de comentários de um usuário.

Agora, existem muitos grupos que acho que estariam interessados em usar o meu trabalho. Obviamente, o Reddit estaria interessado; eles querem ter certeza de que sua comunidade está livre de trolls. Reddit usuários e cidadãos americanos também teriam uma participação. Em última análise, o governo dos EUA pode expressar um interesse também. O governo está com muita raiva porque os russos interferiram na eleição.

Definição e dados do problema

Propaganda russa não é algo que queremos nas plataformas americanas. O problema que gostaria de resolver envolve impedir que essas contas se infiltrem no Reddit. Idealmente, eu gostaria de produzir um classificador complexo que combina várias técnicas de mineração de dados para prever se uma pessoa pode ou não ser classificada como propagandista russa.

Eu fiz uso de dois conjuntos de dados: um que contém a atividade de comentário de trolls russos e o outro contém comentários de usuários aleatórios do Reddit. Eu obtive o conjunto de dados de troll russo do data.world. Eu obtive o outro conjunto de dados (Non-trolls) do Google Big Query . Eu amostrei aleatoriamente vários milhares de comentários de 2015 a 2018.

Snippet of Russian Troll Data

Agora, em termos de como os dados realmente se parecem, os dois conjuntos de dados contêm cerca de 7 mil linhas de comentários. Além dos dados do comentário, cada linha inclui a data de publicação, o karma obtido, a controvérsia da postagem e o SubReddit publicado. Há uma infinidade de recursos distintos nesses conjuntos de dados. No entanto, existem apenas vários recursos proeminentes. Estes incluem tempo postado, corpo (texto do comentário), Subreddit postado para, a polêmica de um post, o post respondeu e número de up votos que o post recebeu. Nos artigos que li, havia uma fixação no tempo. Por exemplo, "Promotores disseram que os agentes russos trabalhariam em turnos para garantir que os tempos de afixação correspondam ao fuso horário da área em que eles pretendiam se basear". Decidi me concentrar no Subreddit publicado porque papel viu que as pessoas no Reddit tendem a comentar e interagir com posts populares ( Glenski 2017 ). Além disso, senti que as votações e controvérsias de um cargo eram igualmente importantes. Os trolls russos receberam muita atenção negativa ou descobriram uma maneira de atrair muitos votos positivos? No entanto, entre todos os componentes, senti que o texto era o mais importante. Os trolls russos postaram com gramática ruim ou palavras inglesas incomuns? Ou, para declarar de maneira mais geral, os russos estavam escrevendo de uma maneira que era diferente dos usuários normais do Reddit?

Descrição dos dados

Metodologia

Depois de passar as primeiras semanas realizando análises exploratórias de dados sobre a variedade de colunas em que tenho interesse, comecei o processo de engenharia de recursos. Na minha opinião, a engenharia de recursos é a parte mais difícil do aprendizado de máquina. Não importa o estado da arte do seu algoritmo, sem bons dados, o resultado final não será o ideal. No meu caso, eu tive que usar a criatividade e a lógica para criar os recursos que eu achava que diferenciariam os trolls dos usuários normais do Reddit. É totalmente por isso que passei tanto tempo analisando dados exploratórios. Ao obter uma visualização dos dados, posso ver como os recursos diferem dos dois conjuntos de dados.

Flesch-Kincaid Formula- Fonte: https://www.researchgate.net/figure/10-FLESCH-KINCAID-GRADE-LEVEL-SCORE-FORMULA_tbl5_237768392

Essencialmente, meu projeto era uma tarefa de classificação de texto. Como resultado, a maioria da minha engenharia de recursos girou em torno do processamento de linguagem natural. A maioria das tarefas foi concluída usando a ajuda do SpaCy (uma biblioteca de PNL em Python). Um recurso que criei foi o número de Entidades nomeadas em todos os comentários. Reconhecimento de Entidade Nomeada (NER) “rotula sequências de palavras em um texto que são nomes de coisas, como nomes de pessoas e empresas, ou nomes de genes e proteínas.” ( Stanford ) Outra característica que utilizei foi o Flesch-Kincaid Score. Flesch-Kincaid é essencialmente uma maneira de quantificar a legibilidade de uma sentença. Também procurei identificar o sentimento de cada comentário { Textstat }. O Sentiment Score é essencialmente uma medida de como uma sentença é positiva ou negativa (variando de negativa para uma). Para medir o sentimento, usei o TextBlob, uma biblioteca de processamento de texto em Python { Textblob} . A pontuação lexical é essencialmente um nome de recurso que eu criei. Fazendo uso da biblioteca Empath, eu criei vários tópicos usando “seed words”. Essencialmente, essa biblioteca usa o Word Embeddings treinados em um grande corpus de palavras para encontrar palavras relacionadas entre si ( Fast 2016 ). A semelhança entre as palavras é medida pela similaridade dos cossenos. Para o propósito deste projeto, usei palavras relacionadas à Rússia e Trump (todas as categorias estão localizadas na tabela abaixo). Essa biblioteca então encontrou palavras relacionadas a essas categorias. Então, para cada comentário, usei minhas categorias para calcular uma pontuação de como essa frase se relacionava com as categorias que eu havia criado. Além desses métodos, usei recursos de texto mais simples, como pontuação e contagem de palavras { Empath }.

Embora a maioria dos meus recursos fosse relacionada a texto, fiz uso de outros recursos não relacionados a texto. Eu tinha inicialmente pesquisado SubReddits (em quais comunidades os usuários estavam postando?) Para ver se havia diferenças significativas. No entanto, notei que dentre os vinte Sub-editados mais populares, dezenove dos vinte eram compartilhados por trolls e não-trolls. Eu também olhei para a controvérsia de um post. Notei que não havia uma diferença considerável entre os dois grupos. No entanto, detectei uma diferença nos tempos em que as postagens foram enviadas ao Reddit. Usando um teste de Kruskal-Wallis, notei uma diferença estatisticamente significativa. A postagem final que decidi incluir foi “data relevante”. Esse foi outro post relacionado ao tempo. A PBS compilou uma planilha com todos os eventos relevantes da linha do tempo Rússia-Trump. Se um comentário foi postado em uma data presente nesta planilha, eu marcaria com um.

Avaliação e Resultados

Primeiro eu calculei uma linha de base. Uma linha de base é um cálculo simples que reflete o que você esperaria que o modelo previsse. No caso desta tarefa, uma vez que eu tinha exatamente metade dos meus comentários dos Trolls russos e a outra metade dos usuários normais do Reddit, eu esperaria que um algoritmo preditivo teria, no pior dos casos, uma taxa de precisão de 50% (juntamente com 50% para outros métricas de classificação como recall). Depois de combinar os dois conjuntos de dados, eu os rotulei de "troll" ou "não-troll". Depois, aleatoriamente embaralhei as linhas nesse quadro de dados combinado. Depois disso, criei uma lista em que a primeira metade da lista era rotulada como "Troll" e a segunda metade como "non-troll". Comparei os rótulos dessa lista e a lista embaralhada aleatoriamente do DataFrame e verifiquei o que porcentagem de rótulos alinhados. Descobri que atingi uma precisão de 50%. Eu encontrei pontuações semelhantes para as outras métricas de avaliação que tentei.

Floresta aleatória não otimizada

Depois de calcular uma linha de base, decidi compará-la com um modelo da Random Forest. A Random Forest é um poderoso método de aprendizado conjunto. Primeiro, adaptei uma floresta aleatória com os parâmetros definidos presentes na versão do modelo do ScikitLearn. Embora os resultados fossem sólidos, eu sabia que eles poderiam ser melhorados. Eu usei uma pesquisa de grade aleatória para encontrar os parâmetros mais ideais. Dado um conjunto de parâmetros com uma distribuição aleatória de valores possíveis para esse parâmetro, uma pesquisa de grade aleatória ajusta aleatoriamente uma certa quantidade de modelos. É usado para otimizar parâmetros. Bergstra et al. Descobriu que as pesquisas aleatórias são mais eficientes do que as pesquisas de grade normais. Os relatórios de classificação da floresta aleatória normal e do modelo otimizado estão presentes nas imagens à direita.

Parâmetros Otimizados Random ForestOptimized

Os resultados mostram uma grande melhoria em relação à linha de base. No entanto, esses resultados ainda não são grandes. Uma parte particularmente notável desses resultados é o gráfico de importância das características. Entre todas as variáveis que usei, o tempo postado foi de longe o mais importante. Flesch-Kincaid e contagem de pontuação foram distantemente a segunda e terceira variáveis mais importantes.

Desempenho para todos os três modelos

Discussão

Os resultados que encontrei através deste projeto foram muito reveladores. Como alguém relativamente novato no mundo da mineração de dados, aprendizado de máquina e processamento de linguagem natural, achei que esses resultados foram muito promissores. Embora um modelo com menos de 75% de precisão claramente não seja o nível de produção (por exemplo, o Reddit não deve usá-lo), é uma grande melhoria em relação à minha pontuação de linha de base. As pontuações de recordação e precisão foram bastante semelhantes às minhas pontuações de exatidão, indicando que esse modelo é bastante consistente.

Exemplo de Saída da Árvore de Decisão

O nível de precisão razoavelmente alto indica que existem algumas diferenças subjacentes na maneira como os trolls russos usam o Reddit. Especificamente, parece haver uma diferença bastante significativa nos tempos de publicação. Este é um achado estranho, especialmente desde que a BBC descobriu que “os operários russos trabalhariam em turnos para garantir que seus tempos de postagem correspondessem ao fuso horário da área que eles pretendiam se basear.” Os outros dois fatores significativos, contagem de pontuação e Flesch- Kincaid (complexidade de sentenças), indica que esses agentes russos podem estar escrevendo em estilos diferentes em comparação com usuários normais do Reddit. Como o New York Times apontou, os trolls russos usavam ingleses estranhos no Facebook, essa tendência parece estar se mantendo no Reddit. Uma razão pela qual eu suponho que os trolls russos têm uma contagem de pontuação bastante diferente e os escores de Flesch-Kincaid é que eles não percebem que a maioria das pessoas usa o Reddit como um meio informal. Eles estão tentando parecer como se fossem usuários normais do Reddit.

Agora, embora alguns dos meus recursos parecessem ser bastante significativos, outros não eram. Fiquei um pouco decepcionado porque “data relevante” não era muito importante. Eu diria que isso se deve ao fato de haver muitas datas presentes no conjunto de dados. Talvez se o conjunto de dados fosse ajustado aos 25 eventos mais importantes, esse recurso se tornaria mais proeminente. O Lexical Score também pareceu ser irrelevante para os propósitos do meu modelo. Talvez eu tenha incluído muitos tópicos?

Recursos mais importantes

Conclusão

A Russian Interference procura apresentar um problema que persistirá em assombrar os EUA, a menos que as plataformas tomem medidas significativas para acabar com os trolls. Facebook e Twitter já deram passos na direção correta. Mas o Reddit, um site com menos de 100 funcionários, pode não possuir os recursos para combater esses trolls. No entanto, estou esperançoso de que os passos que tomei neste projeto provarão ser pelo menos um pouco úteis para identificar os Trolls russos na plataforma. Embora o comportamento humano seja reconhecidamente desafiador para modelar, parece que pelo menos alguns dos recursos que adicionei mostraram diferenças significativas entre trolls e não-trolls.

Como já referi anteriormente, este projeto foi um excelente ponto de partida. No entanto, há absolutamente espaço para melhorias. Eu acho que logicamente existem maneiras diferentes de abordar o problema de detecção de trolls, especialmente no Reddit. Eu olhei exclusivamente para a atividade de comentários, quando claramente as submissões podem ser tão úteis para encontrar trolls. Complementar, eu não estava examinando a atividade dos trolls. Alternativamente, eu estava focando nos comentários como se fossem todos independentes. Os padrões de postagem / comentário de um usuário individual podem ser úteis para fins de detecção de trolls. Pelo menos no caso do Twitter, foi demonstrado que esta abordagem alcançou resultados muito bons (Fornacciari 2018).