Prévia do material em texto
Nome: Gabriel Miller Silone Como construir uma rede neural recorrente para detectar notícias falsas Em um mundo que está se tornando cada vez mais conectado, é mais fácil espalhar mentiras. Acontece que, com um conjunto de dados que consiste em artigos de notícias classificados como confiáveis ou não, é possível detectar notícias falsas. Neste tutorial, vamos construir uma rede neural com convoluções e células LSTM que oferece um desempenho top 5 no desafio Kaggle fake news. O que estamos tentando detectar? Como você pode ver no mapa acima, notícias falsas é um problema em todo o mundo. A definição de notícias falsas na China provavelmente será muito diferente da definição no Oriente Médio ou nos EUA. Os dados determinam qual definição de notícia falsa é detectada. O conjunto de dados que estamos usando neste exemplo é do Kaggle, um site que hospeda competições de aprendizado de máquina. O conjunto de dados consiste em artigos de notícias com um rótulo confiável ou não confiável. Se uma notícia não for confiável, será considerada uma notícia falsa. Um exemplo de um artigo de notícias falso do conjunto de dados: As 5 principais teorias da conspiração que foram comprovadas como verdadeiras porque Donald Trump concorreu à presidência todo ano eleitoral, acusações de favoritismo na mídia vão e vêm, isso é tão antigo quanto a própria República. Mas este ano, os teóricos da conspiração alegaram que o MSM não estava apenas no bolso de Crooked Hillary, mas ativamente trabalhando para garantir sua eleição com pesquisas falsas, histórias falsas e concluio desenfreado e ilegal com o candidato. Obrigado, WikiLeaks (…) Eu sei onde estão os e-mails excluídos de Hillary Clintons e como obtê-los legalmente. E um exemplo de um artigo confiável do conjunto de dados: O treinamento de primavera da Major League Baseball está em andamento novamente, e a perspectiva de shortstop do New York Mets, Luis Guillorme, já está causando uma boa impressão no clube da grande liga. Quinta- feira, o shortstop do Miami Marlins, Adeiny Hechavarria, balançou e perdeu o taco. O morcego voou em direção ao abrigo do Mets e os jogadores se esforçaram para sair do caminho. Guillorme, no entanto, não saiu de seu lugar e, em vez disso, pegou o morcego que voou por sua cabeça. Como funciona o algoritmo Texto vem em vários formatos. O texto dos tweets do Twitter pode ser muito confuso. Artigos de notícias podem usar muitas linhas em branco. O primeiro passo em cada tarefa de Processamento de Linguagem Natural é limpar o texto, removendo linhas em branco e pontuação desnecessária. A próxima etapa é transformar as palavras em números, porque os computadores não podem ler palavras. Existem várias maneiras de fazer isso. A maneira mais fácil é atribuir números para cada palavra única e, em seguida, usar isso como entrada para um modelo. Portanto, a frase “No verão passado, o cantor fez uma turnê pela costa oeste dos EUA” se tornaria [1 2 3 4 5 3 6 7 3 8]. Como você pode ver, cada palavra única recebe um novo número. Outro método mais comum é usar embeddings de palavras pré-treinadas. Em vez de converter todas as palavras em um número, as palavras são convertidas em uma representação de tensor. Portanto, quando uma incorporação 4-dimensional é usada, cada palavra (única) é convertida em uma combinação de quatro números. A incorporação de palavras funciona tão bem porque a semântica das palavras é capturada, as palavras com o mesmo significado têm valores tensores semelhantes e as diferenças com outros grupos de palavras também são semelhantes. O exemplo abaixo mostra isso. Como você pode ver, todas as palavras têm valores Y maiores quando a palavra é feminina. Depois que as palavras são convertidas em embeddings de palavras, as palavras são alimentadas em uma rede neural. Essa rede neural consiste em várias camadas. A primeira camada é uma camada convolucional. Uma convolução é um filtro que pode extrair recursos dos dados. Na detecção de imagens, por exemplo, convoluções podem ser usadas para detectar bordas ou formas. No Natural Language Processing, as convoluções também podem melhorar o desempenho. O exemplo abaixo mostra um filtro que extrai relação entre duas palavras que possuem uma palavra no meio. Em cada etapa, o filtro é multiplicado pelos valores de incorporação da palavra. Os valores de filtro de 1 vezes os valores de incorporação de palavras resultam em valores de incorporação de palavras, enquanto os valores de filtro de 0 resultam em 0. A próxima camada é uma camada de pooling máximo. Essa camada itera sobre os tensores e assume o valor mais alto. Desta forma, o espaço do recurso é compactado. Esta etapa garante que os recursos importantes sejam mantidos, enquanto o espaço vazio é descartado. A próxima camada é a Long Short Term Memory (LSTM). Uma unidade LSTM comum é composta de uma célula, uma porta de entrada, uma porta de saída e uma porta de esquecimento. A célula se lembra dos valores em intervalos de tempo arbitrários e as três portas regulam o fluxo de informações para dentro e para fora da célula. Mais sobre as camadas LSTM podem ser encontradas aqui. A última camada antes que a previsão seja feita é uma camada totalmente conectada. Esta é uma camada de rede neural regular onde todos os nós estão conectados uns aos outros. A arquitetura geral da rede é semelhante a esta: O código O código está programado no Google Colab. Os dados podem ser baixados aqui: https://www.kaggle.com/c/fake-news/data O ambiente Google Colab pode ser encontrado aqui: https://github.com/matdekoning/FakeNewsClassifier/blob/master/FakeNe wsClassifier.ipynb Este ambiente do Google Colab irá guiá-lo através da codificação da rede neural convolucional recorrente. No código, primeiro as bibliotecas necessárias são importadas (ou seja, Keras e Tensorflow). O código verifica se o Tensorflow 2.0 está instalado e será atualizado se uma versão mais antiga estiver instalada. Reinicie a página da Web se você atualizou o Tensorflow. Na segunda célula, você pode montar seu ambiente do Google Drive. Esta é uma maneira fácil de conectar seu conjunto de dados. Faça o upload do conjunto de dados para sua pasta principal no Google Drive, monte o Google Drive e, na célula 3, você pode importar o conjunto de dados no ambiente Google Colab. https://www.kaggle.com/c/fake-news/data https://github.com/matdekoning/FakeNewsClassifier/blob/master/FakeNewsClassifier.ipynb https://github.com/matdekoning/FakeNewsClassifier/blob/master/FakeNewsClassifier.ipynb Resultados Os resultados são mostrados no gráfico a seguir: Após 5 minutos de treinamento, o modelo alcançou uma precisão de validação de 0,9041, o que significa que mais de 9 em cada 10 notícias estão corretamente classificadas como confiáveis ou não. Depois de prever no conjunto de dados de envio do Kaggle, esse algoritmo atingiu uma pontuação de 0,96. Esta pontuação é um dos 5 melhores desempenhos. Acontece que essa arquitetura funciona bem para detecção de notícias falsas. A vantagem das convoluções com camadas de pool é que o tempo de desempenho é muito mais curto, enquanto o desempenho permanece o mesmo. Esta arquitetura também é útil em outras tarefas de Classificação de Linguagem Natural. O modelo oferece bons resultados na classificação de comentários tóxicos, bem como na análise de sentimento.