Jornalismo adulto: da Rússia ao Kremlin

Análise de publicações Lenta.ru ao longo de 18 anos (de setembro de 1999 a dezembro de 2017) usando python, sklearn, scipy, XGBoost, pymorphy2, nltk, gensim, MongoDB, Keras e TensorFlow.



O estudo utilizou dados do post " Analyze this - Lenta.ru " de ildarchegg . O autor gentilmente forneceu 3 gigabytes de artigos em um formato conveniente, e eu decidi que essa era uma ótima oportunidade para testar alguns métodos de processamento de texto. Ao mesmo tempo, se tiver sorte, aprenda algo novo sobre jornalismo russo, sociedade e em geral.


Conteúdo:



MongoDB para importar json em python


Infelizmente, json com textos acabou sendo um pouco quebrado, não é crítico para mim, mas o python se recusou a trabalhar com o arquivo. Portanto, primeiro importei-o para o MongoDB e, somente então, através do MongoClient da biblioteca pymongo, carreguei a matriz e a re-armazenei em csv em pedaços.


Dos comentários: 1. Eu tive que iniciar o banco de dados com o comando sudo service mongod start - há outras opções, mas elas não funcionaram; 2. mongoimport - um aplicativo separado, não é iniciado pelo console mongo, apenas pelo terminal.


As lacunas de dados são distribuídas igualmente ao longo dos anos. Não pretendo usar o período inferior a um ano, espero que isso não afete a exatidão das conclusões.



Limpando e normalizando o texto


Antes de analisar diretamente a matriz, é necessário trazê-la para o formato padrão: remova caracteres especiais, converta o texto em letras minúsculas (os métodos de string do pandas fizeram um ótimo trabalho), remova palavras de parada (stopwords.words ('russian') do nltk.corpus), retorne as palavras à sua forma normal usando lematização (pymorphy2.MorphAnalyzer).


Houve algumas falhas, por exemplo, Dmitry Peskov se transformou em "Dmitry" e "areia", mas no geral fiquei satisfeito com o resultado.


Nuvem de tags


Como semente, vamos ver o que as publicações estão na forma mais geral. Exibiremos as 50 palavras mais frequentes usadas pelos jornalistas da Lenta de 1999 a 2017 na forma de uma nuvem de tags.



Ria Novosti (a fonte mais popular), bilhões de dólares e milhões de dólares (tópicos financeiros), presente (circulação de fala comum a todos os sites de notícias), órgão policial e processo criminal (notícias criminais) ), "Primeiro Ministro" e "Vladimir Putin" (política) - o estilo e os temas esperados para o portal de notícias.


Modelagem Temática LDA


Calculamos os tópicos mais populares para cada ano usando o LDA da gensim. O LDA (modelagem temática usando o método de posicionamento latente Dirichlet) revela automaticamente tópicos ocultos (um conjunto de palavras que ocorrem juntas e com mais frequência) pelas frequências de palavras observadas nos artigos.


A pedra angular do jornalismo doméstico era a Rússia, Putin, Estados Unidos.


Em alguns anos, esse tópico foi diluído com a guerra da Chechênia (1999 a 2000), 11 de setembro - em 2001, e Iraque (2002 - 2004). De 2008 a 2009, a economia ficou em primeiro lugar: juros, empresa, dólar, rublo, bilhões, milhões. Em 2011, eles costumavam escrever sobre Gaddafi.


De 2014 a 2017 os anos da Ucrânia começaram e continuam na Rússia. O pico ocorreu em 2015, então a tendência começou a declinar, mas ainda continua a permanecer em um nível alto.



É interessante, é claro, mas não há nada que eu não saiba ou adivinhe.


Vamos mudar um pouco a abordagem - selecione os principais tópicos o tempo todo e veja como a proporção deles mudou de ano para ano, ou seja, estudaremos a evolução dos tópicos.


A opção mais interpretada foi a Top 5:


  1. Crime (masculino, policial, ocorrer, deter, policial);
  2. Política (Rússia, Ucrânia, Presidente, EUA, Chefe);
  3. Cultura (spinner, purulento, instagram, divagações - sim, essa é a nossa cultura, embora especificamente esse tópico tenha se mostrado bastante misto);
  4. Esporte (partida, equipe, jogo, clube, atleta, campeonato);
  5. Ciência (cientista, espaço, satélite, planeta, célula).

A seguir, analisamos cada artigo e veremos como ele se relaciona com um tópico específico. Como resultado, todos os materiais serão divididos em cinco grupos.


A política acabou sendo a mais popular - menos de 80% de todas as publicações. No entanto, o pico de popularidade dos materiais políticos foi ultrapassado em 2014, agora sua participação está diminuindo e a contribuição para a agenda de informações do Crime e Esportes está crescendo.



