Mineração de Texto

Prof. Letícia Raposo

UNIRIO

Mineração de Texto

Objetivo: transformar o texto em dados para análise, por meio da aplicação do processamento de linguagem natural (NLP) e de métodos analíticos.

Mineração de Texto

Aplicações:

  • Tradução: tradução de uma frase de um idioma para outro.
  • Análise de sentimento: determinar, a partir de um corpus de texto, se o sentimento em relação a qualquer tópico ou produto etc. é positivo, negativo ou neutro.
  • Filtragem de spam: detecta e-mails/mensagens não solicitadas e indesejadas.
  • Sugestão de respostas: identifica a pergunta e sugere uma resposta baseada no contexto.

Etapas Básicas

  • Pre-processamento do texto
    1. Limpeza
    2. Tokenização
    3. Remoção de stopwords
    4. Lematização e stemming

Etapas Básicas

  • Extração das características
    1. One-hot encodding
    2. Bag of words
    3. Term Frequency-Inverse Document Frequency (TF-IDF)
    4. Word embedding
  • Aplicação de aprendizado de máquina

Pré-processamento do texto

Limpeza

Algumas etapas de limpeza podem tornar os dados mais adequados à modelagem:

  1. Tornar todos os caracteres minúsculos;
  2. Remover todos os caracteres não ASCII;
  3. Remover termos não textuais, como emojis, links https ou url, hashtags (#…), tags html;
  4. Substituir uma palavra contraída (tô para estou);

Limpeza

Algumas etapas de limpeza podem tornar os dados mais adequados à modelagem:

  1. Remover qualquer alongamento de palavra (lindoooo);
  2. Remover pontuações;
  3. Remover números;
  4. Remover espaços em branco desnecessários…

Limpeza


Olá, meu nome é Letícia e eu aaaamo um chocolatinho. :)


ola meu nome e leticia e eu amo um chocolatinho

Tokenização

  • Tem como finalidade seccionar um documento textual em unidades mínimas, mas que exprimam a mesma semântica original do texto.
  • O termo token é utilizado para designar estas unidades, que muitas vezes correspondem a somente uma palavra do texto.
  • O processo de tokenização é auxiliado pelo fato das palavras serem separadas por caracteres de controle de arquivo ou de formatação, tais como espaços ou sinais de pontuação.

Tokenização


ola meu nome e leticia e eu amo um chocolatinho


[“ola”, “meu”,“nome”, “e”, “leticia”, “e”, “eu”, “amo”, “um”, “chocolatinho”]

Remoção de stopwords

  • É a tentativa de retirar tudo que não constitui conhecimento nos textos.
  • Em um documento, existem muitos tokens que não possuem nenhum valor semântico, sendo úteis apenas para o entendimento e compreensão geral do texto.
  • Estes tokens são palavras classificadas como stopwords e normalmente são conjunções, preposições, pronomes e artigos, pois são considerados termos de menor relevância.

Remoção de stopwords


ola meu nome e leticia e eu amo um chocolatinho


ola nome leticia amo chocolatinho

Stemming e Lematização

  • Stemming — as palavras são reduzidas a uma raiz removendo a inflexão por meio da eliminação de caracteres desnecessários, geralmente um sufixo.
    • chocolatinho -> chocolat
  • Lematização — representar as palavras por meio do infinitivo dos verbos e masculino singular dos substantivos e adjetivos.
    • cantando -> cantar

Stemming

Tipos de erros que devem ser observados e controlados durante a execução do stemming:

  • Overstemming: conjunto de caracteres removidos não faz parte de uma derivação ou flexão desta, mas, sim, de seu radical.
  • Understemming: caracteres resultantes do processo de stemming ainda fazem parte de uma derivação ou flexão da palavra original.

Stemming


ola nome leticia amo chocolatinho


ola nom letici amo chocolatinh

Extração de características

Extração de características

  • Para usar um modelo estatístico ou de deep learning, precisamos transformar o texto em uma informação numérica (vetor).
  • Mas como representar as palavras?

One-hot encoding

  • Maneira de representar cada palavra por um vetor esparso de 0s e 1s. Apenas um índice tem o valor ‘1’ presente e todos os demais são 0s.
  • O número de índices é dado pelo número de palavras distintas no texto.

One-hot encoding

Exemplo: “ola nome leticia amo chocolatinho”.

  • ola: [1,0,0,0,0]
  • nome: [0,1,0,0,0]
  • leticia: [0,0,1,0,0]
  • amo: [0,0,0,1,0]
  • chocolatinho: [0,0,0,0,1]

