The Beauty of PNL

Tokenização para processamento de linguagem natural

O processamento de linguagem natural é um dos campos da programação em que a linguagem natural é processada pelo software. Isso tem muitas aplicações, como análise de sentimento, tradução de idiomas, detecção de notícias falsas, detecção de erros gramaticais, etc.

A entrada no processamento de linguagem natural é o texto. A coleta de dados para este texto acontece a partir de várias fontes. Isso requer muita limpeza e processamento antes que os dados possam ser usados ​​para análise.

Estes são alguns dos métodos de processamento de dados na PNL:

  • Tokenização
  • Remoção de palavras de parada
  • Stemming
  • Normalização
  • Lemmatização
  • Marcação de partes da fala

A tokenização está dividindo o texto bruto em pequenos pedaços. A tokenização divide o texto bruto em palavras, frases chamadas tokens. Esses tokens ajudam a entender o contexto ou desenvolver o modelo para a PNL. A tokenização ajuda a interpretar o significado do texto, analisando a sequência das palavras.

Existem diferentes métodos e bibliotecas disponíveis para realizar a tokenização. NLTK, Gensim, Keras são algumas das bibliotecas que podem ser utilizadas para realizar a tarefa.

A tokenização pode ser feita para separar palavras ou frases. Se o texto for dividido em palavras usando alguma técnica de separação, isso é chamado de tokenização de palavras e a mesma separação feita para as frases é chamada de tokenização de frases.

Palavras irrelevantes são aquelas palavras no texto que não adicionam nenhum significado à frase e sua remoção não afetará o processamento do texto para o propósito definido. Eles são removidos do vocabulário para reduzir o ruído e reduzir a dimensão do conjunto de recursos.

Existem várias técnicas de tokenização disponíveis que podem ser aplicáveis ​​com base na linguagem e no propósito da modelagem. Abaixo estão algumas das técnicas de tokenização usadas na PNL.

Token de espaço em branco

Esta é a técnica de tokenização mais simples. Dado uma frase ou parágrafo, ele transforma em palavras dividindo a entrada sempre que um espaço em branco é encontrado. Esta é a técnica de tokenização mais rápida, mas funcionará para idiomas nos quais o espaço em branco divide a frase em palavras significativas. Exemplo: inglês.

Tokenização baseada em dicionário

Neste método, os tokens são encontrados com base nos tokens já existentes no dicionário. Se o token não for encontrado, regras especiais serão usadas para torná-lo um token. É uma técnica avançada em comparação com o tokenizer de espaço em branco.

Tokenização baseada em regras

Nesta técnica, um conjunto de regras é criado para o problema específico. A tokenização é feita com base nas regras. Por exemplo, a criação de regras com base na gramática para um idioma específico.

Tokenizer de expressão regular

Essa técnica usa expressão regular para controlar a tokenização de texto em tokens. A expressão regular pode ser simples a complexa e, às vezes, difícil de compreender. Esta técnica deve ser preferida quando os métodos acima não atendem ao propósito requerido. É um tokenizer baseado em regras.

Tokenização Penn TreeBank

O banco de árvores é um corpus criado que dá a anotação semântica e sintática da linguagem. Penn Treebank é um dos maiores treebanks publicados. Essa técnica de tokenização separa a pontuação, os clíticos (palavras que ocorrem junto com outras palavras como sou, não) e as palavras hifenizadas juntas.

Spacy Tokenizer

Esta é uma técnica moderna de tokenização que é mais rápida e facilmente personalizável. Ele fornece a flexibilidade de especificar tokens especiais que não precisam ser segmentados ou precisam ser segmentados usando regras especiais. Suponha que você queira manter $ como um token separado, ele tem precedência sobre outras operações de tokenização.

Moses Tokenizer

Este é um tokenizer avançado e disponível antes do lançamento do Spacy. É basicamente uma coleção de lógica complexa de normalização e segmentação que funciona muito bem para linguagem estruturada como o inglês.

Subword tokenização

Essa tokenização é muito útil para aplicações específicas em que subpalavras têm significado. Nesta técnica, as palavras usadas com mais frequência recebem ids exclusivos e as palavras menos frequentes são divididas em subpalavras e representam melhor o significado de forma independente. Por exemplo, se a palavra poucos aparecer com frequência no texto, será atribuído um id único, onde menos e menos, que são palavras raras e são menos frequentes no texto, serão divididas em subpalavras como few, er e est. ajuda o modelo de linguagem a não aprender menos e menos como duas palavras separadas. Isso permite identificar as palavras desconhecidas no conjunto de dados durante o treinamento. Existem diferentes tipos de tokenização de subpalavra e eles são fornecidos abaixo e a Codificação de pares de bytes e WordPiece serão discutidos brevemente.

  • Codificação de par de bytes (BPE)
  • WordPiece
  • Modelo de linguagem unigrama
  • SentençaPiece

Esta técnica é baseada nos conceitos da teoria da informação e compressão. O BPE usa a codificação Huffman para tokenização, o que significa que usa mais incorporação ou símbolos para representar palavras menos frequentes e menos símbolos ou incorporação para palavras usadas com mais frequência.

