Processamento de Linguagem Natural
Modelos de Linguagem
Edital Nº 027/2026
Yuri Cossich Lavinas
Maître de Conférences - professor (adjunto/associado/sem HDR) · IRIT/Université Toulouse Capitole, França
Modelo?
- Um modelo é uma simplificação de um fenômeno complexo
- Em linguagem natural (humana: texto):
- Representa padrões léxicos, sintáticos e semânticos
- Prediz palavras a partir do contexto
- Gerar texto automaticamente
- Capturar padrões linguísticos
"Vamos completar a próxima ___ (→ palavra)"
Base de chatbots e LLMs modernos
Como escolhar a próxima palavra?
Qual sequência você escolheria?
Modelos de Linguagem Probabilísticos
- Assume uma probabilidade associada à existência de uma sequência de palavras \(p_{1:i}\)
- Usando a regra da cadeia da probabilidade:
\( \begin{aligned} P(p_{1:i}) = {} & P(p_1)P(p_2 | p_1)P(p_3 | p_{1:2}) \dots P(p_i | p_{1:i-1})\end{aligned} \)
- Problemas?
- Multiplicações de valores pequenos podem zerar o resultado
\(\begin{aligned}
\log P(p_{1:i}) = {} & \\
& \log P(p_1) + \log P(p_2 | p_1) + \log P(p_3 | p_{1:2}) + \\
& + \dots + \log P(p_i | p_{1:i-1})
\end{aligned} \tag{1.2}\)
- Probabilidade condicional - completar uma frase com uma palavra dado que outras palavras vieram antes:
\(P(p_i | p_1, \dots, p_{i-1})\tag{1.3}\)
\( P(palavra|Vamos, completar, o, texto, com, a, próxima)\)
Maldição da dimensionalidade
- Modelar a distribuição conjunta de 10 palavras com um vocabulário de 380.000 palavras
(https://www.academia.org.br/nossa-lingua/vocabulario-ortografico)
gera 380.000 \(^{10}-1\) parâmetros = \(627,821,185^{55} - 1\)
- Suposição de Markov para simplificar problema computacional:
apenas o passado mais recente é importante para o futuro
\(P(p_i|p_{1..i-1}) \approx P(p_i|p_{i-1})\)
- Unigrama → 1 palavra: \( P(palavra|próxima) \)
- Bigrama → 2 palavras: \( P(palavra|a,próxima) \)
- Trigrama → 3 palavras: \( P(palavra|com,a,próxima) \)
- n - grama
- Dependências longas:
- mais fácil de predizer
- mais rara será a sua aparição no corpora
- em geral n é no máximo 5
Estimando as probabilidades a partir de corpora
- Utilizar um conjunto de textos:
- quanto maior e mais diverso - mais chance de conter muitas sequências diferentes
- e mais demorado é o processamento
- Estimar a probabilidade: contar palavras.
Para um bigrama:
\(P(p_i | p_{i-1}) = \frac{c(p_{i-1}, p_i)}{c(p_{i-1})}\)
- onde \( c(p_{i-1}) \): quantas vezes \(p_{i-1}\) aparece antes de \(p_i\)
- onde \( c(p_{i}) \) : quantas vezes \(p_{i-1}\) aparece no texto
- Para um 3-grama:
\(P(p_i | p_{i-1}, p_{i-2}) = \frac{c(p_{i-2}, p_{i-1}, p_i)}{c(p_{i-2}, p_{i-1})}\)
Exercício 1 — Probabilidade unigrama
Corpus: "o gato dorme o gato come o rato"
- Conte, \(C(p)\), as ocorrências de cada palavra/token.
- Calcule a probabilidade \(P(p) = C(p) / T\), onde T = total de tokens.
- Qual é P("gato") no corpus?
| Token |
C(p) |
P(p) |
| o |
3 |
3/8 = 0,375 |
| gato |
2 |
2/8 = 0,250 |
| dorme |
1 |
1/8 = 0,125 |
| come |
1 |
1/8 = 0,125 |
| rato |
1 |
1/8 = 0,125 |
Estimar sequências maiores
- Ao utilizar n-gramas
- Dependem de sequências vistas no treinamento
- Têm dificuldade com frases novas
- Redes neurais aprendem uma função que estima probabilidades da linguagem
- Aprendizado de padrões complexos e palavras fora do corpus
- Aprendem padrões automaticamente
- Substituir contagem por aprendizado
- Generalizam melhor
- Podem prever sequências novas
- Utiliza embeddings - podem ser dinâmicos
Rede Neural para modelos de linguagem
Usar função exponencial normalizada (softmax) para estimar probabilidades:
\[ \sigma(\mathbf{z})_j = \frac{e^{z_j}}{\sum_{k=1}^{K} e^{z_k}}, \quad j = 1, \ldots, K \]
Embeddings
- Construir um vetor denso para cada palavra, dado um contexto
- Pode ser diferentes para um mesmo token: "manga"
- Semântica de token próximas, vetores no espaço vetorial próximos.
Embeddings - word2vec
Vetores de palavras - treinamento
- Ajustar gradualmente os parâmetros para minimizar a função
- Otimizar esses parâmetros seguindo o gradiente
- Calcular todos os gradientes vetoriais
- O gradiente descendente é um algoritmo para minimizar \((\mathcal{J}, \theta)\):
- Ideia: para o valor atual de \(\ \theta\), calcular o gradiente de \((\mathcal{J}, \theta)\) e, em seguida, dar um pequeno passo na direção do gradiente negativo.
- Repetir.
Redes Neurais Recorrentes (RNN)
- Podem processar sequências de qualquer comprimento
- A computação no passo \(t\) pode, em teoria, usar informação de muitos passos anteriores
- O tamanho do modelo não aumenta com tamanho da entrada
Treinando um Modelo de Linguagem com RNN
- Obter um grande corpus de texto — sequência de palavras x(1), …, x(T)
- Para cada sentença (ou uma sequência: mini-batch):
- Alimentar a RNN e computar a distribuição de saída ŷ(t) para cada passo t
- Ou seja: prever a distribuição de probabilidade de cada palavra, dado o contexto anterior
- Calcular a entropia cruzada média entre a palabvra prevista \(\hat{y}\) e a próxima palavra verdadeira \(x_{t+1}\):
\(
J(\theta) = \frac{1}{T} \sum_{t=1}^{T} J^{(t)}(\theta)
= \frac{1}{T} \sum_{t=1}^{T} - \log \hat{y}^{(t)}_{x_{t+1}}
\)
Geração de texto com RNN
-
Assim como em um modelo de linguagem n-grama, uma RNN pode ser usada para gerar texto por amostragem repetida.
-
A saída gerada em um passo é usada como entrada no próximo passo.
-
Esse processo se repete sequencialmente, construindo o texto palavra por palavra.
Tradução de texto
- 2016: Google Translate usa tradução por redes neurais
- Modelo sequence-to-sequence (seq2seq): arquitetura Encoder-Decoder
- Encoder RNN: modelo que representa a sentença de entrada
- Vetor de contexto: representa toda a sentença de origem
- Decoder RNN: é outro modelo de conectada à saída do encoder
- Gera a sentença de saída passo a passo
Generative Pre-trained Transformer (GPT)
- Os GPTs fazem parte da família dos LLMs (Large Language Models)
- Eles se baseiam em transformers pré-treinados em conjuntos de dados gigantescos
- O princípio consiste em gerar a próxima palavra em uma sequência, estimando a distribuição das possíveis palavras seguintes
- A próxima palavra é escolhida por amostragem dessa distribuição
- O mecanismo de atenção é o elemento determinante dos transformers
Atenção
- Scores de atenção:
- produto escalar para calcular os scores de atenção
- softmax para transformar os scores em uma distribuição de probabilidade
- Saída da atenção: contém informações dos estados ocultos que receberam maior atenção.
- Uso no decoder: concatenar a saída da atenção com a saída própria
Transformers
- O decodificador (decoder) é uma pilha de blocos
- Cada bloco consiste em:
- Embeddings
- Atenção
- Soma e normalização
- Feed-forward
- linear e softmax
- O encoder é similar ao decodificador
Perguntas para discussão
Como humanos conseguem prever palavras?
Um modelo “entende” linguagem?
Referências:
- Chris Manning, CS224N, Natural Language Processing with Deep Learning - https://web.stanford.edu/class/cs224n/
- https://web.stanford.edu/class/cs224n/slides_w26/cs224n-2026-lecture05-transformers.pdf
- Caseli, H.M.; Nunes, M.G.V. (org.) Processamento de Linguagem Natural: Conceitos, Técnicas e Aplicações em Português. 4 ed. BPLN, 2026. v. 2. ISBN 978-65-02-00158-5. Disponível em: https://brasileiraspln.ufscar.br/livro-pln-4ed-vol2.
Exercício 2 - reforço individual
Corpus: "o gato dorme"; "o gato come"
Complete a tabela de bigramas:
| Bigrama |
C(bigrama) |
C(\(p_i\)) |
P(\(p_2\)|\(p_1\)) |
| <s> → o |
2 |
2 |
2/2 = 1,00 |
| o → gato |
2 |
2 |
2/2 = 1,00 |
| gato → dorme |
___ |
___ |
___ |
| gato → come |
___ |
___ |
___ |
| dorme → </s> |
___ |
___ |
___ |
| come → </s> |
___ |
___ |
___ |