Analise Semântica em postagens e comentários

Click aqui para baixar a base de dados do projeto.
Ola, neste post vamos tratar um assunto bem interessante, tive ideia de criar esta aplicação quando vi uma reportagem onde o FBI consegui evitar um assassinato devido a uma postagem feita pelo agressor em uma rede de relacionamento.

77% dos dados que circulam na web ou são textos, ou podem ser transformados em texto, se construirmos uma aplicação capaz de compreender de que se trata um texto, temos uma aplicação que pode gerar informações muito importantes, prevenção de ataques terroristas, qual tipo de postagem gera mais engajamentos, espionar concorrentes e inúmeras outras funções.
 A analise semântica de textos e uma ferramenta que deve esta no canivete de todo cientista de dados.
neste link temos uma base de dados com todos os posts feitos pela Universidade Estacio de Sá no
período de 1 ano, usei a ferramenta netvizz, a técnica de extração pode ser vista neste post, temos uma base com 646 posts.

Usaremos o R studio para nosso trabalho, iniciamos instalado e carregando a bibliotecas (udpipe)
.
com o comando da linha 10 , carregamos toda a planilha baixada na variável comentário, conseguimos ver com o metodo dim() sua dimensão no console, 646 linhas e 2 colunas, a função colnames() apresenta o nome das colunas, ID, com o identificador de cada comentário e File que é o proprio comentário..

Todo o conteúdo da variável COMENTARIO e carregado em formato char, para as manipulações que teremos mais a frente precisamos que a coluna ID esteja no formato inteiro, e a variavel FILE no formato charactere, as duas linhas de comando abaixo deixam o dataset redondinho para a extração de palavras e analise semantica.

Cada língua possui um modelo que podemos carrega, para analises em português você pode usar esse modelo aqui, usamos a função udpipe_load_model() para carregar o modelo dentro da aplicação como mostro abaixo.

Ja temos a variável COMENTARIO, com os 646 comentários já tratados para a analise, e a variável modelo que vai fazer a analise na linguagem que os comentários foram escritos, vamos agora a magica
.
Linha 23- usaremos a função udpipe_annotate() para literalmente separar cada palavra de cada comentário, chamamos cada palavra de Token, o primeiro argumento da função e o modelo carregado com a linguagem desejada, o segundo argumento e a coluna de comentários e o terceiro argumento e o ID de cada comentário
linha 24- organizamos tudo em uma planilha para poder visualizar..

Uso novamente a função Dim() para ver o tamanho do novo dataset criado, temos então uma planilha de 40 mil linhas onde cada linha corresponde a analise de cada palavra dos 646 comentários.

vamos agora entender um pouco este novo dataset, uso a função fix() para abrir a planilha no R
'
como temos 14 colunas, vou separar para poder explicar  as principais.
Perceba que da linha 1 até a 15 estamos falando do mesmo comentário, veja na coluna 5 Token que cada linha corresponde a uma palavra do comentário

Arrastando a planilha para frente temos as seguintes colunas:
Lemma, onde trazemos a palavra sem sua flexão, veja na linha 28.952 que o token Fiquem, vem da palavra ficar, apos o lemma temos o upos que e exatamente o que quero, a analise semântica, Lembra que a tia da 6ª serie falava que toda oração gira em torno do substantivo e do verbo, são exatamente estes 2 caras que  indicam o sentido de uma frase, vou descartar todas as colunas, permanecento apenas com a Lemma, palavras sem sua flexão e upos que e a classe gramatical de cada palavra, veja que algumas linhas da coluna lemma não foram clasificadas, isso e normal, de 20 a 30% do texto o algoritimo não entende, existe formas de resolver isso mas fica para uma proxima oportunidade.
Principais Upos
PROPN Nome Próprio
VERB verbo
ADP Adposição
NOUN Substantivo
PUNCT Pontuação
ADJ Adjetivo
CCONJ Conjunções
AUX Verbo
PRON Pronomes
 NUM Números
ADV Advérbios

Vamos filtrar todas as linhas com os substantivos e criar um novo Dataset

salvo o dataset com os substantivos para proseguir

Daqui pra frente existem vários caminhos que podemos seguir, no caso do FBI, eles mandam  a aplicação avisar caso determinada lista de palavras apareça como resultado, no nosso caso vamos apenas gerar uma nuvem de substantivos, vou simplesmente abrir o arquivo gerado no excel, copiar a coluna lemma, salvar tudo no bloco de notas e gerar uma nuvem de palavras usando esta ferramenta


Temos ai, os principais substantivos em 1 ano de postagem da Universidade Estacio de Sá