O que é tokenização? Métodos para realizar a tokenização

Conteúdo

Visão geral

  • Você quer começar com o processamento de linguagem natural (PNL)? Este é o primeiro passo perfeito
  • Aprenda como tokenizar, um aspecto fundamental da preparação de seus dados para criar modelos de PNL
  • Apresentamos 6 diferentes maneiras de tokenizar dados de texto

Introdução

Você está fascinado com a quantidade de dados de texto disponíveis na Internet?? Procurando maneiras de trabalhar com esses dados de texto, mas não tenho certeza por onde começar? Depois de tudo, máquinas reconhecem números, não as letras da nossa língua. E esse pode ser um cenário complicado de navegar no aprendizado de máquina..

Então, Como podemos manipular e limpar esses dados de texto para construir um modelo? A resposta está no maravilhoso mundo de Processamento de linguagem natural (PNL).

Resolver um problema de PNL é um processo de vários estágios. Precisamos limpar os dados de texto não estruturados primeiro, antes de podermos pensar em chegar ao estágio de modelagem. A limpeza de dados consiste em algumas etapas principais:

  • Tokenização de palavras
  • Preveja classes gramaticais para cada token
  • Derivação do texto
  • Identifique e remova palavras de parada e muito mais.

comp-2-0_00_13_15-8303848

Neste artigo, vamos falar sobre o primeiro passo: tokenização. Primeiro, veremos o que é tokenização e por que ela é necessária na PNL. Mais tarde, Veremos seis maneiras exclusivas de fazer tokenização em Python.

Este artigo não tem pré-requisitos. Qualquer pessoa interessada em PNL ou ciência de dados poderá segui-lo. Se você está procurando um recurso abrangente para aprender PNL, você deve consultar nosso curso abrangente:

Tabela de conteúdo

  • O que é tokenização em PNL?
  • Por que a tokenização é necessária?
  • Métodos diferentes para realizar tokenização em Python
    • Tokenização usando a função de divisão () de Python
    • Tokenização usando expressões regulares
    • Tokenização usando NLTK
    • Tokenização usando Spacy
    • Tokenização usando Keras
    • Tokenização usando Gensim

O que é tokenização em PNL?

A tokenização é uma das tarefas mais comuns quando se trata de trabalhar com dados de texto. Mas, O que o termo 'tokenização' realmente significa?

A tokenização consiste essencialmente em dividir uma frase, oração, parágrafo ou um documento de texto completo em unidades menores, como palavras ou termos individuais. Cada uma dessas unidades menores é chamada de tokens.

Olhe a imagem abaixo para visualizar esta definição:

screenshot-from-2019-07-05-13-50-56-1778299

Tokens podem ser palavras, números ou sinais de pontuação. Em tokenização, unidades menores são criadas localizando limites de palavras. Esperando, Quais são os limites das palavras?

Estes são o ponto final de uma palavra e o início da próxima. Esses tokens são considerados uma primeira etapa para derivação e lematização (a próxima etapa do pré-processamento de texto que abordaremos no próximo artigo).

Duro? Não te preocupes! O século 21 facilitou o acesso à aprendizagem e ao conhecimento. Qualquer curso de processamento de linguagem natural pode ser usado para aprendê-los facilmente.

Por que a tokenização é necessária em PNL?

Eu quero que você pense na língua inglesa aqui. Escolha qualquer frase que vier à mente e mantenha-a em mente ao ler esta seção. Isso ajudará você a entender a importância da tokenização de uma maneira muito mais fácil.

Antes de processar uma linguagem natural, precisamos identificar o palavras que constituem uma sequência de caracteres. É por isso que vocêOkenização é a etapa mais básica para prosseguir com a PNL (dados de texto). Isso é importante porque o significado do texto pode ser facilmente interpretado analisando as palavras presentes no texto..

Vamos dar um exemplo. Considere a seguinte string:

“Isso é um gato.”

