Como preparar dados de resenhas de filmes para análise de sentimento (classificação de texto)

Como preparar dados de resenhas de filmes para análise de sentimento (classificação de texto)

A preparação de dados de texto é diferente para cada problema.

A preparação começa com etapas simples, como carregar dados, mas rapidamente se torna difícil com tarefas de limpeza que são muito específicas para os dados com os quais você está trabalhando. Você precisa de ajuda sobre por onde começar e em que ordem trabalhar através das etapas, desde dados brutos até dados prontos para modelagem.

Neste tutorial, você descobrirá como preparar dados de texto de resenhas de filmes para análise de sentimento, passo a passo.

Depois de concluir este tutorial, você saberá:

  • Como carregar dados de texto e limpá-los para remover pontuação e outras não palavras.
  • Como desenvolver um vocabulário, adaptá-lo e salvá-lo em um arquivo.
  • Como preparar resenhas de filmes usando a limpeza e um vocabulário pré-definido e salvá-los em novos arquivos prontos para modelagem.

Comece seu projeto com meu novo livro Deep Learning for Natural Language Processing, incluindo tutoriais passo a passo e a Código-fonte Python arquivos para todos os exemplos.

Vamos começar.

  • Atualização outubro / 2017: Corrigido um pequeno bug ao pular arquivos não correspondentes, obrigado Jan Zett.
  • Atualização dezembro / 2017: Corrigido um pequeno erro de digitação no exemplo completo, obrigado Ray e Zain.
  • Atualização agosto / 2020: Link atualizado para o conjunto de dados de resenhas de filmes.
Como preparar dados de resenhas de filmes para análise de sentimento

Como preparar dados de resenhas de filmes para análise de sentimento
Foto de Kenneth Lu, alguns direitos reservados.

Visão geral do tutorial

Este tutorial é dividido em 5 partes; eles estão:

  1. Conjunto de dados de resenhas de filmes
  2. Carregar Dados de Texto
  3. Limpar dados de texto
  4. Desenvolver vocabulário
  5. Salvar dados preparados

Precisa de ajuda com Deep Learning for Text Data?

Faça meu curso intensivo de e-mail gratuito de 7 dias agora (com código).

Clique para se inscrever e também obter uma versão gratuita do Ebook em PDF do curso.

Comece Seu Crash-Course GRÁTIS Agora

1. Conjunto de dados de revisão de filme

The Movie Review Data é uma coleção de resenhas de filmes recuperadas do site imdb.com no início dos anos 2000 por Bo Pang e Lillian Lee. As avaliações foram coletadas e disponibilizadas como parte de sua pesquisa sobre processamento de linguagem natural.

As análises foram lançadas originalmente em 2002, mas uma versão atualizada e limpa foi lançada em 2004, referida como “v2.0“.

O conjunto de dados é composto de 1.000 críticas positivas e 1.000 negativas de filmes retiradas de um arquivo do grupo de notícias rec.arts.movies.reviews hospedado no IMDB. Os autores referem-se a este conjunto de dados como o “conjunto de dados de polaridade“.

Nossos dados contêm 1000 revisões positivas e 1000 negativas, todas escritas antes de 2002, com um limite de 20 revisões por autor (total de 312 autores) por categoria. Referimo-nos a este corpus como o conjunto de dados de polaridade.

- Uma educação sentimental: análise de sentimento usando sumarização de subjetividade com base em cortes mínimos, 2004.

Os dados foram um pouco limpos, por exemplo:

  • O conjunto de dados é composto apenas por revisões em inglês.
  • Todo o texto foi convertido para minúsculas.
  • Há um espaço em branco ao redor da pontuação, como pontos, vírgulas e colchetes.
  • O texto foi dividido em uma frase por linha.

Os dados foram usados ​​para algumas tarefas de processamento de linguagem natural relacionadas. Para classificação, o desempenho de modelos clássicos (como máquinas de vetores de suporte) nos dados está na faixa de 70% a 80% (por exemplo, 78% a 82%).

A preparação de dados mais sofisticada pode ter resultados de até 86% com validação cruzada de 10 vezes. Isso nos dá uma estimativa de meados dos anos 80 se estivéssemos procurando usar esse conjunto de dados em experimentos com métodos modernos.

... dependendo da escolha do classificador de polaridade downstream, podemos alcançar uma melhoria altamente significativa estatisticamente (de 82,8% para 86,4%)

- Uma educação sentimental: análise de sentimento usando sumarização de subjetividade com base em cortes mínimos, 2004.

Você pode baixar o conjunto de dados aqui:

Depois de descompactar o arquivo, você terá um diretório chamado “txt_sentoken”Com dois subdiretórios contendo o texto“neg" e "pos”Para críticas negativas e positivas. As avaliações são armazenadas uma por arquivo com uma convenção de nomenclatura cv000 para cv999 para cada um de neg e pos.

A seguir, vamos ver como carregar os dados de texto.

2. Carregar dados de texto

Nesta seção, veremos como carregar arquivos de texto individuais e, em seguida, processar os diretórios de arquivos.

Assumiremos que os dados de revisão foram baixados e disponíveis no diretório de trabalho atual na pasta “txt_sentoken“.

Podemos carregar um arquivo de texto individual abrindo-o, lendo o texto ASCII e fechando o arquivo. Este é o material padrão de manuseio de arquivos. Por exemplo, podemos carregar o primeiro arquivo de revisão negativa “cv000_29416.txt" do seguinte modo:

Isso carrega o documento como ASCII e preserva qualquer espaço em branco, como novas linhas.

Podemos transformar isso em uma função chamada load_doc () que pega um nome de arquivo do documento para carregar e retorna o texto.

Temos dois diretórios, cada um com 1.000 documentos cada. Podemos processar cada diretório por vez, primeiro obtendo uma lista de arquivos no diretório usando a função listdir () e, em seguida, carregando cada arquivo por vez.

Por exemplo, podemos carregar cada documento no diretório negativo usando o load_doc () função para fazer o carregamento real.

A execução deste exemplo imprime o nome do arquivo de cada revisão depois de carregada.

Podemos transformar o processamento dos documentos também em uma função e usá-lo como um modelo posteriormente para desenvolver uma função para limpar todos os documentos em uma pasta. Por exemplo, abaixo definimos um process_docs () função para fazer a mesma coisa.

Agora que sabemos como carregar os dados do texto da crítica do filme, vamos dar uma olhada em como limpá-los.

3. Limpar dados de texto

Nesta seção, veremos qual limpeza de dados podemos desejar fazer com os dados de crítica do filme.

Assumiremos que usaremos um modelo de saco de palavras ou talvez uma incorporação de palavras que não exija muita preparação.

Dividir em tokens

Primeiro, vamos carregar um documento e examinar os tokens brutos divididos por espaço em branco. Vamos usar o load_doc () função desenvolvida na seção anterior. Podemos usar o dividir() função para dividir o documento carregado em tokens separados por espaço em branco.

Executar o exemplo fornece uma longa lista de tokens brutos do documento.

Você também pode estar interessado em