Faremos um modelo de análise de sentimento em textos de revisões (reviews) de filmes. Nosso objetivo é classificar a opinião da pessoa que assistiu o filme como “opinião positiva” ou “opinião negativa”. Já ouviu falar de “bag of words”?

Antes de continuar, tenho que dizer que o código que estou compartilhando não é de minha autoria, mas sim de Jason Brownlee. Estou apenas contribuindo com algumas explicações adicionais. Baixe os dados que utilizaremos neste link.

Existem diferentes estratégias para prever sentimento em textos. Vamos usar aqui um modelo simples de rede neural (Multilayer Perceptron Model). Criaremos uma rede simples usando poucas camadas (layers) completamente conectadas.

Porém, acredito que a o mais importante neste tipo de modelo não é a configuração da rede neural em si, mas sim a preparação dos seus dados. Criei a figura abaixo para exemplificar uma técnica bem simples e muito comum neste tipo de modelo, conhecida como bag of words.

Nesta técnica, criamos uma matriz que possui a representação de cada texto por meio de scores. Estes scores serão utilizados para treinar o modelo e futuramente fazer as predições em dados novos. Veja a seguir um exemplo simples de tratamento de dados com um único texto (para simplificar a explicação).

bag_of_words

Como podemos observar, o primeiro passo se resume à limpeza dos dados e criação dos tokens. Este processo de criação dos tokens também é conhecido como tokenização.

Uma vez que o processo de tokenização é finalizado, podemos criar o nosso vocabulário. Este será responsável por armazenar todas as palavras conhecidas. O vocabulário é usado para criar a matriz com os scores de cada texto, já que apenas as palavras existentes no vocabulário serão incluídas na matriz.

Note também que existem várias formas para criar os scores. Na figura acima foram citadas algumas delas como “binary”, “frequence” e “count”.

Os nomes já são bem sugestivos. “binary” marca 0 (ausência da palavra no texto) ou 1 (presença da palavra no texto) para cada token do texto; “frequency” marca a frequência da cada palavra dentro do texto; e “count” marca a quantidade de ocorrências da palavra dentro do texto.

Feito isso você está pronto para seguir com o desenvolvimento do seu modelo e fazer as suas predições! Quer saber como? Basta seguir este exemplo completo e explicado em Python.

Grande abraço!
Weslley Moura

Sobre o Autor: Weslley Moura

Mestre em engenharia da computação, professor de cursos relacionados a análise de dados e co-fundador da empresa Pepsoft Sistemas. Profissional apaixonado pela ciência existente nos dados e suas aplicações práticas. Nos últimos anos vem dedicando seu tempo a projetos de aprendizagem de máquina e mantém seu site pessoal com dicas e aulas relacionadas ao tema em Hacking Analytics.

3 comentários

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s