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

Anúncios