O que você acha que vai acontecer depois que tokenizarmos nesta cadeia? Nós obtemos ['Esse', 'é', 'uma', gato'].

Existem vários usos para fazer isso. Podemos usar este formulário tokenizado para:

  • Conte o número de palavras no texto.
  • Conte a frequência da palavra, quer dizer, o número de vezes que uma determinada palavra está presente.

E assim por diante. Podemos extrair muito mais informações que discutiremos em detalhes em artigos futuros.. Por agora, é hora de mergulhar no âmago deste artigo: os diferentes métodos para realizar a tokenização em PNL.

Métodos para realizar a tokenização em Python

Veremos seis maneiras exclusivas de tokenizar dados de texto. Eu forneci o código Python para cada método para que você possa segui-lo em sua própria máquina.

1. Tokenização usando a função de divisão () de Python

Vamos começar com o separar() método, uma vez que é o mais básico. Retorna uma lista de strings depois de dividir a string dada pelo separador especificado. Por padrão, dividir () quebrar uma corrente em cada espaço. Podemos mudar o separador para qualquer coisa. Vamos a ver.

Tokenização de palavras

Saída : ['Fundado', 'no', '2002,', 'SpaceX’s', 'missão', 'é', 'para', 'permitir', 'humanos', 
          'para', 'tornar-se', 'uma', 'viagem espacial', 'civilização', 'e', 'uma', 'multiplaneta', 
          'espécies', 'por', 'construção', 'uma', 'auto-sustentável', 'cidade', 'sobre', "Marte.", 'No', 
          '2008,', 'SpaceX’s', 'Falcão', '1', 'passou a ser', 'a', 'primeiro', 'privado', 
          'desenvolvido', 'combustível líquido', 'lançar', 'veículo', 'para', 'órbita', 'a', 'Terra.']

Tokenização de declaração

Isso é semelhante à tokenização de palavras. Aqui, estudamos a estrutura das frases na análise. Uma frase geralmente termina com um período (.), Então podemos usar “.” como um separador para quebrar a corda:

Saída : ['Fundada em 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet nspecies by building a self-sustaining city on 
           Mars', 
          "Em 2008, Falcão da SpaceX 1 became the first privately developed nliquid-fuel 
           launch vehicle to orbit the Earth.']

Uma grande desvantagem de usar Python separar() O método é que só podemos usar um separador de cada vez. Outra coisa a ter em mente: em tokenização de palavras, separar() não considerou pontuação como um símbolo autônomo.

2. Tokenização usando expressões regulares (RegEx)

Primeiro, vamos entender o que é uma expressão regular. Basicamente, éuma sequência de caracteres especial que o ajuda a encontrar ou encontrar outras strings ou conjuntos de strings usando essa sequência como um padrão.

Podemos usar o Biblioteca Python para trabalhar com expressões regulares. Esta biblioteca vem pré-instalada com o pacote de instalação do Python.

Agora, vamos fazer tokenização de palavras e tokenização de frases tendo regex em mente.

Tokenização de palavras

Saída : ['Fundado', 'no', '2002', 'SpaceX', 's', 'missão', 'é', 'para', 'permitir', 
          'humanos', 'para', 'tornar-se', 'uma', 'viagem espacial', 'civilização', 'e', 'uma', 
          'multi', 'planeta', 'espécies', 'por', 'construção', 'uma', 'auto', 'sustentando', 
          'cidade', 'sobre', 'Marte', 'No', '2008', 'SpaceX', 's', 'Falcão', '1', 'passou a ser', 
          'a', 'primeiro', 'privado', 'desenvolvido', 'líquido', 'combustível', 'lançar', 'veículo', 
          'para', 'órbita', 'a', 'Terra']

a re.findall () A função encontra todas as palavras que correspondem ao padrão passado a ela e as armazena na lista.

o “w"Representa" qualquer caractere de palavra "que normalmente significa alfanumérico (cartas, números) e sublinhado (_). ‘+’ significa qualquer número de vezes. Então [w']+ indica que o código deve encontrar todos os caracteres alfanuméricos até que quaisquer outros caracteres são encontrados.

captura de tela de 2019-07-05-13-31-01-1727408

Tokenização de declaração

Para realizar tokenização de sentença, podemos usar o re.split () Função. Isso dividirá o texto em frases, passando um padrão para ele..

Saída : ['Fundada em 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet nspecies by building a self-sustaining city on 
           Mars.', 
          "Em 2008, Falcão da SpaceX 1 became the first privately developed nliquid-fuel 
           launch vehicle to orbit the Earth.']

Aqui, temos uma vantagem sobre o separar() método, uma vez que podemos passar vários separadores ao mesmo tempo. No código acima, nós usamos o re.compilar () função em que passamos [.?!]. isso significa que as frases serão divididas assim que qualquer um desses caracteres for encontrado..

Você está interessado em ler mais sobre a expressão regular? Os recursos a seguir o ajudarão a começar a usar expressões regulares em PNL:

3. Tokenização usando NLTK

Agora, esta é uma biblioteca que você apreciará quanto mais trabalhar com dados de texto. NLTK, abreviatura de Natural Language ToolKit, é uma biblioteca escrita em Python para processamento simbólico e estatístico de linguagem natural.

Você pode instalar o NLTK usando o seguinte código:

pip install --user -U nltk

NLTK contém um módulo chamado tokenizar () que também é classificado em duas subcategorias:

  • Tokenização de palavras: Usamos o método word_tokenize () dividir uma frase em tokens ou palavras
  • Tokenização da frase: Usamos o método sent_tokenize () dividir um documento ou parágrafo em frases

Vamos olhar para ambos um por um.

Tokenização de palavras

Saída: ['Fundado', 'no', '2002', ',', 'SpaceX', ''', 's', 'missão', 'é', 'para', 'permitir', 
         'humanos', 'para', 'tornar-se', 'uma', 'viagem espacial', 'civilização', 'e', 'uma', 
         'multiplaneta', 'espécies', 'por', 'construção', 'uma', 'auto-sustentável', 'cidade', 'sobre', 
         'Marte', '.', 'No', '2008', ',', 'SpaceX', ''', 's', 'Falcão', '1', 'passou a ser', 
         'a', 'primeiro', 'privado', 'desenvolvido', 'combustível líquido', 'lançar', 'veículo', 
         'para', 'órbita', 'a', 'Terra', '.']

Tokenização de declaração

Saída: ['Fundada em 2002, SpaceX’s mission is to enable humans to become a spacefaring 
          civilization and a multi-planet nspecies by building a self-sustaining city on 
          Mars.', 
         "Em 2008, Falcão da SpaceX 1 became the first privately developed nliquid-fuel 
          launch vehicle to orbit the Earth.']

4. Tokenização usando a biblioteca spaCy

Eu amo a biblioteca SpaCy. Não me lembro da última vez que não o usei quando estava trabalhando em um projeto da PNL.. É tão útil..

spaCy é um biblioteca de código aberto para avançado Processamento de linguagem natural (PNL). Suporta mais do que 49 idiomas e fornece velocidade de cálculo de última geração.

espacy-2586479

Para instalar o Spacy no Linux:

pip install -U spacy
python -m spacy download en

Para instalá-lo em outros sistemas operacionais, vamos para esse link.

Então, vamos ver como podemos usar a genialidade da spaCy para fazer tokenização. Usaremos spacy.lang.en que suporta o idioma inglês.

Tokenização de palavras

Saída : ['Fundado', 'no', '2002', ',', 'SpaceX', '' S ', 'missão', 'é', 'para', 'permitir', 
          'humanos', 'para', 'tornar-se', 'uma', 'viagem espacial', 'civilização', 'e', 'uma', 
          'multi', '-', 'planeta', 'n', 'espécies', 'por', 'construção', 'uma', 'auto', '-', 
          'sustentando', 'cidade', 'sobre', 'Marte', '.', 'No', '2008', ',', 'SpaceX', '' S ', 
          'Falcão', '1', 'passou a ser', 'a', 'primeiro', 'privado', 'desenvolvido', 'n', 
          'líquido', '-', 'combustível', 'lançar', 'veículo', 'para', 'órbita', 'a', 'Terra', '.']

Tokenização de declaração

Saída : ['Fundada em 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet nspecies by building a self-sustaining city on 
           Mars.', 
          "Em 2008, Falcão da SpaceX 1 became the first privately developed nliquid-fuel 
           launch vehicle to orbit the Earth.']

spaCy é bastante rápido em comparação com outras bibliotecas ao realizar tarefas de PNL (sim, mesmo NLTK). Convido você a ouvir o seguinte podcast do DataHack Radio para aprender a história por trás de como o spaCy foi criado e onde você pode usá-lo:

E aqui está um tutorial detalhado para começar a usar spaCy:

5. Tokenização usando Keras

Duro! Uma das estruturas de aprendizado profundo mais populares da indústria no momento. É uma biblioteca de rede neural de código aberto para Python. Keras é muito fácil de usar e também pode ser executado no TensorFlow.

No contexto da PNL, podemos usar Keras para limpar os dados de texto não estruturados que normalmente coletamos.

keras_tokenization-4173569

Você pode instalar Keras em sua máquina usando apenas uma linha de código:

pip install Hard

Vamos ao trabalho. Para executar tokenização de palavras usando Keras, nós usamos o text_to_word_sequence método de keras.preprocessing.text classe.

Vamos ver Keras em ação.

Tokenização de palavras

Saída : ['fundado', 'no', '2002', 'spacex’s', 'missão', 'é', 'para', 'permitir', 'humanos', 
          'para', 'tornar-se', 'uma', 'viagem espacial', 'civilização', 'e', 'uma', 'multi', 
          'planeta', 'espécies', 'por', 'construção', 'uma', 'auto', 'sustentando', 'cidade', 'sobre', 
          'marte', 'no', '2008', 'spacex’s', 'falcão', '1', 'passou a ser', 'a', 'primeiro', 
          'privado', 'desenvolvido', 'líquido', 'combustível', 'lançar', 'veículo', 'para', 'órbita', 
          'a', 'terra']

Keras reduz a caixa de todos os alfabetos antes de torná-los tokenizados. Isso nos economiza muito tempo, como você pode imaginar!!

6. Tokenização usando Gensim

O método final de tokenização que abordaremos aqui é o uso da biblioteca Gensim. É uma biblioteca de código aberto para modelagem de tópicos não supervisionada e processamento de linguagem natural. e foi projetado para extrair automaticamente temas semânticos de um determinado documento.

Veja como você pode instalar o Gensim:

pip instalar gensim

Podemos usar o gensim.utils classe para importar o tokenizar método para realizar tokenização de palavras.

Tokenização de palavras

Outpur : ['Fundado', 'no', 'SpaceX', 's', 'missão', 'é', 'para', 'permitir', 'humanos', 'para', 
          'tornar-se', 'uma', 'viagem espacial', 'civilização', 'e', 'uma', 'multi', 'planeta', 
          'espécies', 'por', 'construção', 'uma', 'auto', 'sustentando', 'cidade', 'sobre', 'Marte', 
          'No', 'SpaceX', 's', 'Falcão', 'passou a ser', 'a', 'primeiro', 'privado', 
          'desenvolvido', 'líquido', 'combustível', 'lançar', 'veículo', 'para', 'órbita', 'a', 
          'Terra']

Tokenização de declaração

Para realizar tokenização de sentença, nós usamos o split_sentences método de gensim.summerization.texttcleaner classe:

Saída : ['Fundada em 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet ', 
          Espécies construindo uma cidade autossustentável em Marte., 
          "Em 2008, Falcão da SpaceX 1 tornou-se o primeiro desenvolvido privadamente ', 
          'veículo de lançamento de combustível líquido para orbitar a Terra.']

Você deve ter notado que Gensim é bastante rigoroso com a pontuação. Divida cada vez que uma pontuação é encontrada. Na divisão de sentenças também, Gensim tokenizou o texto ao encontrar ” n” enquanto outras bibliotecas o ignoraram.

Notas finais

A tokenização é uma etapa crítica no pipeline geral da PNL. Não podemos simplesmente pular para a parte de construção do modelo sem primeiro limpar o texto.

Neste artigo, vimos seis métodos diferentes de tokenização (palavra e frase) de um determinado texto. Existem também outras maneiras, mas eles são bons o suficiente para você começar.

Vou cobrir outras etapas de limpeza de texto, como a remoção de palavras irrelevantes, marcação de classe gramatical e reconhecimento de entidades nomeadas em minhas postagens futuras. Até então, continue aprendendo!

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.