Mineração de Texto

Prof. Letícia Raposo

UNIRIO

O que é Mineração de Texto?

“O processo de derivar informações de alta qualidade do texto.”

Objetivo Central:

Transformar dados não estruturados (texto livre) em dados estruturados (acionáveis) através de:

  1. Processamento de Linguagem Natural (NLP).
  2. Métodos Analíticos/Estatísticos.

Aplicações Práticas

  • Tradução de Máquina:
    • Ex: Google Tradutor, DeepL.
  • Análise de Sentimento:
    • Classificar polaridade (Positivo/Negativo/Neutro).
  • Filtragem de Spam:
    • Classificação binária de e-mails.
  • Chatbots e QA:
    • Sistemas de perguntas e respostas contextuais.

Etapas: Pré-processamento

Transformação do texto bruto em uma lista de termos limpos.

  1. Limpeza: remover pontuação, números, tags HTML.
  2. Tokenização: dividir o texto em unidades (palavras).
  3. Stopwords: remover conectivos (e, de, o, a).
  4. Normalização: Stemming (radical) ou Lematização (forma canônica).

Exemplo Prático:

“Os dados estão sujos!”

\(\downarrow\) Tokenização & Lowercase ["os", "dados", "estão", "sujos"]

\(\downarrow\) Stopwords ["dados", "sujos"]

\(\downarrow\) Stemming ["dad", "suj"]

Etapas: Vetorização (Feature Extraction)

Como transformar palavras em números para o modelo?

1. Métodos Baseados em Frequência

  • One-hot encoding: Presença/Ausência (binário).
  • Bag of Words (BoW): Contagem simples de ocorrências.
  • TF-IDF: Pondera a relevância do termo no documento vs. no corpus.

2. Métodos Baseados em Predição (Embeddings)

  • Word Embeddings: Vetores densos que capturam contexto semântico (ex: Word2Vec, GloVe).

Aplicação de Machine Learning

Entrada da matriz numérica em algoritmos (Naive Bayes, SVM, Redes Neurais).

Fluxo de Mineração

flowchart LR
  A[Texto Bruto] --> B(Limpeza & Tokenização)
  B --> C{Vetorização}
  C -->|TF-IDF| D[Matriz Esparsa]
  C -->|Embeddings| E[Vetores Densos]
  D & E --> F[Modelo ML]

flowchart LR
  A[Texto Bruto] --> B(Limpeza & Tokenização)
  B --> C{Vetorização}
  C -->|TF-IDF| D[Matriz Esparsa]
  C -->|Embeddings| E[Vetores Densos]
  D & E --> F[Modelo ML]

Pré-processamento do texto

Etapas de Limpeza

Transformações para reduzir o ruído e normalizar o vocabulário.

1. Padronização

  • Lowercasing: converter para minúsculas.
  • Normalização: remover acentos (ASCII) e corrigir alongamentos (ex: “muitoooo”).
  • Expansão: tratar contrações (“tô” \(\rightarrow\) “estou”).