Verificaremos a adequação dos modelos temáticos utilizando as subposições indicadas pelos editores. As principais subcategorias foram identificadas mais ou menos corretamente desde 2013.



Nenhuma contradição específica foi notada: a política estagnou em 2017, o futebol e os incidentes estão crescendo, a Ucrânia ainda está em tendência, com um pico em 2015.


Previsão de popularidade: XGBClassifier, LogisticRegression, Embedding & LSTM


Vamos tentar entender se é possível prever a popularidade de um artigo na fita a partir do texto e do que essa popularidade geralmente depende. Como variável alvo, usei o número de republicações do Facebook para 2017.


3 mil artigos para 2017 não tiveram republicações no Fb - receberam a classe “impopular”, 3 mil materiais com o maior número de republicações receberam o rótulo “mais popular”.


O texto (6 mil publicações para 2017) foi dividido em unogramas e bigrams (palavras simbólicas, frases simples e de duas palavras) e foi construída uma matriz onde as colunas são símbolos, linhas são artigos e, na interseção, é relativo frequência de ocorrência de palavras nos artigos. Funções usadas do sklearn - CountVectorizer e TfidfTransformer.


Os dados preparados foram inseridos no XGBClassifier (um classificador baseado no aumento de gradiente da biblioteca xgboost), que após 13 minutos de enumeração de hiperparâmetros (GridSearchCV com cv = 3) deu uma precisão de 76% no teste.



Depois, usei a regressão logística usual (sklearn.linear_model.LogisticRegression) e, após 17 segundos, obtive uma precisão de 81%.


Mais uma vez, estou convencido de que os métodos lineares são mais adequados para a classificação de textos, desde que os dados sejam cuidadosamente preparados.


Como homenagem à moda, testei um pouco as redes neurais. Ele traduziu as palavras em números usando one_hot da keras, trouxe todos os artigos para o mesmo comprimento (função pad_sequences da keras) e aplicou o LSTM (rede neural convolucional, usando o back-end do TensorFlow) através da camada Embedding (para reduzir a dimensão e acelerar o tempo de processamento).


A rede funcionou em 2 minutos e mostrou precisão no teste de 70%. Não é o limite, mas, neste caso, não faz sentido incomodar muito.


Em geral, todos os métodos produziram precisão relativamente baixa. Como mostra a experiência, os algoritmos de classificação funcionam bem com uma variedade de estilos - em materiais protegidos por direitos autorais, em outras palavras. Existem tais materiais no Lenta.ru, mas há muito poucos deles - menos de 2%.



A matriz principal é escrita usando vocabulário neutro de notícias. E a popularidade das notícias é determinada não pelo próprio texto e nem pelo tópico em si, mas por pertencerem a uma tendência de informação ascendente.


Por exemplo, alguns artigos populares cobrem eventos na Ucrânia, os menos populares quase não se referem a esse tópico.



Explorando objetos usando o Word2Vec


Concluindo, eu queria realizar uma análise sentimental - para entender como os jornalistas se relacionam com os objetos mais populares mencionados em seus artigos, se suas atitudes mudam com o tempo.


Mas não tenho os dados marcados e é improvável que uma pesquisa no tesauro semântico funcione corretamente, pois o vocabulário das notícias é bastante neutro, mesquinho com emoções. Portanto, decidi focar no contexto em que os objetos são mencionados.


Tomei a Ucrânia (2015 vs 2017) e Putin (2000 vs 2017) como teste. Selecionei os artigos em que são mencionados, traduzi o texto em um espaço vetorial multidimensional (Word2Vec de gensim.models) e projetei em duas dimensões o método Main Components.


Depois de renderizarem as fotos, elas se tornaram épicas, não menos que uma tapeçaria em tamanho de Bayeux. Recortei os clusters necessários para simplificar a percepção, como pude, desculpe pelos "chacais".




O que eu notei.


Putin do modelo de 2000 sempre apareceu no contexto da Rússia e abordou pessoalmente. Em 2017, o presidente da Federação Russa se transformou em um líder (o que quer que isso signifique) e se distanciou do país, agora, a julgar pelo contexto, ele é um representante do Kremlin que se comunica com o mundo através de seu secretário de imprensa.


Ucrânia-2015 na mídia russa - guerra, batalhas, explosões; é mencionado despersonalizado (Kiev declarou, Kiev começou). A Ucrânia-2017 aparece principalmente no contexto de negociações entre funcionários, e essas pessoas têm nomes específicos.


...


Você pode interpretar as informações recebidas por algum tempo, mas, como penso, este é um recurso offtopic desse recurso. Quem quiser pode ver por si mesmo. Anexo o código e os dados.


Link de script


Data Link

Source: https://habr.com/ru/post/pt429270/


All Articles