One-hot encoding

  • Vantagem: fácil de entender e de implementar.
  • Desvantagem: não comunica qualquer relação entre as palavras.
    • Duas palavras semelhantes, como “preciso” e “exato”, podem estar codificadas de formas muito diferentes em codificações one-hot.
  • A matriz gerada é de alta dimensionalidade e esparsa, podendo gerar overfitting em um modelo de machine learning.

Bag of words

  • Montamos a lista de palavras únicas no corpus do texto chamada vocabulário.
  • Cada frase ou documento será representado como um vetor com cada palavra representada como 1 para presente e 0 para ausente no vocabulário.
  • Não leva em conta a ordem ou a estrutura das palavras no texto, apenas se ela aparece ou a frequência com que aparece nele.

Bag of words

Vamos imaginar que temos essas três frases:

  • the cat sat
  • the cat sat in the hat
  • the cat with the hat

Bag of words

  1. Determinar o vocabulário: the, cat, sat, in, the, hat, and with.

  2. Contagem

Bag of words

  • Vantagens: fácil de entender e implementar; captura alguma similaridade semântica dos textos; a matriz gerada é menos esparsa.
  • Desvantagens: gera vetores esparsos e de alta dimensionalidade; não captura a relação entre as palavras.

Bag of Words

Term Frequency-Inverse Document Frequency (TF-IDF)

  • Trata-se de medidas estatísticas para medir o quão importante uma palavra é em um documento.
    • Frequência do Termo (TF) = (Número de vezes que o termo t aparece em um documento)/(Número de termos no documento)
    • Frequência Inversa de Documentos (IDF) = log(N/n), onde, N é o número de documentos e n é o número de documentos em que um termo t apareceu.
    • O IDF de uma palavra rara é alto, enquanto o IDF de uma palavra frequente provavelmente será baixa, tendo assim o efeito de destacar palavras que são distintas.

Term Frequency-Inverse Document Frequency (TF-IDF)

Calculamos o valor TF-IDF de um termo como = TF * IDF

  • TF(‘beautiful’, Documento 1) = 2/10, IDF(‘beautiful’) = log(2/2) = 0

  • TF(‘day’, Documento 1) = 5/10, IDF(‘day’) = log(2/1) = 0.30

  • TF-IDF(‘beautiful’, Documento 1) = (2/10)*0 = 0

  • TF-IDF(‘day’, Documento 1) = (5/10)*0.30 = 0.15

Term Frequency-Inverse Document Frequency (TF-IDF)

  • Para o Documento 1, o método TF-IDF penaliza fortemente a palavra ‘beautiful’, mas atribui maior peso a ‘day’.
  • Logo, ‘day’ é uma palavra importante para o Documento 1 no contexto de todo o corpus.

Word embedding

  • Representa palavras em um sistema de coordenadas, onde palavras relacionadas, com base em um corpus de relacionamentos, são colocadas mais próximas umas das outras.
    • O significado de uma palavra está intimamente relacionado às palavras que em geral aparecem junto a ela.

Word embedding

A ideia seria definir as palavras por meio de escalas representando alguma informação sobre elas.

  • P. ex., poderíamos definir a palavra “rainha” com uma escala “Gênero” que vai de -1 a 1: quanto mais perto de -1, mais feminina a palavra, e quanto mais perto de 1, mais masculina.

Word embedding

  • Mas apenas com informação sobre gênero não conseguimos representar bem uma palavra, então poderíamos adicionar mais uma dimensão com uma escala “Realeza”, em que a palavra tem mais a ver com monarca quanto mais perto de 1 e mais a ver com plebeu quanto mais perto de -1.
  • Assim adicionamos cada vez mais dimensões para definir melhor a palavra, construindo um vetor em que cada dimensão serve como uma forma de capturar um tipo de informação sobre o seu significado.

Word embedding

  • Representam as palavras em uma matriz, não na forma de 0s e 1s, mas de vetores contínuos.
  • Podem representar qualquer palavra em poucas dimensões, principalmente com base no número de palavras únicas em nosso texto.
  • São vetores densos e de baixa dimensão.
  • Não são codificados, mas “aprendidos” por meio de dados.

Como obtemos esses embeddings?

  • Fazemos o computador ‘aprendê-los’, isto é, usamos algum algoritmo de machine learning para gerá-los a partir de seu contexto.
  • Escolhemos quantas dimensões o embedding terá e cada dimensão terá uma informação semântica.
    • Escolhemos o tamanho do vetor de acordo com o corpus de treinamento: quanto menor, menos dimensões; mas geralmente é um valor entre 100 e 1000.

Word embedding

O modo mais popular de aprendizado é treinando redes neurais, como é o caso do famoso Word2vec.