2. Remoção de Ruído

  • Elementos Web: HTML tags, URLs, e-mails.
  • Símbolos: Emojis, hashtags (#), pontuação.
  • Numerais: remover ou substituir por token (ex: “3” \(\rightarrow\) “três”).
  • Espaços: remover espaços duplos/finais.

Exemplo de Limpeza

Visualizando a transformação do dado bruto para o dado limpo:

Texto Bruto (Raw)

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

\(\huge \downarrow\) Aplicação de filtros (Regex, Lowercase, ASCII)

Texto Processado (Clean)

“ola meu nome e leticia e eu amo um chocolatinho”

Nota: Observe a remoção do emoji, acentos e a correção de “aaaamo”.

Tokenização

  • Definição: Processo de segmentar o texto em unidades menores e significativas, chamadas tokens.
  • O que são Tokens?: Geralmente palavras, mas podem ser números, sinais de pontuação ou n-gramas.
  • Como funciona: Algoritmos identificam fronteiras usando delimitadores (espaços em branco, pontuação, quebras de linha).

Essencialmente: transforma uma String única em uma Lista de strings.

Tokenização na Prática

Visualizando a mudança de estrutura de dados:

Entrada (Texto Processado)

“ola meu nome e leticia e eu amo um chocolatinho”


\(\huge \downarrow\) Split por espaço

Saída (Lista de Tokens)

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

Remoção de Stopwords

  • Baixa Densidade Semântica: Palavras que servem para a estrutura gramatical (conectivos), mas carregam pouco significado do tópico central.
  • Redução de Dimensionalidade: Ao remover essas palavras, reduzimos o tamanho do vocabulário e o custo computacional.
  • Categorias Comuns:
    • Artigos (o, a, um);
    • Preposições (de, para, com);
    • Conjunções (e, mas, ou);
    • Pronomes (eu, ele, meu).

Stopwords na Prática

O filtro mantém apenas os substantivos, verbos e adjetivos relevantes.

Lista de Tokens (Entrada)

Lista Final (Saída)

["ola", "nome", "leticia", "amo", "chocolatinho"]

Normalização: Stemming vs. Lematização

Reduzir variações para uma forma base comum.

Stemming

  • Método: Heurístico (corta sufixos).
  • Resultado: Radical (Stem).
  • Pros/Contras: Rápido, mas pode gerar palavras inexistentes.
  • Ex: Amigo, Amiga \(\rightarrow\) Amig

Lematização

  • Método: Morfológico (dicionário).
  • Resultado: Lema (forma canônica).
  • Pros/Contras: Preciso, mas computacionalmente custoso.
  • Ex: Sou, É, Somos \(\rightarrow\) Ser

Erros de Stemming

O algoritmo é agressivo demais ou passivo demais?

  • Overstemming (Cortou demais):
    • Ocorre quando palavras com significados distintos são reduzidas ao mesmo radical.
    • Ex: “Universidade” e “Universo” \(\rightarrow\) Univers (Perde-se a distinção semântica).
  • Understemming (Cortou de menos):
    • Ocorre quando palavras que deveriam ser agrupadas permanecem distintas.
    • Ex: “Datado” e “Dados” \(\rightarrow\) Datad, Dad (Não agrupa o conceito).

Stemming na Prática

Observe que os radicais não precisam ser palavras válidas no dicionário.

Entrada: > ["ola", "nome", "leticia", "amo", "chocolatinho"]


\(\huge \downarrow\)

Saída: "ola" "nom" "letici" "amo" "chocolatinh"

Extração de características

Extração de Características (Vetorização)

“Modelos matemáticos não leem palavras, eles calculam números.”

  • O Desafio: Converter texto (sequência de caracteres) em vetores numéricos (\(\mathbb{R}^n\)).
  • O Espaço Vetorial: Cada documento ou palavra se torna um ponto em um espaço multidimensional.
  • Abordagens:
    1. Contagem/Frequência (One-hot, BoW, TF-IDF).
    2. Predição/Semântica (Embeddings).

One-hot Encoding

Representação binária onde o tamanho do vetor é igual ao tamanho do vocabulário (\(|V|\)).

Exemplo: Vocabulário de 5 palavras.

Token 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
choco… 0 0 0 0 1

Avaliação do One-hot Encoding

Vantagens

  • Simplicidade: Intuitivo e fácil de implementar.
  • Sem viés: Não assume relações prévias entre palavras.

Desvantagens

  • Alta Dimensionalidade: Se o vocabulário tiver 10.000 palavras, cada vetor terá tamanho 10.000.
  • Esparsidade: A vasta maioria dos valores é zero (desperdício de memória).
  • Semântica (Ortogonalidade):
    • vetor(“bom”) \(\cdot\) vetor(“ótimo”) = 0.
    • O modelo não aprende que são sinônimos.

Bag of Words (BoW)

“Imagine jogar todas as palavras de um texto em um saco e misturá-las. Sabemos quais palavras estão lá e quantas vezes aparecem, mas perdemos a ordem original.”

  • Conceito: Representação simplificada baseada na frequência dos termos.
  • Estrutura: O texto se torna um vetor de contagens.
  • Perda de Contexto: A gramática e a ordem das palavras são descartadas (daí o nome “saco de palavras”).

BoW: Construção da Matriz

Corpus de Exemplo: 1. “the cat sat” 2. “the cat sat in the hat” 3. “the cat with the hat”

Vocabulário (\(V\)): {cat, hat, in, sat, the, with}


Doc ID cat hat in sat the with
1 1 0 0 1 1 0
2 1 1 1 1 2 0
3 1 1 0 0 2 1

Limitação Crítica: Perda de Contexto

Como o BoW ignora a ordem, frases com significados opostos podem ter vetores idênticos.

Frase A: > “O filme não é bom, é ruim.”

Frase B: > “O filme não é ruim, é bom.”

Vetor BoW (para ambas):

bom é filme não o ruim
1 2 1 1 1 1

Conclusão

Para o modelo, Frase A e Frase B são exatamente a mesma coisa.

TF-IDF: Definição

Equilibra a frequência local com a raridade global.

\[TF\text{-}IDF = TF(t,d) \times IDF(t)\]

1. Term Frequency (TF)

Importância Local

\[TF = \frac{\text{Qtd do termo } t \text{ no doc}}{\text{Total de termos no doc}}\]

“O quanto a palavra aparece neste texto?”

2. Inverse Doc Frequency (IDF)

Penalidade Global

\[IDF = \log(\frac{N}{n_t})\]

“O termo é raro no corpus inteiro?” \(N\): Total de documentos | \(n_t\): Docs com o termo

Exemplo de Cálculo

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

Resultado e Interpretação

Aplicando a fórmula \(TF \times IDF\) para o Documento 1:

  1. Termo “beautiful”:
    • \(TF = 2/10 = 0.2\)
    • \(IDF = 0\)
    • Score Final: 0 \(\rightarrow\) Irrelevante (muito comum).
  2. Termo “day”:
    • \(TF = 5/10 = 0.5\)
    • \(IDF = 0.30\)
    • Score Final: 0.15 \(\rightarrow\) Relevante (frequente e distintivo).

Conclusão

O TF-IDF anulou a palavra que aparece em todos os documentos (“beautiful”) e destacou a palavra específica deste documento (“day”).

Word Embeddings: O Conceito

“You shall know a word by the company it keeps.” — J.R. Firth (1957)

  • Hipótese Distribucional: Palavras que aparecem nos mesmos contextos tendem a ter significados semelhantes.
  • Representação: Mapeamento de palavras para vetores de números reais (\(\mathbb{R}^d\)).
  • Espaço Latente: As dimensões capturam características semânticas e sintáticas automaticamente.

A Intuição: Dimensões Semânticas

Imagine que cada dimensão do vetor capture um conceito abstrato.

Palavra Dim 1 (Realeza) Dim 2 (Masculinidade) Dim 3 (Idade)
Rei 0.99 0.99 0.70
Rainha 0.99 0.05 0.70
Mulher 0.02 0.01 0.60
Princesa 0.99 0.02 0.20

Álgebra Vetorial e Analogias

Como os vetores preservam relações semânticas, podemos realizar operações aritméticas.

\[\vec{v}_{Rei} - \vec{v}_{Homem} + \vec{v}_{Mulher} \approx \vec{v}_{Rainha}\]

Interpretação Geométrica

Se subtrairmos o vetor de “Masculinidade” da palavra “Rei” e adicionarmos “Feminilidade”, chegamos ao ponto no espaço próximo a “Rainha”.

Embeddings vs. Bag of Words

Por que usar vetores densos?

Bag of Words / TF-IDF

  • Esparsos: Muitos zeros.
  • Alta Dimensionalidade: Tamanho do vocabulário (ex: 20.000).
  • Hardcoded: Baseado em contagem exata.
  • Semântica: Ignora similaridade.

Word Embeddings

  • Densos: Valores contínuos.
  • Baixa Dimensionalidade: Fixo (ex: 50, 300, 768).
  • Aprendidos: Treinamento (Redes Neurais).
  • Semântica: Captura contexto e sinônimos.

Como os Embeddings são Treinados?

“Não rotulamos os dados manualmente. O próprio texto é o rótulo.”

  • Abordagem: Aprendizado por Redes Neurais (Geralmente “Shallow” - rasas).
  • O Hiperparâmetro \(d\):
    • Nós definimos o tamanho do vetor (ex: \(d=300\)).
    • Trade-off: Mais dimensões capturam mais nuances, mas exigem mais dados e poder computacional.
  • O Resultado: Os pesos da camada oculta da rede neural se tornam os nossos vetores (embeddings).

Word2Vec (Mikolov et al., 2013)

Uma família de arquiteturas eficientes para estimar vetores de palavras.

  • Inovação: Transforma texto não estruturado em um espaço vetorial denso.
  • Propriedade: Palavras que compartilham contextos similares ficam próximas no espaço geométrico.
  • Vantagem: Treinamento muito mais rápido que abordagens anteriores (Redes Neurais Profundas), permitindo uso de corpora massivos.

Arquiteturas do Word2Vec

Como a rede formula o problema de predição?

1. CBOW

(Continuous Bag of Words)

  • Lógica: Usa o contexto para prever a palavra central.
  • Input: [O, gato, ___, no, tapete]
  • Target: sentou
  • Uso: Mais rápido, melhor para palavras frequentes.

2. Skip-Gram

(O Inverso)

  • Lógica: Usa a palavra central para prever o contexto.
  • Input: sentou
  • Target: [O, gato, no, tapete]
  • Uso: Mais lento, mas funciona melhor para palavras raras e corpora pequenos.

O “Segredo” da Camada Oculta

Onde estão os embeddings na rede neural?

  • Ao contrário de uma classificação tradicional, não nos importamos com a saída da rede.
  • O objetivo é treinar a rede e depois descartar a saída.
  • O Embedding é a Matriz de Pesos (\(W\)) da camada oculta.

Se temos um vocabulário de 10.000 palavras e queremos 300 dimensões, a matriz de pesos terá tamanho \(10.000 \times 300\). Cada linha é o vetor de uma palavra.

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

A Limitação do Word2Vec: Estático

O Word2Vec gera um dicionário fixo. A palavra “banco” tem sempre o mesmo vetor, não importa a frase.

Frase A: > “Sentei no banco da praça.” (Objeto físico)

Frase B: > “Fui ao banco sacar dinheiro.” (Instituição financeira)

No Word2Vec: \[Vetor(\text{banco}_A) == Vetor(\text{banco}_B)\]

Problema

O modelo “confunde” os significados, pois mistura todos os contextos em um único vetor médio.

BERT (Transformers)

Bidirectional Encoder Representations from Transformers (Google, 2018).

  • Mecanismo de Atenção: O modelo olha para a frase inteira de uma vez, calculando a relação de cada palavra com todas as outras.
  • Contextual: O vetor da palavra muda dependendo de quem está ao lado.
  • Bidirecional: Lê o contexto à esquerda e à direita simultaneamente (profundamente bidirecional).

Embeddings: Estáticos vs. Contextuais

Comparando como os modelos “enxergam” a palavra Manga.

Contexto Word2Vec (Estático) BERT (Dinâmico)
“Chupei uma manga doce.” [0.2, 0.8, ...] [0.9, 0.1, ...]
“A manga da camisa rasgou.” [0.2, 0.8, ...] [-0.5, 0.3, ...]
“A produção de manga caiu.” [0.2, 0.8, ...] [0.8, 0.2, ...]

Conclusão

No BERT, a mesma palavra gera vetores diferentes. Ele entende que “manga” (fruta) está matematicamente distante de “manga” (roupa).

Treinamento: Masked Language Model (MLM)

O BERT não tenta prever a próxima palavra (como no autocompletar do celular). Ele tenta preencher lacunas no meio da frase.

A Tarefa: 1. Ocultamos aleatoriamente 15% das palavras ([MASK]). 2. O modelo deve adivinhar a palavra escondida com base em todo o resto.

“O [MASK] latiu para o carteiro.”

  • O modelo aprende que “cachorro” cabe ali não apenas porque vem depois de “O”, mas porque “latiu” e “carteiro” aparecem na frase.
  • Isso força o aprendizado de sintaxe e semântica profunda.

Treinamento: Next Sentence Prediction (NSP)

O BERT também aprende a entender se uma frase faz sentido logo após a outra.

Entrada: Par de frases (A, B). Pergunta: B é a continuação lógica de A?

Par Positivo (IsNext):

    • A: “O homem foi à loja.”
    • B: “Ele comprou leite.”

Par Negativo (NotNext):

    • A: “O homem foi à loja.”
    • B: “Pinguins voam baixo.”

Isso é fundamental para tarefas como Question Answering (Perguntas e Respostas).

Referências Bibliográficas

  • JURAFSKY, D.; MARTIN, J. H. Speech and Language Processing. 3. ed. draft. Stanford University, 2023.
  • SILGE, J.; ROBINSON, D. Text Mining with R: A Tidy Approach. O’Reilly Media, 2017.
  • MIKOLOV, T. et al. Efficient Estimation of Word Representations in Vector Space (Word2Vec). arXiv:1301.3781, 2013.
  • DEVLIN, J. et al. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv:1810.04805, 2018.
  • VASWANI, A. et al. Attention Is All You Need. NeurIPS, 2017.