Como limpar texto para aprendizado de máquina com Python

Como limpar texto para aprendizado de máquina com Python

Você não pode ir direto do texto bruto para se ajustar a um modelo de aprendizado de máquina ou aprendizado profundo.

Você deve limpar seu texto primeiro, o que significa dividi-lo em palavras e lidar com a pontuação e maiúsculas e minúsculas.

Na verdade, existe um conjunto completo de métodos de preparação de texto que você pode precisar usar, e a escolha dos métodos realmente depende de sua tarefa de processamento de linguagem natural.

Neste tutorial, você descobrirá como limpar e preparar seu texto pronto para modelagem com aprendizado de máquina.

Depois de concluir este tutorial, você saberá:

  • Como começar a desenvolver suas próprias ferramentas de limpeza de texto muito simples.
  • Como dar um passo à frente e usar os métodos mais sofisticados da biblioteca NLTK.
  • Como preparar o texto ao usar métodos modernos de representação de texto, como embeddings de palavras.

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 novembro / 2017: Corrigido um erro de digitação de código na seção 'dividir em palavras', obrigado David Comfort.
Como Desenvolver Modelos Perceptron Multicamadas para Previsão de Séries Temporais

Como Desenvolver Modelos Perceptron Multicamadas para Previsão de Séries Temporais
Foto do Bureau of Land Management, alguns direitos reservados.

Visão geral do tutorial

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

  1. Metamorfose de Franz Kafka
  2. A limpeza de texto é específica da tarefa
  3. Tokenização manual
  4. Tokenização e limpeza com NLTK
  5. Considerações adicionais de limpeza de texto
  6. Dicas para limpar texto para incorporação de palavras

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

Metamorfose de Franz Kafka

Vamos começar selecionando um conjunto de dados.

Neste tutorial, usaremos o texto do livro Metamorfose de Franz Kafka. Nenhum motivo específico, a não ser que seja curto, gostei e você também pode gostar. Imagino que seja um daqueles clássicos que a maioria dos alunos tem que ler na escola.

O texto completo de Metamorfose está disponível gratuitamente no Project Gutenberg.

Você pode baixar a versão em texto ASCII do texto aqui:

Baixe o arquivo e coloque-o em seu diretório de trabalho atual com o nome de arquivo “metamorfose.txt“.

O arquivo contém informações de cabeçalho e rodapé nas quais não estamos interessados, especificamente informações de copyright e licença. Abra o arquivo e exclua as informações de cabeçalho e rodapé e salve o arquivo como “metamorphosis_clean.txt“.

O início do arquivo limpo deve ser semelhante a:

Uma manhã, quando Gregor Samsa acordou de sonhos difíceis, ele se viu transformado em sua cama em um horrível verme.

O arquivo deve terminar com:

E, como que para confirmar seus novos sonhos e boas intenções, assim que chegaram ao destino Grete foi a primeira a se levantar e esticar seu jovem corpo.

Pobre Gregor ...

A limpeza de texto é específica da tarefa

Depois de realmente obter os dados do texto, a primeira etapa para limpar os dados do texto é ter uma ideia sólida sobre o que você está tentando alcançar e, nesse contexto, revisar o texto para ver o que exatamente pode ajudar.

Pare um momento para olhar o texto. O que você percebe?

Aqui está o que vejo:

  • É um texto simples, então não há marcação para analisar (yay!).
  • A tradução do alemão original usa o inglês do Reino Unido (por exemplo, “viajando“).
  • As linhas são quebradas artificialmente com novas linhas em cerca de 70 caracteres (meh).
  • Não há erros de digitação ou ortografia óbvios.
  • Há pontuação como vírgulas, apóstrofos, aspas, pontos de interrogação e muito mais.
  • Existem descrições hifenizadas como “semelhante a uma armadura”.
  • O travessão (“-“) é muito usado para continuar frases (talvez substituir por vírgulas?).
  • Existem nomes (por exemplo, “Sr. Samsa“)
  • Não parece haver números que requerem tratamento (por exemplo, 1999)
  • Existem marcadores de seção (por exemplo, “II” e “III”), e removemos o primeiro “I”.

Tenho certeza de que há muito mais coisas acontecendo para o olho treinado.

Veremos as etapas gerais de limpeza de texto neste tutorial.

No entanto, considere alguns possíveis objetivos que podemos ter ao trabalhar com este documento de texto.

Por exemplo:

  • Se estivermos interessados ​​em desenvolver um modelo de linguagem kafkiano, podemos manter todas as maiúsculas e minúsculas, aspas e outras pontuações no lugar.
  • Se estivéssemos interessados ​​em classificar documentos como “Kafka" e "Não Kafka, ”Talvez quiséssemos eliminar maiúsculas e minúsculas, pontuação e até mesmo cortar as palavras de volta à raiz.

Use sua tarefa como a lente para escolher como preparar seus dados de texto.

Tokenização manual

A limpeza de texto é difícil, mas o texto que escolhemos para trabalhar já está bem limpo.

Poderíamos apenas escrever algum código Python para limpá-lo manualmente, e este é um bom exercício para aqueles problemas simples que você encontra. Ferramentas como expressões regulares e divisão de strings podem ajudar você a percorrer um longo caminho.

1. Carregar Dados

Vamos carregar os dados de texto para que possamos trabalhar com eles.

O texto é pequeno e carrega de forma rápida e cabe facilmente na memória. Isso nem sempre será o caso e você pode precisar escrever código para mapear a memória do arquivo. Ferramentas como o NLTK (abordadas na próxima seção) tornarão o trabalho com arquivos grandes muito mais fácil.

Podemos carregar todo o “metamorphosis_clean.txt”Na memória da seguinte forma:

A execução do exemplo carrega todo o arquivo na memória, pronto para trabalhar.

2. Dividido por espaço em branco

Texto limpo geralmente significa uma lista de palavras ou tokens com os quais podemos trabalhar em nossos modelos de aprendizado de máquina.

Isso significa converter o texto bruto em uma lista de palavras e salvá-lo novamente.

Uma maneira muito simples de fazer isso seria dividir o documento por espaço em branco, incluindo ”“, novas linhas, guias e muito mais. Podemos fazer isso em Python com a função split () na string carregada.

Executar o exemplo divide o documento em uma longa lista de palavras e imprime as 100 primeiras para revisarmos.

Podemos ver que a pontuação é preservada (por exemplo, “não era" e "semelhante a uma armadura"), que é bom. Também podemos ver que a pontuação do final da frase é mantida com a última palavra (por exemplo, “pensamento. ”), O que não é ótimo.

3. Selecione Palavras

Outra abordagem pode ser usar o modelo regex (re) e dividir o documento em palavras, selecionando sequências de caracteres alfanuméricos (az, AZ, 0-9 e '_').

Por exemplo:

Novamente, executando o exemplo, podemos ver que obtemos nossa lista de palavras. Desta vez, podemos ver que “semelhante a uma armadura”Agora são duas palavras“armaduras" e "gostar”(Tudo bem), mas contrações como“O que é”Também são duas palavras“O que" e "s" (nada bom).

3. Dividir por espaços em branco e remover pontuação

Nota: este exemplo foi escrito para Python 3.

Podemos querer as palavras, mas sem a pontuação, como vírgulas e aspas. Também queremos manter as contrações juntas.

Uma maneira seria dividir o documento em palavras por espaço em branco (como em “2. Dividido por espaço em branco“), Em seguida, use a tradução de string para substituir toda a pontuação por nada (por exemplo, remover ...

Você também pode estar interessado em