Word2vec

  • Família de arquiteturas de modelos e otimizações que podem ser usados para aprender word embeddings de grandes bancos de dados.
  • Toma como entrada um grande corpus de texto e produz um espaço vetorial com cada palavra única sendo atribuída a um vetor correspondente no espaço.
  • Os vetores de palavras são posicionados no espaço vetorial de forma que as palavras que compartilham contextos comuns no corpus estejam localizadas próximas umas das outras no espaço.

Arquitetura do word2vec

  • O word2vec utiliza dois modelos de rede neurais em sua arquitetura, os quais possuem uma camada de entrada, uma camada oculta e uma camada de saída .
    • Skip-Gram: usa uma palavra central para prever um contexto-alvo.
    • Continuous Bag Of Words (CBOW): usa o contexto para prever uma palavra central.

CBOW

Este modelo é utilizado para descobrir a palavra central de uma sentença, baseado nas palavras que a cercam. Vamos imaginar que temos a frase: A dog is chasing a person e queremos descobrir a palavra chasing.

A dog is ____________ a person.

CBOW

Para este exemplo, utilizaremos uma janela de contexto de tamanho 2 para criar o conjunto de treinamento, o que significa que “olharemos” apenas para duas palavras anteriores e duas após a palavra alvo.

Com estes dados, pretendemos “ensinar” ao modelo a predizer uma palavra central, baseada em palavras de contexto.

CBOW

  • O modelo CBOW é formado por uma camada de entrada, que receberá os dados pré-processados, e em sua saída terá uma palavra que representa a maior probabilidade para a palavra alvo.
  • Criado o conjunto de treinamento, a próxima etapa é treinar uma rede neural com uma camada escondida para aprender a matriz embedding (\(E_{v \times d}\)), em que v é o tamanho do vocabulário (número de palavras distintas) e d é o número de dimensões.

CBOW

CBOW

Supondo d = 3:

Cada w representa um peso que será obtido a partir do treinamento da rede neural.

CBOW

  1. Camada de entrada: cada palavra é representada pelo vetor one-hot, sendo as entradas as palavras de contexto preparadas na etapa anterior. Cada palavra (vetor) será multiplicado pela matriz embedding, cujos pesos foram atribuídos inicialmente de forma aleatória.

CBOW

CBOW

  1. Camada escondida: todos os vetores embedded são somados gerando um único vetor na camada escondida. Este vetor será multiplicado por outra matriz e o resultado será alimentado a uma função softmax para obter a probabilidade.

CBOW

  1. Camada escondida: o resultado será um vetor \(y_{1 \times v}\) em que cada valor apresenta a probabilidade da palavra naquela posição ser a palavra central. Este vetor de saída é comparado ao vetor real (palavra que está sendo buscada) e o algoritmo de backpropagation é usado para ajustar os pesos da matriz embedding.

SKIP-GRAM

Este é o segundo modelo utilizado no word2vec, porém aqui ao invés de tentarmos descobrir a palavra central, faremos o processo inverso; da palavra central, tentaremos descobrir as palavras de contexto.

Dada a palavra chasing, qual a probabilidade das palavras a, dog, e person ocorrerem ao redor?

SKIP-GRAM

SKIP-GRAM

  • Camada de entrada: contém apenas o vetor one-hot da palavra central. Este vetor tem dimensão igual ao número de palavras do vocabulário. Este vetor será multiplicado pela matriz embedding e encaminhado à camada escondida.
  • Camada escondida: o vetor é multiplicado por outra matriz embedding e a função softmax é aplicada.
  • Camada de saída: temos diferentes probabilidades, cada uma contendo palavras de contexto possíveis.

SKIP-GRAM

Referências

  • https://medium.com/turing-talks/word-embedding-fazendo-o-computador-entender-o-significado-das-palavras-92fe22745057
  • https://towardsdatascience.com/machine-learning-text-processing-1d5a2d638958
  • http://www.nilc.icmc.usp.br/nilc/download/lematizacao_versus_steming.pdf
  • https://towardsdatascience.com/a-simple-explanation-of-the-bag-of-words-model-b88fc4f4971
  • https://edrone.me/pt/blog/o-que-e-word2vec
  • https://medium.com/@zafaralibagh6/a-simple-word2vec-tutorial-61e64e38a6a1
  • https://medium.com/@everton.tomalok/word2vec-e-sua-import%C3%A2ncia-na-etapa-de-pr%C3%A9-processamento-d0813acfc8ab
  • https://www.coursera.org/lecture/sequence-models-tensorflow-gcp/word2vec-LcfSU
  • https://towardsdatascience.com/word-embeddings-and-the-chamber-of-secrets-lstm-gru-tf-keras-de3f5c21bf16