A tokenização BPE é uma técnica de tokenização de subpalavra de baixo para cima. As etapas envolvidas no algoritmo BPE são fornecidas abaixo.

  1. Começa com a divisão das palavras de entrada em caracteres Unicode únicos e cada um deles corresponde a um símbolo no vocabulário final.
  2. Encontre o par de símbolos que ocorre mais frequentemente no vocabulário atual.
  3. Adicione isso ao vocabulário e o tamanho do vocabulário aumenta em um.
  4. Repita as etapas ii e iii até que o número definido de tokens seja criado ou nenhuma nova combinação de símbolos exista com a frequência necessária.

O WordPiece é semelhante às técnicas de BPE que esperam a maneira como o novo token é adicionado ao vocabulário. O BPE considera o token com o par de símbolos de ocorrência mais frequente para se fundir no vocabulário. Enquanto o WordPiece também considera a frequência de símbolos individuais e com base na contagem abaixo, ele se funde ao vocabulário.

Contagem (x, y) = frequência de (x, y) / frequência (x) * frequência (y)

O par de símbolos com contagem máxima será considerado para se fundir no vocabulário. Portanto, permite que tokens raros sejam incluídos no vocabulário em comparação com o BPE.

Tokenização com NLTK

NLTK (kit de ferramentas de linguagem natural) é uma biblioteca python desenvolvida pela Microsoft para auxiliar na PNL.

Word_tokenize e sent_tokenize são tokenizadores muito simples disponíveis em NLTK

Basicamente, ele retorna os trabalhos individuais da string.

Sent_tokenize divide a string em várias frases. O sent_tokenizer é derivado da classe PunktSentenceTokenizer. O sent_tokenize usa o modelo pré-treinado de tokenizers / punkt / english.pickle. Existem modelos pré-treinados para diferentes idiomas que podem ser selecionados. O PunktSentenceTokenizer pode ser treinado em nossos próprios dados para fazer um tokenizer de frase personalizado.

custom_sent_tokenizer = PunktSentenceTokenizer (train_data)

Existem alguns outros tokenizadores especiais, como tokenizer Multi Word Expression (MWETokenizer), Tweet Tokenizer.

O MWETokenizer pega uma string que já foi dividida em tokens e a retocaliza, mesclando expressões com várias palavras em um único token, usando o léxico de MWEs.

Considere a frase “Ele completou a tarefa apesar de todos os obstáculos enfrentados”

Isso é simbolizado como [‘Ele’, ‘concluído’, ‘o’, ‘tarefa’, ‘em’, ‘despeito’, ‘de’, ‘todos’, ‘o’, ‘obstáculos’, ‘enfrentado’]

Se adicionarmos ‘apesar de’ no léxico do MWETokenizer, então quando os tokens acima forem passados ​​para MWETokenizer, ele será tokenizado como [‘He’, ‘concluído’, ‘o’, ‘tarefa’, ‘apesar de ‘,’ todos ‘,’ o ‘,’ obstáculos ‘,’ enfrentados ‘]

O TweetTokenizer aborda as coisas específicas para os tweets, como lidar com emojis.

RegexpTokenizer

Este tokenizer divide a frase em palavras com base na expressão regular. Por exemplo, no exemplo abaixo, o tokenizer forma as expressões de tokens sem dinheiro e quaisquer outras sequências que não sejam espaços em branco.

Tokenização com Textblob

Textblob é usado para processamento de dados de texto e é uma biblioteca em Python. Semelhante a outros pacotes, ele fornece APIs para análise de sentimento, marcação de classes gramaticais, classificação, tradução e assim por diante. Abaixo está o fragmento de código para tokenizar em frase e palavras e você pode notar na saída que os emojis foram removidos da pontuação.

Tokenização com Gensim

Gensim é uma das bibliotecas usadas principalmente para Modelagem de Tópicos. Gensim fornece funções utilitárias para tokenização.

O Gensim também tem um tokenizer de frase. Split_sentences do limpador de texto faz a tokenização dessa frase.

Tokenização com Keras

A tokenização também pode ser feita com a biblioteca Keras. Podemos usar text_to_word_sequence de Keras. preprocessing.text para tokenizar o texto. Keras usa fit_on_words para desenvolver um corpora das palavras no texto e usa esse corpus para criar uma sequência de palavras com a sequência text_to_word.

Desafios na tokenização

Existem muitos desafios na tokenização, mas discutimos algumas das dificuldades na segmentação das palavras.

Um dos maiores desafios na tokenização é obter o limite das palavras. Em inglês, o limite da palavra é geralmente definido por um espaço e os sinais de pontuação definem o limite das frases, mas não é o mesmo em todas as línguas. Em idiomas como chinês, coreano e símbolos japoneses representam as palavras e é difícil entender os limites das palavras.

Mesmo em inglês, existem muitos símbolos usados ​​como £, $, € seguidos por numéricos para representar dinheiro e existem muitos símbolos científicos como µ, α etc. que criam desafios na tokenização.

Existem também muitas formas curtas usadas em inglês, como I’m (I am), não (não fiz), etc., que precisam ser resolvidas ou causam muitos problemas nas próximas etapas da PNL.

Ainda há muita pesquisa em andamento neste campo da PNL e precisamos selecionar os corpora adequados para a tarefa da PNL.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *