Modelos de linguagem semântica
Observação
Consulte a guia Texto e imagens para obter mais detalhes!
À medida que o estado da arte da PNL avançou, a capacidade de treinar modelos que encapsulam a relação semântica entre tokens levou ao surgimento de poderosos modelos de linguagem de aprendizagem profunda. No centro desses modelos está a codificação de tokens de linguagem como vetores (matrizes de números de vários valores) conhecidas como incorporações .
Esta abordagem baseada em vetores para modelar texto tornou-se comum em técnicas como Word2Vec e GloVe, nas quais os tokens de texto são representados como vetores densos com múltiplas dimensões. Durante o treino do modelo, os valores das dimensões são atribuídos para refletir as características semânticas de cada token com base na sua utilização no texto de treino. As relações matemáticas entre os vetores podem então ser exploradas para realizar tarefas comuns de análise de texto de forma mais eficiente do que as técnicas puramente estatísticas mais antigas. Um avanço mais recente nesta abordagem é usar uma técnica chamada atenção para considerar cada token no contexto e calcular a influência dos tokens à sua volta. Os embeddings contextualizados resultantes, como os encontrados na família de modelos GPT, constituem a base da IA generativa moderna.
Representação do texto como vetores
Os vetores representam pontos no espaço multidimensional, definidos por coordenadas ao longo de múltiplos eixos. Cada vetor descreve uma direção e distância da origem. Tokens semanticamente semelhantes devem resultar em vetores com orientação semelhante – ou seja, apontam em direções semelhantes.
Por exemplo, considere as seguintes representações tridimensionais para algumas palavras comuns:
| Palavra | Vector |
|---|---|
dog |
[0.8, 0.6, 0.1] |
puppy |
[0.9, 0.7, 0.4] |
cat |
[0.7, 0.5, 0.2] |
kitten |
[0.8, 0.6, 0.5] |
young |
[0.1, 0.1, 0.3] |
ball |
[0.3, 0.9, 0.1] |
tree |
[0.2, 0.1, 0.9] |
Podemos visualizar estes vetores no espaço tridimensional, como mostrado aqui:
Os vetores para "dog" e "cat" são semelhantes (ambos animais domésticos), tal como são "puppy" e "kitten" (ambos animais jovens). As palavras "tree", "young", e ball" têm orientações vetoriais distintamente diferentes, refletindo os seus distintos significados semânticos.
A característica semântica codificada nos vetores permite usar operações baseadas em vetores que comparam palavras e possibilitam comparações analíticas.
Encontrar termos relacionados
Como a orientação dos vetores é determinada pelos seus valores de dimensão, palavras com significados semânticos semelhantes tendem a ter orientações semelhantes. Isto significa que pode usar cálculos como a similaridade cosseno entre vetores para fazer comparações significativas.
Por exemplo, para determinar o "diferente" entre "dog", "cat" e "tree", pode-se calcular a similaridade do cosseno entre pares de vetores. A similaridade cosseno é calculada da seguinte forma:
cosine_similarity(A, B) = (A · B) / (||A|| * ||B||)
Onde A · B é o produto escalar e ||A|| é a magnitude do vetor A.
Calculando semelhanças entre as três palavras:
dog[0.8, 0.6, 0.1] ecat[0.7, 0.5, 0.2]:- Produto escalar: (0,8 × 0,7) + (0,6 × 0,5) + (0,1 × 0,2) = 0,56 + 0,30 + 0,02 = 0,88
- Magnitude de
dog: √(0,8² + 0,6² + 0,1²) = √(0,64 + 0,36 + 0,01) = √1,01 ≈ 1,005 - Magnitude de
cat: √(0,7² + 0,5² + 0,2²) = √(0,49 + 0,25 + 0,04) = √0,78 ≈ 0,883 - Similaridade do cosseno: 0,88 / (1,005 × 0,883) ≈ 0,992 (alta semelhança)
dog[0.8, 0.6, 0.1] etree[0.2, 0.1, 0.9]:- Produto escalar: (0,8 × 0,2) + (0,6 × 0,1) + (0,1 × 0,9) = 0,16 + 0,06 + 0,09 = 0,31
- Magnitude de
tree: √(0,2² + 0,1² + 0,9²) = √(0,04 + 0,01 + 0,81) = √0,86 ≈ 0,927 - Similaridade cosseno: 0,31 / (1,005 × 0,927) ≈ 0,333 (baixa similaridade)
cat[0.7, 0.5, 0.2] etree[0.2, 0.1, 0.9]:- Produto escalar: (0,7 × 0,2) + (0,5 × 0,1) + (0,2 × 0,9) = 0,14 + 0,05 + 0,18 = 0,37
- Similaridade do cosseno: 0,37 / (0,883 × 0,927) ≈ 0,452 (baixa similaridade)
Os resultados mostram que "dog" e "cat" são altamente semelhantes (0,992), enquanto "tree" têm menor semelhança com ambos "dog" (0,333) e "cat" (0,452). Portanto, tree é claramente o elemento estranho.
Translação vetorial através da adição e subtração
Pode adicionar ou subtrair vetores para produzir novos resultados baseados em vetores; que podem então ser usados para encontrar tokens com vetores correspondentes. Esta técnica permite que a lógica intuitiva baseada em aritmética determine termos apropriados com base em relações linguísticas.
Por exemplo, usando os vetores anteriores:
-
dog+young= [0,8, 0,6, 0,1] + [0,1, 0,1, 0,3] = [0,9, 0,7, 0,4] =puppy -
cat+young= [0,7, 0,5, 0,2] + [0,1, 0,1, 0,3] = [0,8, 0,6, 0,5] =kitten
Estas operações funcionam porque o vetor para "young" codifica a transformação semântica de um animal adulto para a sua contraparte jovem.
Observação
Na prática, a aritmética vetorial raramente produz correspondências exatas; em vez disso, procuraria a palavra cujo vetor é mais próximo (mais semelhante) do resultado.
A aritmética também funciona ao contrário:
-
puppy-young= [0,9, 0,7, 0,4] - [0,1, 0,1, 0,3] = [0,8, 0,6, 0,1] =dog -
kitten-young= [0.8, 0.6, 0.5] - [0.1, 0.1, 0.3] = [0.7, 0.5, 0.2] =cat
Raciocínio analógico
A aritmética vetorial também pode responder a perguntas de analogia como "puppy é a dog como kitten é a ?"
Para resolver isto, calcule: kitten - puppy + dog
- [0.8, 0.6, 0.5] - [0.9, 0.7, 0.4] + [0.8, 0.6, 0.1]
- = [-0,1, -0,1, 0,1] + [0,8, 0,6, 0,1]
- = [0,7, 0,5, 0,2]
- =
cat
Estes exemplos demonstram como as operações vetoriais podem captar relações linguísticas e permitir o raciocínio sobre padrões semânticos.
Utilização de modelos semânticos para análise de texto
Modelos semânticos baseados em vetores oferecem capacidades poderosas para muitas tarefas comuns de análise de texto.
Sumarização de texto
Os embeddings semânticos permitem a sumarização extrativa ao identificar frases com vetores que são mais representativos do documento global. Ao codificar cada frase como um vetor (frequentemente fazendo a média ou agrupando os embeddings das suas palavras constituintes), pode calcular quais as frases que são mais centrais para o significado do documento. Estas frases centrais podem ser extraídas para formar um resumo que capte os temas-chave.
Extração de palavras-chave
A similaridade vetorial pode identificar os termos mais importantes num documento comparando a incorporação de cada palavra com a representação semântica global do documento. Palavras cujos vetores são mais semelhantes ao vetor do documento, ou mais centrais quando se consideram todos os vetores de palavras do documento, são provavelmente termos-chave que representam os temas principais.
Reconhecimento de entidade nomeada
Os modelos semânticos podem ser ajustados para reconhecer entidades nomeadas (pessoas, organizações, localizações, etc.) aprendendo representações vetoriais que agrupam tipos de entidades semelhantes. Durante a inferência, o modelo examina a incorporação de cada token e o seu contexto para determinar se representa uma entidade nomeada e, em caso afirmativo, que tipo.
Classificação de textos
Para tarefas como análise de sentimento ou categorização de tópicos, os documentos podem ser representados como vetores agregados (como a média de todas as incorporações de palavras no documento). Estes vetores de documentos podem então ser usados como funcionalidades para classificadores de aprendizagem automática, ou comparados diretamente com vetores protótipo de classe para atribuir categorias. Como documentos semanticamente semelhantes têm orientações vetoriais semelhantes, esta abordagem agrupa efetivamente conteúdos relacionados e distingue diferentes categorias.